Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136

Программа не выводит ничего; вывод потока пустой после выполнения функции

04.07.2019, 09:49. Показов 4615. Ответов 10

Студворк — интернет-сервис помощи студентам
После выполнения одной функции

у меня ничего не выводится в консоли через std:cout

Main (Rule).CPP

C++
1
2
3
4
5
6
7
std:: vector< std::tuple<int, int,int> > passengers; 
 
elevation.Move_Call(passengers);
 
std::cout << "Nothing " << std::endl;
std::cout << "Appears " << std::endl;
std::cout << "Nothing Appears in this stdout" << std::endl;

Class Elevation.cpp with Move_Call

C++
1
2
3
4
5
    void Elevation::Move_Call(std::vector< std::tuple<int, int, int> >& passengers)
{
    while (passengers.empty() != true) // работает, пока вектор таплов (кортежей) не будет пустой
        El_to_Pass_to_Dest(passengers);
}
Если раскомментировать elevation.Move_Call (passengers); то после него записанные строки будут выводиться.

У самого есть идея, что где-то в самой проге я как-то повлиял на поток.
Вложения
Тип файла: zip Elevation.zip (7.2 Кб, 4 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.07.2019, 09:49
Ответы с готовыми решениями:

Не завершается программа после выполнения потока
Не завершается программа после выполнения второго потока. Я понял, что виноват цикл внутри метода, который выполняется вторым потоком. Я...

Как избежать уничтожения потока после выполнения им своей функции?
создаю несколько потоков for (int i = 0; i &lt; n; i++) BeeThreads = CreateThread(NULL, 0, &amp;Bee_Thread, (CONST LPVOID)i, 0, NULL); ...

Почему зацикливается программа после выполнения функции загрузки?
Вот моя функция, после её выполнения программа зацикливается. ITEM* zagruzka(ITEM *head) { ITEM *cur; FILE *f; ...

10
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
04.07.2019, 10:08
streamc, похоже что цикл в Elevation::Move_Call бесконечный
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
04.07.2019, 10:26  [ТС]
zayats80888,

Но как выйти из него. Ведь я же поставил условие

Кстати, я убрал из main Elevation::Move_Call пока, а сразу прямо из Main вызываю теперь
C++
1
2
    while (passengers.empty() != true)
        elevation.El_to_Pass_to_Dest(passengers); // Никакого Move_call
Условие есть. Значит, я не так вначале понял про выход. Как бы из этого while корректно выйти. Да, вектор пуст, данные выводятся. Но толку то)) Если я дальше не смогу продолжать
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
04.07.2019, 10:31
Цитата Сообщение от streamc Посмотреть сообщение
Как бы из этого while корректно выйти.
Нужно что бы функция elevation.El_to_Pass_to_Dest(passengers) в конце концов опустошала вектор passengers
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
04.07.2019, 10:31  [ТС]
C++
1
2
3
4
    while (passengers.empty() != true) {
        elevation.El_to_Pass_to_Dest(passengers);
        break;
    }
А вот так уже работает.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
04.07.2019, 10:33
Цитата Сообщение от streamc Посмотреть сообщение
А вот так уже работает.
это все равно что написать просто
C++
1
if (!passengers.empty()) elevation.El_to_Pass_to_Dest(passengers);
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
04.07.2019, 10:33  [ТС]
Цитата Сообщение от zayats80888 Посмотреть сообщение
ужно что бы функция elevation.El_to_Pass_to_Dest(passengers) в конце концов опустошала вектор passengers
Вот это она 100 процентов делает, в этом и суть. Я все там дебажил, проверял. Он 100 процентов пуст в любом случае.
Короче, если
C++
1
break;
добавляю, то работает. Такой вот он while.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
04.07.2019, 10:36
Цитата Сообщение от streamc Посмотреть сообщение
Такой вот он while.
Я архив с кодом не смотрел, но готов поспорить, что вы вектор в функцию El_to_Pass_to_Dest передаете копированием, вместо того что бы по ссылке. while тут ни причем
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
04.07.2019, 11:12  [ТС]
Цитата Сообщение от zayats80888 Посмотреть сообщение
это все равно что написать просто
Проверил, да, одноразовое выполнение - отнюдь не то, что мне нужно. Хм может внутри, while в while поставлю что-нибудь типа break, тут уже логику смотреть придется.

Добавлено через 1 минуту
Цитата Сообщение от zayats80888 Посмотреть сообщение
El_to_Pass_to_Dest передаете копированием
По ссылке. Мне же нужно вектор очищать. Никакого копирования. Я изначально хотел сделать только по ссылке. Но еще раз гляну. Идея по ссылке, но исполнение проверю еще раз.

Добавлено через 2 минуты
А, внутри, значит тоже нужно int *ucf0 = &std::get<1>(passengers[0]);
вместо int ucf0 = std::get<1>(passengers[0]);
Нет, не нужно, а то я испорчку элементы во время выполенния программы.

Добавлено через 13 минут
C++
1
2
3
void Elevation::El_to_Pass_to_Dest(std::vector< std::tuple<int, int, int> >& passengers)
 {
}
Так норм? Внутри никаких ссылок, а чисто passengers

Добавлено через 19 минут
Так, в общем, я решил проверить удаление из вектора passengers в main (Rule), если один раз выполнить while не до конца. То есть, используя break.
C++
1
2
     for (const auto &i : passengers)
         std::cout <<"passenger"<< std::get<0>(i) << " " << std::get<1>(i) << " " << std::get<2>(i) << std::endl;
Он нормально удаляет все элементы из оригинального вектора. То есть, проблема не в ссылке. Я же использую везде ссылки в прототипах и области переменных.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
04.07.2019, 11:26
Лучший ответ Сообщение было отмечено streamc как решение

Решение

streamc, посмотрел ваш код в архиве, и нашел следующее:
C++
1
2
3
4
5
6
7
8
void Elevation::Load_Users2(std::vector< std::tuple<int, int, int> >& passengers)
{
    for (auto i = passengers.begin(); i != passengers.end();)
 
        if (std::get<0>(*i) == -5555) i = passengers.erase(i);
        else ++i;
    if (passengers.empty() == true) exit(0); // <-----Вот и причина!
}
1
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
04.07.2019, 11:56  [ТС]
zayats80888,

Спасибо!
Даже не знаю, как благодарен. Для других вариантов использовал. А, понял exit (0) - это полный выход из программы.

Добавлено через 3 минуты
loaded внутри я типа не очистил в отличие от passengers :HMM:

Добавлено через 14 минут
Тему можно снести с форума.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.07.2019, 11:56
Помогаю со студенческими работами здесь

Программа ничего не выводит
program p1; var s: string; n, i: byte; begin readln (s); readln (n); for i:=1 to length(s) do if i mod n = 0 then write (s,...

Программа не выводит ничего
Собственно начал изучать NASM но у меня не выводится в этой программе ничего global _start _start: mov eax, 4 mov ebx, 1 ...

Программа ничего не выводит
При компиляции ничего не выводит #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include&lt;iostream.h&gt; double f(); ...

Программа ничего не выводит
Здравствуйте, помогите, пожалуйста. Программа компилируется нормально, ошибок компилятор не выдает. Однако на экран ничего не выводится. В...

После # ничего не выводит
Здравствуйте,есть некая функция ,которая в итоге формирует такую переменную return_ += &quot;#&quot; + $('#container...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru