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

Ошибка при добавлении элемента в список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка списка пузырьком по убыванию http://www.cyberforum.ru/cpp-beginners/thread1163508.html
Правильно ли составлен цикл для сортировки списка пузырьком по убыванию? tElem *mylist; bool run=true; while (run){ run=false; list_ptr=start; while (list_ptr->r) {
C++ Количество строк в файле, перезапустить поток Использую вот такой код для проверки кол-ва строк в файле while (!file.eof()) { if (file.get()=='\n') amount++; } file.seekg(0,file.beg); и почему то после этого кода у меня файл закрывается, подскажите почему? http://www.cyberforum.ru/cpp-beginners/thread1163502.html
При загрузке списка из файла дублируется последняя строка C++
Здравствуйте! Такая проблема: Выгружаю список в файл. С процедурой выгрузки проблем нет. Всё сохраняет корректно. Но при загрузке списка из файла, последняя строка загружается 2 раза. Ошибку в коде найти не удается: void load(T_Queue &queue) { FILE *fp; T_Book_Queue *p; T_Book book; fp = fopen("base1.dat", "rb");
Записать в файл сгенерированный массив C++
ребят,тут такое дело,просто не понимаю скорей всего,не могу записать в файл массив,генерируемый рандомом,код такой: #include <iostream> #include <fstream> #include <iomanip> #include <stdlib.h> using namespace std; int main()
C++ Определить количество узлов в циклическом списке между узлами с указателями x и у http://www.cyberforum.ru/cpp-beginners/thread1163473.html
Доброго времени суток. Мне нужно написать программу, которая определит количество узлов в циклическом списке, находящихся между узлами, на которые ссылаются два данных указателя x и y. Я так понимаю, пользователь сам все заполняет, в том числе и указывает, на какие узлы ссылаются данные два указателя. И тут у меня возникли проблемы: я не очень понимаю, как написать функцию заполнения списка и...
C++ Обрезать строку при вводе через fgets Всем доброго времени суток! Столкнулся с такой проблемой - заполняю список значений следующей процедурой void addToQueue(T_Queue &queue) { char buffer; char BUFname; char BUFDolzhnost; T_Book_Queue *p; p = (T_Book_Queue*)malloc(sizeof(T_Book_Queue)); подробнее

Показать сообщение отдельно
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133

Ошибка при добавлении элемента в список - C++

01.05.2014, 18:26. Просмотров 162. Ответов 3
Метки (Все метки)

Первый элемент всегда выводится правильно, у второго почему-то портится указатель. Третий вообще куда-то исчезает.

Структура:
C++
1
2
3
4
5
6
struct Rastenie
{
    char nazvanie[30], klass[30], strana[30];
    bool esti;
    Rastenie *sled;
};
Добавление элемента в список:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Dobaviti(Rastenie *&pervyi)
{
    Rastenie *novyi = new Rastenie;     // создаем новый элемент
    novyi->sled = pervyi;               // добавляем его в начало
    pervyi = novyi;
 
    fflush(stdin);                      // очищаем поток ввода, чтобы в нем не застрял '\n'
    printf("Название: ");               // читаем поля
    fgets(novyi->nazvanie,30,stdin);
    novyi->nazvanie[strlen(novyi->nazvanie)-1] = 0;
    printf("Класс: ");
    fgets(novyi->klass,30,stdin);
    novyi->klass[strlen(novyi->klass)-1] = 0;
    printf("Страна: ");
    fgets(novyi->strana,30,stdin);
    novyi->strana[strlen(novyi->strana)-1] = 0;
    printf("Раньше существовал - 0, сейчас произрастает - 1: ");
    scanf("%i",&novyi->esti);
    printf("\nЭлемент добавлен!\n");
    system("pause");
}
Вывод, если что:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Vyvod(Rastenie *pervyi)
{
    if (pervyi == NULL)
    {
        printf("Список пуст!\n");
        system("pause");
        return;
    }
 
    Rastenie *tek = pervyi;
 
    printf("+--------------------------------------------------------------------+\n");
    printf("| %15s | %15s | %15s | %12s |\n","Название","Класс","Страна","Произрастает");
    while (tek != NULL)
    {
        printf("| %15s | %15s | %15s | %12s |\n",tek->nazvanie,tek->klass,tek->strana,
            (tek->esti? "да" : "нет"));
        tek = tek->sled;
    }
    system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru