Не работает switch - C (СИ) (70349)
Формулировка задачи:
Пару дней изучаю C. Почему-то не работает оператор switch. Простенькая программка, которая по первой букве животного выводит его на экран. Заранее спасибо
main()
{
char c;
printf("Enter first symbol: \n");
scanf("%Г±", &c);
switch (c)
{
case 'a': printf("\nAntiloop");break;
case 'b' printf("\nBear"); break;
case 'c': printf ("\nCat");break;
case 'd': printf("\nDog");break;
default: printf("Not finded!");
}
getch();
}Решение задачи: «Не работает switch»
textual
Листинг программы
[SPOILER]#include <stdio.h>
#define ART 2.05 //price artichoke
#define BEET 1.15 //price beet
#define CARROT 1.09 //price carrot
#define RATE1 6.50 //delivery up to 5 pounds
#define RATE2 14.00 //delivery from 5 to 20 pounds
#define KOEF 0.50 //coefficient delivery over 20 pounds
#define DISC 0.05 //discount
#define BRAKE1 5
#define BRAKE2 20
#define A 'a'
#define B 'b'
#define C 'c'
#define Q 'q'
int main(void)
{
char n;
int i,quantity,art_q,beet_q,carrot_q;
float sum,disc,del,result;
art_q=0;
beet_q=0;
carrot_q=0;
sum=0;[/SPOILER]
printf("Select:\na)artichoke\nb)beet\nc)carrots\n");
scanf("%c",&n);
while(n!=Q)
{
switch(n)
{
case A:
printf("Enter quantity artichoke in lb:");
if(scanf("%d",&i)==1)
art_q+=i;
break;
case B:
printf("Enter quantity beet in lb:");
if(scanf("%d",&i)==1)
beet_q+=i;
break;
case C:
printf("Enter quantity carrots in lb:");
if(scanf("%d",&i)==1)
carrot_q+=i;
break;
default:
break;
}
printf("Select:\n");
printf("a)artichoke\n");
printf("b)beet\n");
printf("c)carrots\n");
printf("q)quit\n");
scanf("%c",&n);
}
[SPOILER]sum=art_q*ART+beet_q*BEET+carrot_q*CARROT;
if(sum>=100)
disc=sum*DISC;
else
disc=0;
quantity=art_q+beet_q+carrot_q;
if(quantity<=BRAKE1)
del=RATE1;
else if(quantity<=BRAKE2)
del=RATE2;
else
del=RATE2+((quantity-BRAKE2)*KOEF);
result=sum-disc+del;
printf("Name Price_p_lb Quantity Price \nartichoke %-10.2f %-10d %-10.2f\nbeet %-10.2f %-10d %-10.2f\ncarrot %-10.2f %-10d %-10.2f\nResult\nTotal cost:%.2f Discount:%.2f Delivery price:%.2f Total:%.2f\n",
ART,art_q,(float)art_q*ART,BEET,beet_q,(float)beet_q*BEET,CARROT,carrot_q,(float)carrot_q*CARROT,sum,disc,del,result);
return 0;
}[/SPOILER]
Объяснение кода листинга программы
- В начале кода объявлены константы, представляющие цены и коэффициенты для различных продуктов и условий доставки.
- Затем объявлены переменные, которые будут использоваться для отслеживания количества каждого продукта и общего количества продуктов.
- Далее пользователю предлагается выбрать продукт, введя соответствующую букву.
- В цикле while пользователь продолжает вводить продукты до тех пор, пока не введет
qдля выхода. - Когда пользователь вводит продукты, они добавляются к соответствующим переменным.
- После того, как пользователь закончил вводить продукты, вычисляется общая стоимость, применяются скидки и вычисляется стоимость доставки.
- Наконец, выводится информация о продуктах, их стоимости, количестве и общей стоимости.