Вопрос Написала программу, а он выдает неверный результат, c++

Регистрация
17 Июл 2013
Сообщения
69
Репутация
0
Спасибо
0
Монет
0
Компилирует, но выдает неверные цифры. Хотела написать тест, где логическая ошибка??
#include
using namespace std;
int main () {
setlocale(LC_ALL, "Russian");
int f, t;
char x [10];
char y [7];
char z [15];
char a [15];
cout << "Вопрос 1: Кто покинул Коноху?
";
cin >> x;
if (x=="Саске" || x=="Saske")
t=t+1;
else {
f=f+1;
}
cout << "Вопрос 2: Четвертый Хокаге Конохи?
";
cin >> y;
if (y=="Минато" || y=="Minato")
t=t+1;
else {
f=f+1;
}
cout << "Вопрос 3: Внучка Хаширамы?
";
cin >> z;
if (z=="Цунаде" || z=="Cunade")
t=t+1;
else {
f=f+1;
}
cout << "Вопрос 4: Мать Хамуры и Хогоромо?
";
cin >> a;
if (a=="Кагуя" || a=="Kaguya")
t=t+1;
else {
f=f+1;
}
cout << "Количество правильных ответов=" << t << endl;
cout << "Количество неправильных ответов=" << f;
return 0;
}
 
x=="Саске" - Сравнение строк так не делается! Используйте класс string и тогда можно будет сравнивать слова так как вы сравниваете. Иначе нужно побуквенно сравнивать слово в цикле. f и t не инициализированы как вам подсказала Анна Анохина Далее не ошибки а уточнения: t=t+1; вполне себе можно заменить на t++; как и f=f+1; на f++;
 
Тут просто неправильно используются операции C++. C++ интерпретирует очень многие выражения, но часто совсем не так. как предполагает человек, с ним мало знакомый.
 
1. Строки так сравнивать нельзя. Использовать функцию strcmp или что-то аналогичное. 2. Инициализировать f, t перед использованием.
 
Назад
Сверху