Есть задание: с клавиатуры последовательно вводятся количество товара и его сорт (1 или 2). Ввод автоматически прекращается, как только будет введено нулевое количество товара. Определить товаров какого сорта было получено больше. kt - кол-во товара, ssrt1 и 2 это суммы количества товаров по сортам соответственно, выводят ошибки указанные на скрине, как решить проблему?
З. Ы. я студент первого курса и за мой недокод не бейте плз))

#include <iostream>
using namespace std;
int main() {
setlocale(LC_CTYPE, "Russian");
auto q1 = 0U, q2 = 0U;
while (true) {
cout << "Количество: ";
unsigned q;
cin >> q;
if (0 == q) break;
cout << "Сорт: ";
unsigned s;
cin >> s;
switch (s) {
case 1: q1 += q; break;
case 2: q2 += q; break;
}
}
cout
<< "Товаров "
<< (q1 > q2 ? "I" : "II")
<< " сорта больше\n";
system("pause");
}
А если использовать массив не потребуется ни if ни switch :)
double s[2]={0,0};
while(1){
cin>>k;
if(k==0)break;
cin>>srt;
s[srt-1]+=k;
}
cout<<(s[0]>s[1]?"1 sort":"2 sort");
Вам уже ответили. Только обозначу что переопределение в данном случае это когда вы создаете две переменные с одним и тем же именем и компилятор не знает какой переменной отдать предпочтение!
Можно писать так:
double ssrt1 = 0; //и далее просто пользоваться этой переменной
либо так:
double ssrt1;
ssrt1 = 0; // Переходить на следующую строку не обязательно, но точка с запятой, что бы обозначить конец операции, обязательна. Переход сделан только для наглядности. Обычно программисты и пишут код что-бы был нагляднее, потому что читать код приходится больше чем кодить.
Интересный способ создания переменных, объявил и в той же строчке присвоил значение, ну разумисты юные.
Убрать: double kt, srt, ssrt1, ssrt2, ssrt1 = 0, ssrt2 = 0;
Замутить: double kt, srt, ssrt1 = 0, ssrt2 = 0;
Эмммм, я тоже не шарю, но что будет, если ssrt1=0 ssrt2=0 перенести на новую строку?
У вас по моему дичь написана в 7 строчке . Вы сначала определили переменную, потом определили её же, только присвоив 0 . Тут два арианта могут быть .
double kt, str,ssrt1,ssrt2;
ssrt1=0;
ssrt2=0;
или
double kt, str,ssrt1=0,ssrt2=0;