Форум программистов, компьютерный форум CyberForum.ru

Вылетает программа на моменте выведении информации на экран - C++

Восстановить пароль Регистрация
 
irises
 Аватар для irises
68 / 25 / 8
Регистрация: 29.06.2015
Сообщений: 101
29.06.2015, 16:03     Вылетает программа на моменте выведении информации на экран #1
Всем привет!
Учусь на программиста и нам задали проект: написать программу, где используется список и очередь.
Начав писать, столкнулась с проблемой вывода информации на экран: первая строка выводится, а потом программа вылетает. Сколько сижу, а найти ошибку не могу. Сказывается недостаточность опыта. Пожалуйста помогите!
P.S.:код большой, состоит из нескольких хидеров и .cpp файлов, поэтому прикрепляю архив
Lesson9 - Lab5.rar
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2015, 16:03     Вылетает программа на моменте выведении информации на экран
Посмотрите здесь:

C++ Программа вылетает
C++ Ошибка в коде при выведении строки
программа вылетает. C++
Вылетает программа C++
C++ Вылетает программа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
isobo531
42 / 42 / 11
Регистрация: 11.11.2014
Сообщений: 322
29.06.2015, 16:33     Вылетает программа на моменте выведении информации на экран #2
В каком файле ошибка?
mr_mczakenberg
65 / 65 / 31
Регистрация: 10.04.2015
Сообщений: 281
29.06.2015, 16:37     Вылетает программа на моменте выведении информации на экран #3
Учитывая наличие(см.ниже) все должно работать(см. ниже х2)
C++
1
2
3
4
5
int getNumber () { return number; }
    char *getSurname () { return surname; }
    char *getName () { return name; }
    float getYears () { return years; }
    int getMoney () { return money; }
Вывод более одного параметра был здесь:
C++
1
2
3
4
void Client::print ()
{
    cout<<getNumber()<<"  "<<getSurname()<<"  "<<getName()<<"  "<<getYears()<<"  "<<getMoney();
}
irises
 Аватар для irises
68 / 25 / 8
Регистрация: 29.06.2015
Сообщений: 101
29.06.2015, 17:18  [ТС]     Вылетает программа на моменте выведении информации на экран #4
В каком файле ошибка?
Мне самой трудно найти.

C++
1
2
3
4
5
6
7
8
void main ()
{
    Queue q1 [10];
    for (int i=0; i<10; i++)
        q1[i].push ();
    for (int i=0; i<10; i++)
        q1[i].printQueue ();
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Queue::printQueue ()
{
    Element *temp = head;
    while (true)
    {
        if (temp==0)
            break;
        temp->printElement ();
        temp = temp->getNext(); // кажется здесь плохо перекидывается указатель, на этом моменте вылетает
    }
    cout<<endl;
}
C++
1
2
3
4
5
void Element::printElement ()
{
    getPerson().print();
    cout<<" Prior - "<<getPriority()<<endl;
}
C++
1
2
3
4
void Client::print ()
{
    cout<<getNumber()<<"  "<<getSurname()<<"  "<<getName()<<"  "<<getYears()<<"  "<<getMoney();
}
Когда дебажу на этапе вывода информации, то первый раз цикл срабатывает, а потом (мне так кажется) плохо срабатывает указатель.

Учитывая наличие(см.ниже) все должно работать(см. ниже х2)
Должно, но почему то не работает((
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
29.06.2015, 23:09     Вылетает программа на моменте выведении информации на экран #5
Цитата Сообщение от irises Посмотреть сообщение
C++
1
2
3
4
void Client::print ()
{
* * cout<<getNumber()<<" *"<<getSurname()<<" *"<<getName()<<" *"<<getYears()<<" *"<<getMoney();
}
Не по поводу ошибки (с кодом не разбирался), а на будущее: не нужно так вывод организовывать, порядок вызовов функций тут неопределён. Сделай в каждой строке по одному cout <<.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,161
Завершенные тесты: 1
30.06.2015, 08:15     Вылетает программа на моменте выведении информации на экран #6
вот в этот куске runtime error
C++
1
2
3
4
5
6
7
while (true)
    {
        if (temp==0)
            break;
        temp->printElement ();
        temp = temp->getNext();
    }
У Вас создан массив из 10 очередей.
каждая очередь содержит всего по 1 элементу.
в каждой из них указателю на следующий элемент ноль не присвоен.
там хранится мусор.
поэтому temp = temp->getNext(); этот мусор оказывается в temp и цикл не прекращается
т.к. temp==0 не выполнено
irises
 Аватар для irises
68 / 25 / 8
Регистрация: 29.06.2015
Сообщений: 101
01.07.2015, 22:24  [ТС]     Вылетает программа на моменте выведении информации на экран #7
У Вас создан массив из 10 очередей.
каждая очередь содержит всего по 1 элементу.
в каждой из них указателю на следующий элемент ноль не присвоен.
там хранится мусор.
поэтому temp = temp->getNext(); этот мусор оказывается в temp и цикл не прекращается
т.к. temp==0 не выполнено
а как в этом случае правильно создать очередь из 10 элементов?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,161
Завершенные тесты: 1
02.07.2015, 06:40     Вылетает программа на моменте выведении информации на экран #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Так запихивайте все данные в одну очередь, а не в массив из 10 очередей.
C++
1
2
3
4
5
6
7
void main ()
{
    Queue q1;
    for (int i=0; i<10; i++)
        q1.push(i);
     q1.printQueue();
}
И найдите, где у Вас не обнуляется указатель на следующий элемент для последнего элемента в очереди.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2015, 20:31     Вылетает программа на моменте выведении информации на экран
Еще ссылки по теме:

C++ Вылетает программа
Вылетает программа C++
C++ Вылетает программа

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

Или воспользуйтесь поиском по форуму:
irises
 Аватар для irises
68 / 25 / 8
Регистрация: 29.06.2015
Сообщений: 101
04.07.2015, 20:31  [ТС]     Вылетает программа на моменте выведении информации на экран #9
Цитата Сообщение от zss Посмотреть сообщение
И найдите, где у Вас не обнуляется указатель на следующий элемент для последнего элемента в очереди.
нашла где это исправить
C++
1
2
3
4
5
6
7
while (true)
    {
        if (temp==tail)    // здесь было (temp==0)
            break;
        temp->printElement();
        temp = temp->getNext();
    }
после исправленной ошибки больше не вылетает!!!
СПАСИБО БОЛЬШОЕ!!!
Yandex
Объявления
04.07.2015, 20:31     Вылетает программа на моменте выведении информации на экран
Ответ Создать тему
Опции темы

Текущее время: 21:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru