Возникли проблемы с циклом в массиве в Stack Overflow

Кажется, я неправильно перебираю свой массив, он настроен так, чтобы запрашивать у пользователя список чисел, и я должен сравнивать его с другим числом, которое устанавливает пользователь.

#include <iostream>
using namespace std;
bool chk = true;
int main() {
/*
Write a program that asks the user to type 10 integers of an array and an integer s.
Then search the value s from the array and display the value of s if it is found in
the array otherwise print sorry not found..
*/

int userArray[10], i, greater = 0;
int s;
cout << "Enter a check number: \n";
cin >> s;
if (chk = true) {
//prompt for array list
for (i = 0; i < 9; i++) {

if (i == 0) {
cout << "Enter ten numbers: " << "\n";
cin >> userArray[i];
}
else {
cin >> userArray[i];
}
chk = false;
}
//loop through the array
for (int i = 0; i <= 10; i++) {
if (s = userArray[i]) {
//for testing
cout << userArray[i];
//cout << s;
}
else {
cout << "No match found!";
}
//I was just using this to pause the console and let me inspect result
cin >> greater;

return 0;

}
}
}

Я предполагаю, что следующий код находится там, где проблема. Идея состоит в том, чтобы установить s = 2, ввести в список чисел, а затем сравнить с s и вывести s, если есть совпадение, если нет. Когда я ввожу число, которое, как я знаю, совпадает с s, кажется, что оно печатает первое число в массиве, но я подумал, поскольку я перебираю числа по одному в цикле for, которые должны отображаться, когда он достигает нужного числа, а не когда это останавливается. заранее спасибо

    //loop through the array
for (int i = 0; i <= 10; i++) {
if (s = userArray[i]) {
//for testing
cout << userArray[i];
//cout << s;
}
else {
cout << "No match found!";
}

-3

Решение

Вы используете один знак равенства. Это настройка s в userArray[i] так что всегда оценивается как истина. Для сравнения используйте двойные знаки равенства, например:
if (s == userArray[i]) {...}
Кроме того, ваш return оператор находится в вашем цикле (кредит @UnholySheep).

0

Другие решения

вы сравниваете с одним оператором присваивания = вы должны использовать оператор равенства вместо ==

if (s = userArray[i]) с в цикле for является одним из примеров.

вы также делаете ту же ошибку в

if (chk = true)

0

По вопросам рекламы [email protected]