#c #arrays #loops
#c #массивы #циклы
Вопрос:
Я выполнил этот простой цикл, но он не работает, знаете почему?
#include <iostream>
using namespace std;
int main()
{
int array[100], i=0;
do {
cout<<i<<".";
cin >> array[i];
i ;
}while(array[i] <= 30);
return 0;
}
Вывод:
0.23
1.26
2.27
3.29
4.11
5.17
6.28
7.31
8.17
9.19
10.76
11.54
12.31
Даже если я вставляю число больше 30, цикл продолжается.
Комментарии:
1. Для эффективной помощи вам необходима чрезвычайно важная информация: что должен был делать цикл?
2. Попробуйте отладчик. Вы можете выполнить программу за один шаг, посмотреть, что находится в переменных. Должно помочь вам найти проблему.
3. Не работает , по крайней мере, очень расплывчатое описание symproms.
4. Сядьте и обсудите логику цикла со своей Резиновой уткой . Сосредоточьте разговор на том, стоит ли читать содержимое
array[i]
перед сохранением значенияarray[i]
.5. Новая ошибка вызвана
i ;
тем, что из-за этого утверждения индексi
вarray[i] <= 30
равен 1 после последнего прочитанного элемента.
Ответ №1:
Я думаю, ваш цикл должен выглядеть так for(int i=0;i<=30;i )
, чтобы выполняться 31 раз. Во время входа в цикл array[i]
содержит значение, зависящее от того, что было выделено в стеке ранее!
Комментарии:
1. Вы выделяете важную ошибку, и вы, вероятно, правы, но лучше воздержаться от ответа до тех пор, пока спрашивающий не прояснит свои цели. Дополнительная информация может сделать этот ответ неправильным. Обычно правило «не изменять вопрос с правильным ответом» защищает ответ, но на данный момент мы не можем быть уверены, что он правильный.
2. @AndreasWenzel верно, обновлено, чтобы сделать его менее волшебным.