2013-09-22 5 views
0

Я пытаюсь запустить следующую программу, но он продолжает давать мне ошибки в конце ... кажется, что я забыл закрыть цикл или так .. если кто-то может помогите мне, что было бы здорово !!ошибка; ожидаемое выражение перед 'else'

#include <stdio.h> 
#include <math.h> 

main() { 

//variables 
int user_selection, count_donate=0, count_invest=0; 
float balance_of_fund, donate_amt, invest_amt; 

//input 
printf("Welcome!\n"); 
printf("What is the initial balance of the fund?\n"); 
scanf("%f", balance_of_fund); 

//provide user with options 
printf("What would you like to do?\n 1 - Make a donation\n 2 - Make an investment\n 3 -   
Print balance of fund\n 4 - Quit\n"); 


//work with user selectiom 
scanf ("%d", user_selection); 

if (user_selection > 0 && user_selection < 4) { 

     //ask for donation amount 
     for (user_selection = 1; user_selection<=1; user_selection++) { 
        printf("How much would you like to donate?\n"); 
        scanf("%f", donate_amt); 
        balance_of_fund = balance_of_fund + donate_amt; 
        count_donate++; 
     } 

     //ask for investment amount 
     for (user_selection = 2; user_selection<=2; user_selection++) { 
        printf("How much would you like to invest?\n"); 
        scanf ("%f", invest_amt); 
        balance_of_fund = balance_of_fund - invest_amt; 
        count_invest++; 
     } 

     //print out final balance for selection 3 
     for (user_selection = 3; user_selection<=3; user_selection++) { 
        printf("The final balance is $%.2f.", balance_of_fund); 
     printf("There were %d donations and %d investments.",count_donate,    count_invest); 
     } 

     //Quit for selection 4 
     else if (user_selection = 4) { 
        printf("The final balance is $%.2f." ,balance_of_fund); 
     } 

else { 
     printf("Please make a valid selection"); 
    } 
return 0; 

если у вас есть какие-либо предложения, пожалуйста, дайте мне знать .. на данный момент я не уверен, что я делаю неправильно

+1

Это не действует C++ в любом случае. Он нужен 'int main'. И я думаю, что вы ищете, это переключатель. – chris

+0

Почему вы используете for-loops вместо простых if-statements (и да, переключатель будет еще лучше)? – Dukeling

+0

причина, по которой im использует for-loops, потому что это было специально запрошено в этом согласии. – user2803386

ответ

2

Ваш первый else не if для него. Это один

//Quit for selection 4 
    else if (user_selection = 4) { 

Кроме того, как отметил @Yu Хао в комментарии, оператор сравнения равенства в C++ является ==, не =.

Идея предыдущих циклов for также ускользает от меня. Вы действительно понимаете, что делает заявление for? Я сильно подозреваю, что вы этого не делаете.

Если добавить } до этого else, она должна правильно сбалансировать if «с и else» S в вашем коде, но он по-прежнему не будет делать те for «s сделать что-нибудь значимое.

+0

Также '=' должно быть '=='. –

0

Это структура кода вы предоставили:

if (...) { 
    for (...) { 
     ... 
    } 
    // there is no if preceding else on the next line 
    else if (...) { 
     ... 
    } 
// missing }, scope of the first if is not closed properly 
else { 
    ... 
} 

Также эта линия:

for (user_selection = 1; user_selection<=1; user_selection++) { 

делает петлю совершенно бесполезно, т.е. он такой же, как не было бы никакой цикл , только другая область:

{ 
0

Вам не хватает закрывающей скобки «}» для тех, e else if и комментарий «Quit for selection 4».

0

использование switch случае вместо этого для выбора пользователя

switch(user_selection) 
{ 
case 1: 
//do something i.e. make donation 
case 2: 
//do something 
. 
. 
. 
default: 
} 

EDIT: Попробуйте следующий код. Единственное, что я добавил, это }, который вы пропустили, и «&» перед %d и %f.

#include <stdio.h> 
#include <math.h> 

main() 
{ 
     //variables 
     int user_selection, count_donate=0, count_invest=0; 
     float balance_of_fund, donate_amt, invest_amt; 

     //input 
     printf("Welcome!\n"); 
     printf("What is the initial balance of the fund?\n"); 
     scanf("%f",&balance_of_fund); 

     //provide user with options 
     printf("What would you like to do?\n 1 - Make a donation\n 2 - Make an investment\n 3 -Print balance of fund\n 4 - Quit\n"); 


     //work with user selectiom 
     scanf ("%d",&user_selection); 

     if (user_selection > 0 && user_selection < 4) 
     { 

        //ask for donation amount 
        for (user_selection = 1; user_selection<=1; user_selection++) 
        { 
           printf("How much would you like to donate?\n"); 
           scanf("%f",&donate_amt); 
           balance_of_fund = balance_of_fund + donate_amt; 
           count_donate++; 
        } 

       //ask for investment amount 
        for(user_selection = 2; user_selection<=2; user_selection++) 
        { 
           printf("How much would you like to invest?\n"); 
           scanf ("%f",&invest_amt); 
           balance_of_fund = balance_of_fund - invest_amt; 
           count_invest++; 
        } 

        //print out final balance for selection 3 
        for (user_selection = 3; user_selection<=3; user_selection++) 
        { 
           printf("The final balance is $%.2f.", balance_of_fund); 
           printf("There were %d donations and %d investments.",count_donate,count_invest); 
        } 
     } 
    //Quit for selection 4 
     else if (user_selection == 4) 
     { 
       printf("The final balance is $%.2f.",balance_of_fund); 
     } 
     else 
     { 
        printf("Please make a valid selection"); 
     } 
     return 0; 

}

+0

Я согласен, однако они ожидают, что я буду использовать for-loops для этого задания – user2803386

+0

, вы должны были упомянуть, что ясно в вопросе –

+0

снова проверьте ответ. Я отредактировал и в следующий раз, когда вы отправляете какие-либо вопросы, обязательно включите ошибки. –

Смежные вопросы