Проблема с циклом while C
Столкнулся с проблемой использования цикла while в своем коде.Мне нужно чтобы пользователь выбрал несколько товаров.В данной задаче я не понимаю как это осуществить.
#include <stdio.h>
int main(){
int t,k,i;
printf("Введите кол-во товара\n");
scanf("%d",&k);
printf("Введите кол-во раз повторов\n");
scanf("%d",&i);
while (i <=5){
printf("Введите номер товара\n");
scanf("%d",&t);
i-1;
}
switch (t) {
case 1:
printf("Кол-во проданного 1 товара %f",29.80 * k);
break;
case 2:
printf("Кол-во проданного 2 товара %f",45.50 * k);
break;
case 3:
printf("Кол-во проданного 3 товара %f",9.98 * k);
break;
case 4:
printf("Кол-во проданного 4 товара %f",44.90 * k);
break;
case 5:
printf("Кол-во проданного 5 товара %f",67.80 * k);
break;
default:
printf("Ошибка");
}
}
Пример
Введите кол-во товара:
2
Введите кол-во раз повторов:
2
Введите номер товара:
4
Введите номер товара:
1
Кол-во проданного 4 товара :
Ответ
Кол-во проданного 1 товара :
Ответ
Ответы (2 шт):
Автор решения: Сергей Махнёв
→ Ссылка
Не уловил немного, что вы хотите, но в вашем коде явно ошибки
int main(){
int t,k,i;
printf("Введите кол-во товара\n");
scanf("%d",&k);
printf("Введите кол-во раз повторов\n");
scanf("%d",&i);
while (i <=5){ //По заданному условию, цикл будет работать пока количесво повторов не станет больше или равным пяти
printf("Введите номер товара\n");
scanf("%d",&t);
i-1; // данное действие вообще ничего не делает для цикла
}
switch (t) { // если хотите получать ответ, лучше поместить switch внутрь цикла
case 1:
printf("Кол-во проданного 1 товара %f",29.80 * k);
break;
case 2:
printf("Кол-во проданного 2 товара %f",45.50 * k);
break;
case 3:
printf("Кол-во проданного 3 товара %f",9.98 * k);
break;
case 4:
printf("Кол-во проданного 4 товара %f",44.90 * k);
break;
case 5:
printf("Кол-во проданного 5 товара %f",67.80 * k);
break;
default:
printf("Ошибка");
}
}
Так, в итоге, ваше код должен выглядеть так:
#include <stdio.h>
int main(){
int t,k,i;
printf("Введите кол-во товара\n");
scanf("%d",&k);
printf("Введите кол-во раз повторов\n");
scanf("%d",&i);
while (i != 0){ // исправил здесь
printf("Введите номер товара\n");
scanf("%d",&t);
i = i-1; // исправил здесь
switch (t) { // перенес switch
case 1:
printf("Кол-во проданного 1 товара %f",29.80 * k);
break;
case 2:
printf("Кол-во проданного 2 товара %f",45.50 * k);
break;
case 3:
printf("Кол-во проданного 3 товара %f",9.98 * k);
break;
case 4:
printf("Кол-во проданного 4 товара %f",44.90 * k);
break;
case 5:
printf("Кол-во проданного 5 товара %f",67.80 * k);
break;
default:
printf("Ошибка");
}
}
}
Чтобы ответ вышел таким:
Введите кол-во товара
2
Введите кол-во раз повторов
2
Введите номер товара
2
Кол-во проданного 2 товара 91.000000
Введите номер товара
4
Кол-во проданного 4 товара 89.800000
Автор решения: Harry
→ Ссылка
Ну, две главные ошибки вам исправили — это неверно закрытое тело цикла и отсутствие изменения счетчика. Здесь бы было проще с циклом for, кстати, но если это работа именно с while, то оставим его.
Но почему бы вам не упростить код и не отказаться от надоедливого повторения вывода в switch — например, так:
int main()
{
int n,k;
printf("Введите кол-во товара: ");
scanf("%d",&k);
printf("Введите кол-во раз повторов: ");
scanf("%d",&n);
while(n-->0)
{
int t;
printf("Введите номер товара: ");
scanf("%d",&t);
double cnt[5] = {29.80,45.50,9.98,44.90,67.80};
if (t < 1 || t > 5) printf("Ошибка\n");
else printf("Кол-во проданного %d товара %lf\n", t, cnt[t-1]*k);
}
}
Согласитесь, и компактнее, и легче воспринимается...