Thread overview
no print function output do while
Sep 28, 2017
dark777
Sep 28, 2017
Ali Çehreli
Sep 28, 2017
dark777
Sep 28, 2017
Ali Çehreli
Sep 28, 2017
arturg
Sep 28, 2017
dark777
September 28, 2017
no print function output do while

in my program after entering the data and select the function that will print on the screen the same is not printing ..

and if I choose 'q' or 'Q' does the program not close what is happening?
should not it work just like in C ++?

https://pastebin.com/iiMVPk4x
September 28, 2017
On 09/28/2017 08:13 AM, dark777 wrote:
> no print function output do while
> 
> in my program after entering the data and select the function that will print on the screen the same is not printing ..
> 
> and if I choose 'q' or 'Q' does the program not close what is happening?
> should not it work just like in C ++?
> 
> https://pastebin.com/iiMVPk4x

You made a simple logic error. Change the following || to &&:

    }while(choice != 'q' || choice != 'Q');

Ali
September 28, 2017
On Thursday, 28 September 2017 at 18:46:56 UTC, Ali Çehreli wrote:
> On 09/28/2017 08:13 AM, dark777 wrote:
>> no print function output do while
>> 
>> in my program after entering the data and select the function that will print on the screen the same is not printing ..
>> 
>> and if I choose 'q' or 'Q' does the program not close what is happening?
>> should not it work just like in C ++?
>> 
>> https://pastebin.com/iiMVPk4x
>
> You made a simple logic error. Change the following || to &&:
>
>     }while(choice != 'q' || choice != 'Q');
>
> Ali

I think it should not give this error

good but until now I do not understand why after I enter with data in the function add_human

the same is not printed when I choose the 'p' or 'P' option in the case

void print_list(Human[] human_list)
{
 foreach(human; human_list)
   {
    writefln("\nNome: %s",human.name);
    writefln("Peso: %0.2f",human.peso);
    writefln("Idade: %d\n",human.age);
   }
}
September 28, 2017
On 09/28/2017 12:18 PM, dark777 wrote:
> On Thursday, 28 September 2017 at 18:46:56 UTC, Ali Çehreli wrote:
>> On 09/28/2017 08:13 AM, dark777 wrote:
>>> no print function output do while
>>>
>>> in my program after entering the data and select the function that will print on the screen the same is not printing ..
>>>
>>> and if I choose 'q' or 'Q' does the program not close what is happening?
>>> should not it work just like in C ++?
>>>
>>> https://pastebin.com/iiMVPk4x
>>
>> You made a simple logic error. Change the following || to &&:
>>
>>     }while(choice != 'q' || choice != 'Q');
>>
>> Ali
> 
> I think it should not give this error
> 
> good but until now I do not understand why after I enter with data in the function add_human
> 
> the same is not printed when I choose the 'p' or 'P' option in the case
> 
> void print_list(Human[] human_list)
> {
>   foreach(human; human_list)
>     {
>      writefln("\nNome: %s",human.name);
>      writefln("Peso: %0.2f",human.peso);
>      writefln("Idade: %d\n",human.age);
>     }
> }

It's because add_human is appending to its own array. Change it to by-ref:

void add_human(ref Human[] human_list)

Ali
September 28, 2017
On Thursday, 28 September 2017 at 20:17:24 UTC, Ali Çehreli wrote:
> On 09/28/2017 12:18 PM, dark777 wrote:
>> On Thursday, 28 September 2017 at 18:46:56 UTC, Ali Çehreli wrote:
>>> On 09/28/2017 08:13 AM, dark777 wrote:
>>>> no print function output do while
>>>>
>>>> in my program after entering the data and select the function that will print on the screen the same is not printing ..
>>>>
>>>> and if I choose 'q' or 'Q' does the program not close what is happening?
>>>> should not it work just like in C ++?
>>>>
>>>> https://pastebin.com/iiMVPk4x
>>>
>>> You made a simple logic error. Change the following || to &&:
>>>
>>>     }while(choice != 'q' || choice != 'Q');
>>>
>>> Ali
>> 
>> I think it should not give this error
>> 
>> good but until now I do not understand why after I enter with data in the function add_human
>> 
>> the same is not printed when I choose the 'p' or 'P' option in the case
>> 
>> void print_list(Human[] human_list)
>> {
>>   foreach(human; human_list)
>>     {
>>      writefln("\nNome: %s",human.name);
>>      writefln("Peso: %0.2f",human.peso);
>>      writefln("Idade: %d\n",human.age);
>>     }
>> }
>
> It's because add_human is appending to its own array. Change it to by-ref:
>
> void add_human(ref Human[] human_list)
>
> Ali

while(choice != 'q' || choice != 'Q');
doesn't seem to exit the loop, while this works:
while(choice != 'q');
or
while(!(choice == 'q' || choice == 'Q'));

wouldn't it be better to use a labeled statement instead?

endless : while(true)
{
    ...

    switch(choice)
    {
        ...

        case 'Q':
        case 'q': break endless;

        ...
    }
}
September 28, 2017
On Thursday, 28 September 2017 at 21:34:46 UTC, arturg wrote:
> On Thursday, 28 September 2017 at 20:17:24 UTC, Ali Çehreli wrote:
>> On 09/28/2017 12:18 PM, dark777 wrote:
>>> On Thursday, 28 September 2017 at 18:46:56 UTC, Ali Çehreli wrote:
>>>> On 09/28/2017 08:13 AM, dark777 wrote:
>>>>> no print function output do while
>>>>>
>>>>> in my program after entering the data and select the function that will print on the screen the same is not printing ..
>>>>>
>>>>> and if I choose 'q' or 'Q' does the program not close what is happening?
>>>>> should not it work just like in C ++?
>>>>>
>>>>> https://pastebin.com/iiMVPk4x
>>>>
>>>> You made a simple logic error. Change the following || to &&:
>>>>
>>>>     }while(choice != 'q' || choice != 'Q');
>>>>
>>>> Ali
>>> 
>>> I think it should not give this error
>>> 
>>> good but until now I do not understand why after I enter with data in the function add_human
>>> 
>>> the same is not printed when I choose the 'p' or 'P' option in the case
>>> 
>>> void print_list(Human[] human_list)
>>> {
>>>   foreach(human; human_list)
>>>     {
>>>      writefln("\nNome: %s",human.name);
>>>      writefln("Peso: %0.2f",human.peso);
>>>      writefln("Idade: %d\n",human.age);
>>>     }
>>> }
>>
>> It's because add_human is appending to its own array. Change it to by-ref:
>>
>> void add_human(ref Human[] human_list)
>>
>> Ali
>
> while(choice != 'q' || choice != 'Q');
> doesn't seem to exit the loop, while this works:
> while(choice != 'q');
> or
> while(!(choice == 'q' || choice == 'Q'));
>
> wouldn't it be better to use a labeled statement instead?
>
> endless : while(true)
> {
>     ...
>
>     switch(choice)
>     {
>         ...
>
>         case 'Q':
>         case 'q': break endless;
>
>         ...
>     }
> }

It's good that it worked out here.