#c #arrays #input
#c #массивы #ввод
Вопрос:
Итак, вот мой код
#include <conio.h>
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
int n;
int kw[10];
int discount[10];
int total[10];
int final[10];
cout << "insert amount of data = ";
cin >> n;
cout << endl;
for (int i = 0; i < n; i ) {
cout << "insert total = ";
cin >> total[i];
cout << "insert kw (1, 2, or 3)= ";
cin >> kw[i];
if (kw[i] < 1 || kw[i] > 3) {
do {
cout << "please insert the number 1-3n";
cout << "insert kw (1, 2, or 3)= ";
cin >> kw[i];
} while (kw[i] < 1 || kw[i] > 3);
if (kw[i] == 1) {
discount[i] = 2 * total[i] / 100;
}
else if (kw[i] == 2) {
discount[i] = 5 * total[i] / 100;
}
else
discount[i] = 10 * total[i] / 100;
}
final[i] = total[i] - discount[i];
cout << discount[i] << endl;
cout << final[i] << endl;
}
}
Предполагается, что этот код определяет, сколько раз пользователь запустит программу, возьмет число, введенное пользователем, установит скидку, а затем вычислит конечное значение.
Проблема в том, что конечным результатом всегда является случайное число. Например, если я введу 5000
для total[i]
и 3
для kw[i]
( kw[i]
используется для установки скидки), я получу результат:
6299760
-6294760
Хотя я ожидал получить:
500
4500
Итак, как я могу это исправить, чтобы получить правильное значение?
Комментарии:
1. Ваш код может легко пойти наперекосяк с правильным / неправильным вводом, пожалуйста, включите все входные и выходные данные.
2. Вы не устанавливаете скидку, если они получают право kw с первой попытки.
3. Основываясь на комментарии @stark, если вы обнаружите, что пишете
if(condition){ do{ ...} while(condition) }
, вы, вероятно, просто хотитеwhile
цикл вместоdo while
цикла.4. Кроме того, найдите в своей любимой ссылке C «целочисленное деление». Ваши
discount
вычисления будут равны нулю, если числитель меньше знаменателя, например, 3/4 == 0.
Ответ №1:
Вы вычисляете discount
, только если пользователь сначала вводит неправильное значение для kw
, а затем вводит правильное.