talal alsharaa
talal alsharaa

Reputation: 29

c programming language : the app wont stop after typing x

i made this program and its working just how i want but it should stop when i type x but it doesn't can any one tell me why? and if there is any shortcut or smaller way to type this code? thanks in advance.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int meat[6];
    int i;
    int total =0;
    int avg;
    char what[20];
    char end;
    int days = 0;
    char food[20];
    char drink[20];
    printf("what thing do u want to calculate the average of?(food/drink)\n");
    scanf(" %s", &what);
    if(strcmp(what, "food")==0)
    {
        printf("what sort of food did u ate ?\n");
        scanf(" %s", food);
    }
    if(strcmp(what, "drink")==0)
    {
        printf("what sort of drink did u drank ?\n");
        scanf(" %s", drink);
    }
    for(i=0; i<6; i++)        
    {
        days++;
        if(strcmp(what, "food")==0) 
        {
            printf("how many %s did u ate in day %d\n", food, i+1);
        }
        else if(strcmp(what, "drink")==0)
        {
            printf("how many liters of %s did u drank in day %d\n", drink, i+1);
        }
        scanf(" %d", &meat[i]);
        total += meat[i];
        printf("if u want to continue type y\n");

        printf("type x if u want to finish\n");
        scanf(" %c", &end);
        if((end = 'y')&&(i<5))
        {
            continue;
        }
        else if(end = 'x' && strcmp(what, "drink")==0)
        {
            avg = total / days;
            printf("\nyour average amount of liters of %s you had %d\t the total is %d\n", drink, avg, total);
        }
        else if(end = 'x' && strcmp(what, "food")==0)
        {
            avg = total / days;
            printf("\nyour average amount of %s you had %d\t the total is %d\n", food, avg, total);
        }
        break;
    }
    if(strcmp(what, food)==0)
    {        
        printf("\nyour average amount of %s you had is %d\t the total is %d\n", food, avg, total);
    }
    else if(strcmp(what, drink)==0)
    {        
        printf("\nyour average amount of liters of %s you had is %d\t the total is %d\n", drink, avg, total);
    }

    return 0;
}

Upvotes: 0

Views: 56

Answers (1)

Ryan J
Ryan J

Reputation: 8323

else if(end = 'x' ...

should be:

else if(end == 'x' ...

You use == to test equality in if statements. You've got this in a couple places in your code, which is inadvertently performing an assignment, not what you want to achieve by comparing if user input is equal to a particular character.

Replace the = with == here:

else if(end = 'x' && strcmp(what, "drink")==0)

here:

else if(end = 'x' && strcmp(what, "food")==0)

and here:

if((end = 'y')&&(i<5))

Upvotes: 1

Related Questions