#include<iostream.h>
void main(){
int v[5] = {9, 1, 8, 7, 9};
int i, x;
cin >> x;
i = 0;
for(i; i < 5; i++){
if(v = x){
cout << i << "\n";
};
};
}
for, while, if и массив
Хотел сделать "поиск": программка просматривает массив, по пути выбирает элементы равные x, и выводит на экран их индексы:
Код:
Прога игнорирует if... и выводит все индексы подряд, но если
Код:
if(v = x)
заменить на
Код:
if(v > x)
то выводятся "правильные" индексы, элементов, которые больше х...
Почему if(v = x) неправильно работает?
http://forum.codenet.ru/showthread.php?p=139487#post139487
А проблема в том, что ты вместо сравнения написал присвоение.
Должно быть:
if(v == x)
Кстати, и массив можно было бы сделать константным.
мне очень стыдно...
Стыдиться тут нечего. Все ошибаются.
Кстати вместо cout << i << "\n"; можно писать cout << i << endl;
Знаю, но мне "\n" больше нравится :)
Знаю, но мне "\n" больше нравится :)[/QUOTE]
Напрасно. В зависимости от платформы endl может меняться, например на "\r\n". Так что для переносимости лучше все-таки использовать endl.
Учту на будущее
[QUOTE=MegaMozg]
Код:
i = 0;
for(i; i < 5; i++)
...
for(i; i < 5; i++)
...
[/QUOTE]
:) Обычно переменную цикла инициализируют внутри оператора for:
Код:
for (i=0; i<5; i++)
Или, если ей уже было присвоено нужное значение, первую секцию в операторе оставляют пустой:
Код:
i=0;
for (; i<5; i++)
for (; i<5; i++)