Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613

Почему не работает цикл с массивом do/while, который инициализируется текущим значением индекса?

05.11.2018, 22:10. Показов 954. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток!
У меня не работает простенький код. Не могу понять, в чём причина. Помогите, плиз, где неувязка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
const int sz = 5;
int main()
{
    int p = 0;
int arr[sz];
    do
    {
        arr[p++] = p;
        cout << arr[p] << endl;
 
    } while (p!= 4);
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2018, 22:10
Ответы с готовыми решениями:

Цикл с большим значением индекса
Добрый день, дайте ответ пожалуйста на следующий вопрос: Почему, если индекс цикла равен i = int.max - 100, а условие i &lt;= int.max,...

Почему не работает свойство display со значением inline?
Например: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;&lt;/title&gt; &lt;meta charset=&quot;utf-8&quot; /&gt; &lt;meta name=&quot;description&quot;...

Почему неправильно работает выборка только с 1 значением?
Всем доброго времени суток Подскажите что не так с запросом на выборку: Если запрос выглядит так: select dat_z as N from economy...

7
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
05.11.2018, 23:12
Fatmarmelad, здравствуйте!

Попробуйте так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
    using namespace std;
    
const int sz = 5;
 
int main() {
    int arr[sz];
    int p = 0;
    do {
        arr[p] = p;
        cout << arr[p] << "\n";
        p++;
    } while (p != 4);
    system("pause");
    return 0;
}
0
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613
05.11.2018, 23:44  [ТС]
Fixer_84, да - работает. Но мне интересно узнать, в чём проблема. Вроде бы, всё должно работать. А в моём варианте правильные значения не выводятся.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
05.11.2018, 23:56
Fatmarmelad, не знаю У меня тоже не работало.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
06.11.2018, 05:29
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Не могу понять, в чём причина
на 4 итерации идёт вызов в
C++
1
cout << arr[p] << endl;
6-го элемента массива при размере массива 5. То есть для сохранения логики наверно так

C++
1
2
        arr[p] = p+1;
        cout << arr[p++] << endl;
Добавлено через 4 минуты
или
C++
1
2
        arr[p++] = p;
        cout << arr[p-1] << endl;
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
06.11.2018, 08:42
Fatmarmelad, постфиксный инкремент выполняется ПОСЛЕ того, как выполнены остальные действия.
Например
C++
1
2
3
int i=0;
a[i++]=b[i++]=0;
// тут a[0] и b[0] равны нулю, i равно 2
1
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613
06.11.2018, 12:47  [ТС]
Компилятор не показывает , что есть ошибка, но программа не работает. Даже если написать
C++
1
while (p != 3);
на выходе программа выдаёт неадекватные значения. Понятно, что вначале элементу массива присваивается значение, а потом индекс увеличивается на единицу, но при работе программы, значения у массива просто как случайные числа.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
06.11.2018, 13:29
Fatmarmelad, потому что читаешь то число, которое ещё не записывал. А там по умолчанию мусор. Чтоб там не было мусора, а были 0, нужно указать
C++
1
int arr[sz]={0};
Добавлено через 2 минуты
А варианты с считыванием именно записываемого тобой числа уже дал в посте №5.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2018, 13:29
Помогаю со студенческими работами здесь

Файл, который создает в цикле 100 файлов с текущим временем
написать командный файл который создает в цикле 100 файлов с именами 1,2,..100 в текущем каталоге. В файле записывается текущее время.

Почему не работает цикл?
Задача на скриншоте. Пытался использовать цикл так как дорога кольцевая и надо result сокращать каждый раз если байкер пройдет больше...

Почему не работает цикл?
Почему не работает код: For n=2 to Q cells(n,10).value=cells(n,7).value+cells(n,5).value-cells(n,6).Value Next n

Почему не работает цикл for
Ситуация такая. Заполняем матрицу символами: &gt;&gt; y=. Функция trans12 зависит от размерности y. создала файл-функцию. Цикл if: если...

Почему не работает цикл while
&lt;?php $_hwid = $_GET; define('_HOST','localhost'); define('_LOGIN','rot'); define('_PASS',''); $DB = 'vktools'; $TABLE = 'Key';...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru