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

Линейный однонаправленный список; ошибка сегментации - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Разбить введенную строку на слова и выделить под каждое слово отдельный массив http://www.cyberforum.ru/cpp-beginners/thread179030.html
Ребята помогите плиз! Задали задание, а сделать не могу( 1) Написать ф-ию, которая определяет является ли строка палиндромом 2) Заменить в строке все указанные буквы на тире (или звездочки) и вывести на экран кол-во произведенных замен 3) Разбить введенную строку на слова и выделить под каждое слово отдельный массив заранее очень признателен. З.Ы. (если не сложно можете написать на...
C++ Найти все числа-палиндромы, которые не больше 100, и их квадраты тоже палиндромы Натуральное число называется палиндромом, если его запись читается однинакого с начала и с конца (4884, 393, 1). Найти все числа-паиндромы, которые не больше 100, и их квадраты тоже палиндромы. помогите сделать прогу без перевода числа в строку http://www.cyberforum.ru/cpp-beginners/thread179029.html
программу копирования из заданного текста данной части в строку C++
помогите написать программу копирования из заданного текста данной части в строку, (дано: abcdefgh пользователь вводит с клавы: № елемента, к-сть символов) помогите плиз... Добавлено через 1 час 11 минут ето чё, так сложно??=))
массивы, его индексы C++
Известны данные о росте 8 юношей в классе, упорядоченны по убыванию. Ни одна пара учеников не имеет одинаковый рост. В начале учебного года в класс поступил новый ученик.Какое место в перечне роста займёт этот ученик, если известно что его рост не совпадает ни с одним, меньше самого большого и большн самого маленького. #include <iostream> using namespace std; void main() { const int...
C++ Вычислить сумму ряда http://www.cyberforum.ru/cpp-beginners/thread179019.html
Помогите написать программу накопления суммы. S=1/a+1/a(a+1)+1/a(a+1)(a+2)...
C++ Сжать массив, удалив из него элементы, модуль которых находится в заданном интервале в одномерном массиве состоящем из n вещественных элементов вычислить: 1)максимальный элемент массива; 2)сумму элементов массива, расположенных до последнего положительного элемента. Сжать массив, удалив из него все элементы, модуль которых находится в интервале Освободившиеся в конце массива элементы заполнить нулями. Добавлено через 55 секунд ребят, подскажите пожалуста. как решить... подробнее

Показать сообщение отдельно
Lexa_Aleynik
0 / 0 / 0
Регистрация: 19.08.2010
Сообщений: 8
20.10.2010, 17:09  [ТС]     Линейный однонаправленный список; ошибка сегментации
благодарю Andrew_Lvov за указанную ошибку, код программы я исправил, но проблема инициализации осталась

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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include<iostream>
#include<string.h>
 
using std::cin;
using std::cout;
using std::endl;
 
const int l_name = 31, l_numb = 7;
 
struct Elem_bus
{
    char numb_bus [l_numb];
    char name [l_name];
    int numb_route;
    Elem_bus *pnext;
    
};
 
class List_bus
{
    Elem_bus *pend;
    Elem_bus *phead;
public:
    List_bus();
    ~List_bus();
    void Add_bus(Elem_bus *bus);
    void Print();
    Elem_bus* Del_numb_bus(Elem_bus *key);
};
 
List_bus::List_bus()
{
    phead=pend=NULL;
}
 
List_bus::~List_bus()
{
    while(phead!=0)
    {
        Elem_bus *pcurrent=phead;
        phead=phead->pnext;
        delete pcurrent;
    }
}
 
void List_bus::Add_bus(Elem_bus *bus)
{   
    Elem_bus *pcurrent=new Elem_bus;
 
    strcpy(pcurrent->numb_bus,bus->numb_bus);
    strcpy(pcurrent->name,bus->name);
    pcurrent->numb_route=bus->numb_route;
 
    pcurrent->pnext=NULL;
    
    if(phead!=NULL)
    {
                pend->pnext=pcurrent;
                pend=pcurrent;
    }
    else
    {
        phead=pend=pcurrent;
    }
}
 
void List_bus::Print()
{
    Elem_bus *pcurrent=phead;
    while(phead!=0)
    {
        cout<<pcurrent->numb_bus<<" | "<<pcurrent->name<<" | "<<pcurrent->numb_route<<" | \n";
        pcurrent=pcurrent->pnext;
    }
    cout<<"\n\n";
}
Elem_bus* List_bus::Del_numb_bus(Elem_bus *key)
{
    Elem_bus *pcurrent=phead;
    Elem_bus *ptemp;
    if(key->numb_bus==phead->numb_bus)
    {   
        phead=phead->pnext;
        ptemp=pcurrent;
    }
    else
    {
        while(pcurrent)
        {
            pend->pnext=pcurrent;
            pend=pcurrent;
            if(key->numb_bus==pcurrent->numb_bus)
            {
                pend->pnext=pcurrent->pnext;
                pend=pcurrent->pnext;
                ptemp=pcurrent;
                break;
            }
        }
    }
    return ptemp;
}
//-------------------------------------------------------------------------------------------------------------------------------
int main()
{
    Elem_bus key, bus;
    int n;
    List_bus in_park,in_route;
    
    cout<<"create bus park\n";
    cout<<"enter list of buses\n";
    do
    {   
        do
        {
            cout<<"Number of the bus:  # ";
            cin>>bus.numb_bus;
            cout<<endl;
            
            cout<<"Name driver: ";
            cin>>bus.name;
            cout<<endl;
            
            cout<<"Number route of the bus:  # ";
            cin>>bus.numb_route;
            cout<<endl;
            
            in_park.Add_bus(&bus);
        }
        while((bus.numb_bus[0]=='s')&&(strlen(bus.numb_bus)==1));
 
        cout<<"Choose comand:\n";
        cout<<"Print information about buses, which located in park : Press '1'\n";
        cout<<"Output bus from park in route : Press '2'\n";
        cout<<"Input bus in park from route : Press '3'\n";
        cin>>n;
        switch(n)
        {
            case 1:in_park.Print();
                break;
            case 2:
                    {
                        cout<<"enter number of the bus: # ";    
                        cin>>key.numb_bus;
                        in_route.Add_bus(in_park.Del_numb_bus(&key));
                    }
            case 3:
                    {
                        cout<<"enter number of the bus: # ";    
                        cin>>key.numb_bus;
                        in_park.Add_bus(in_route.Del_numb_bus(&key));
                    }
        }
    }
    while((bus.numb_bus[0]!='e')&&(strlen(bus.numb_bus)==1));
    return 0;
}
 
Текущее время: 23:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru