2015-11-05 3 views
0
int main() 
{ 
    float S = 7.5, R = 5.85, D = 5.95, liters, price; 
    char answer; 
    printf("Choose one of the following fuels or X to quit:\nS - gas 98 \nR - gas 95\nD - diesel fuel\n"); 
    scanf("%c", &answer); 
    switch (answer) 
    { 
     case 'S': case 's': 
      printf("You selected to fuel with gas 98\n"); 
      break; 
     case 'R': case 'r': 
      printf("You selected to fuel with gas 95\n"); 
      break; 
     case 'D': case 'd': 
      printf("You selected to fuel with disel fuel\n"); 
      break; 
     case 'X': case 'x': 
      printf("Thank you.\n"); 
      break; 
} 
    printf("The price list is:\ngas98 - 7.5 NIS\ngas98 - 5.85 NIS\ndiesel - 5.95 NIS\n"); 
    printf("How much liters would you like to fuel?\n"); 
    scanf("%f", &liters); 
    price = answer * liters; 
    printf("You choose to fuel %0.0f\nThe price is:%0.0f\n", liters, price); 
    return 0; 
} 

Привет, ребята, Как вы можете видеть, что я пытаюсь получить программу, чтобы сказать костюмер цену его покупки (price = answer * liters). В ответе есть сохраненное письмо, которое он ввел (R, S, D). Не предполагается ли использовать значение, объявленное им как переменная float? потому что я получаю неправильное значение, когда я отвечаю на * литры, то есть: пользователь выбирает 100 литров, а S, ответ должен быть 750 (100 * 7.5), но это не так.С помощью переменной хранится в полукокса

Im действительно новый для c или любого другого языка программирования. Спасибо за помощь.

+4

Я не понимаю ваш вопрос. Это только я? –

+0

@ EugeneSh.- Кажется, OP не понимает, что делает этот код. –

+3

'' S'' не 'S'. Первый является объектом типа 'char', последний - переменной типа' float'. – downhillFromHere

ответ

0

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

int main() 
{ 
    float liters, price, basePrice; 
    char answer; 
    printf("Choose one of the following fuels or X to quit:\nS - gas 98 \nR - gas 95\nD - diesel fuel\n"); 
    scanf("%c", &answer); 
    switch (answer) 
    { 
     case 'S': case 's': 
      printf("You selected to fuel with gas 98\n"); 
      basePrice = 7.5; 
      break; 
     case 'R': case 'r': 
      printf("You selected to fuel with gas 95\n"); 
      basePrice = 5.85; 
      break; 
     case 'D': case 'd': 
      printf("You selected to fuel with disel fuel\n"); 
      basePrice = 5.95; 
      break; 
     case 'X': case 'x': 
      printf("Thank you.\n"); 
      return 0; 
    } 
    printf("The price list is:\ngas98 - 7.5 NIS\ngas98 - 5.85 NIS\ndiesel - 5.95 NIS\n"); 
    printf("How much liters would you like to fuel?\n"); 
    scanf("%f", &liters); 
    price = basePrice * liters; 
    printf("You choose to fuel %0.0f\nThe price is:%0.0f\n", liters, price); 
    return 0; 
} 
+4

'case 'X': ... return 0;' –

+0

'default: ... return 0;' –

+0

'default: return main();/* muahaha !! */' –

0

Персонажи не являются переменными. Вы должны установить флаг или что-то в случаях.

float SelectedThing; 

case 'S': 
----- 
SelectedThing = S; 

price = SelectedThing * liters; 
0

answer не float, это char, который содержит письмо, как 'S'.

Существует также переменная, S, но это не имеет никакого отношения к answer. Один из способов сделать это - принять решение в вашем заявлении case, какую цену использовать и сохранить в float, пожалуй, selectedPrice. Затем умножьте это на количество литров.

Обратите внимание, что значение char можно рассматривать как число. Например, вы можете умножить 'S' * 10, что работает, потому что C будет обрабатывать char как эквивалент его значению ASCII. 'S' - 83 в ASCII, поэтому набрав «S», а затем выбрав 10 литров, вы получите 830. Не то, что вы хотите.

0

в своем заявлении price = answer * liters; вы умножать char на float, не приведет ни к чему вы expect.what вам нужно сделать, это в switch заявления присваивает float переменного значение S, R или D, в зависимости от выбора

#include <stdio.h> 

int main(void) 
{ 
    float S = 7.5, R = 5.85, D = 5.95, liters, price; 
    //note here 
    float ANS; 

    char answer; 
    printf("Choose one of the following fuels or X to quit:\nS - gas 98 \nR - gas 95\nD - diesel fuel\n"); 
    scanf("%c", &answer); 
    switch (answer) 
    { 
     case 'S' : case 's': 
      printf("You selected to fuel with gas 98\n"); 
      ANS = S; 
      break; 
     case 'R': case 'r': 
      printf("You selected to fuel with gas 95\n"); 
      ANS = R; 
      break; 
     case 'D': case 'd': 
      printf("You selected to fuel with disel fuel\n"); 
      ANS = D; 
      break; 
     case 'X': case 'x': 
      printf("Thank you.\n"); 
      return 0; 
     } 
    printf("The price list is:\ngas98 - 7.5 NIS\ngas98 - 5.85 NIS\ndiesel - 5.95 NIS\n"); 
    printf("How much liters would you like to fuel?\n"); 
    scanf("%f", &liters); 
    //note here 
    price = ANS * liters; 
    printf("You choose to fuel %0.0f\nThe price is:%0.0f\n", liters, price); 
    return 0; 
} 
Смежные вопросы