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

Проблемы с удалением связанного списка(С++) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Логические операторы в выражениях http://www.cyberforum.ru/cpp-beginners/thread647118.html
Здравствуйте, в одном из тестов для новичков наткнулся на вопрос: каков результат работы следующего кода: int d = 5; bool b = true, c; c = ( !b || (d>3) ); Я думал будет ошибка компиляции, однако ошибся. Вот как понять третью строку? Ведь в ней говорится - "c равно false или true". Как же компилятор понимает какое значение присваивать переменной с, если у него больше нет никаких условий?...
C++ Определить количество и сумму членов последовательности Даны натуральное n и целые числа a(1), a(2),...,a(n). Определить количество и сумму членов последовательности a(i), которые делятся на 5 и не делятся на 7. P.S. Необходимо написать без использования массива, помогите, пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread647117.html
Матрицы C++
Заполнить двумерный массив размером 7х7 след. образом: (см.картинку). Помогите да пацаны
Не получается сделать программу добавив методы C++
Здравствуйте! Я написал программу для расчётов, сравнения и вывода на экран двух цилиндров. Проблема заключается в том, что не могу расписать через методы (вывод на экран, расчёты, сравнения и др. операции). Не могли бы вы мне помочь? Буду очень признателен. Ссылка на прогу ниже.
C++ Error C3861: 'convert_close': identifier not found //ошибка http://www.cyberforum.ru/cpp-beginners/thread647053.html
Ребята вы пожалуйста не обращайте внимание на код, обратите только внимание на на одну ошибку. #include "stdafx.h" #include <iostream> #include <iomanip> #include <fstream> using namespace std;
C++ Ошибка: Unhandled exception at 0x772115de in TimeShift.exe: 0xC0000005: Access violation reading location 0x00041000. всем привет! При использовании двумерного массива постоянно появляется ошибка :Unhandled exception at 0x772115de in TimeShift.exe: 0xC0000005: Access violation reading location 0x00041000. Вот прога: T_complex ** calc_T ( T_complex *fr, // используемые функиции double fr_begin, double fr_end, double fr_step, // границы и шаг по p double l_begin, double l_end, double l_step... подробнее

Показать сообщение отдельно
Писарев Иван
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 44
05.09.2012, 15:37     Проблемы с удалением связанного списка(С++)
Здравствуйте! Передо мной стоит следующая задача: необходимо создать список, вывести его на экран и удалить. Программу необходимо запускать несколько раз, вот в этом и возник ступор. Дело в том, что программа создает список, выводит его на экран и удаляет первый раз вроде исправно, но второй раз программа выдает ошибку на выводе списка(как я понял, либо программа не правильно удаляет связанный список, либо во второй раз она его не правильно создает). Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <iostream>
#include <fstream>
#include <conio.h>
#include <iomanip>
#include <time.h>
#include <string>
 
 
using namespace std;
 
struct rabotnik
{
    string name;
    int staj;
    int zarplata;
    string doljnost;
    rabotnik* next;
};
 
rabotnik* head;
 
rabotnik* zapis(rabotnik *cur,  string P1, string P2, int p1, int p2)
{
    rabotnik* cur2 = new rabotnik; 
    cur2->name =P1; 
    cur2->doljnost=P2;
    cur2->staj=p1;
    cur2->zarplata=p2;
    cur2->next=NULL;
    cur=cur2;
    cur->next = head;
    head = cur;
    return cur;
}
 
rabotnik* promejutok(rabotnik* cur, int vopros)
{
    string P1, P2;
    int p1, p2;
    for (int i=0; i<vopros; i++)
    {
        cout<<endl<<"Введите имя работника ";
        cin >> P1;
        cout<<endl<<"Введите должность работника ";
        cin >> P2;
        cout<<endl<<"Введите стаж работника ";
        cin >> p1;
        while(p1>60||p1<0)
        cout<<endl<<"Введите зар.плату работника(в рублях) ";
        cin >> p2;
        zapis  (cur, P1, P2, p1, p2);
    }
    return(cur);
}
 
void Vivod(rabotnik* q)
{
    q=head;
    for (;q;)
    {
        cout << setw(15) << q->name << setw(15) << q->doljnost << setw(15) << q->staj << setw(15) << q->zarplata ;
        q=q->next;
    }
    cout<<endl;
}
 
void udalenie()
{
    rabotnik* prom;
    do
    {
        prom=head->next;
        delete head;
        head=prom;
    }while (head->next);
    delete head;
}
 
void main()
{
    int vopros=1, vopros1;
    setlocale(0, "");
    system("color F0");
    while(vopros==1)
    {
        cout<<"Введите кол-во рабочих на предприятии ";
        cin>>vopros;
        rabotnik* cur;
        cur=head;
        promejutok(cur, vopros);
        rabotnik* q=new rabotnik;
        Vivod(q);
        udalenie();
        cout<<"Если хотите запустить программу снова, нажмите 1 ";
        cout<<endl<<"ВНИМАНИЕ!";
        cout<<"Если Вы нажмете другую кнопку, программа завершит действие ";
        cin>>vopros;
    }
}
Прошу прощения, если данная тема уже поднималась.
Заранее большое спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru