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

При удалении первого элемента из динамического списка присваивается плохой указатель - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как лучше переделать программу чтобы отсутствовали глобальных переменных http://www.cyberforum.ru/cpp-beginners/thread1050653.html
есть программа, как лучше переделать программу что бы отсутствовали глобальных переменных, т.е. чтобы все передавалось через параметры. прошу с комментариями. /* Igra v Kpestiki Noliki */ #include <stdio.h> #include <stdlib.h> char matrix; /* Igral'naya Doska */ char check(void); void init_matrix(void); void get_player_move(void);
C++ Программа работы с файлами. Информация о студентах. Нужно создать программу, которая обрабатывала б базы данных, считывала информацию с файла, редактирвала эту информацию, удаляла часть инфы, и сохраняла обратно в файл, а так же поиск в базе по фамилии. В базе данных использовать информацию о студентах, а именно: ФИО, адресс, возраст и группу. Я сделал часть, где нужно считать с файла и поиск по фамилии. А вот остальное я пока не знаю как. Код... http://www.cyberforum.ru/cpp-beginners/thread1050652.html
C++ Найти все целые положительные числа a,b,c из промежутка
3) Найти все целые положительные числа a,b,c из промежутка (0,100) такие что a^3+b^2=c^2. P.S. в первой и второй задаче желателен вод с клавиатуры. Заранее благодарю.
Задача про двумерный массив C++
Вот условие: Дана целая матрица размером (n*m) n, m <=10. Упорядочить (переставить) строки матрицы по возрастанию количества положительных элементов в одной строке. #include<stdio.h> #include<math.h> int main(){ int n,m,i,j,a,k, masO, l, z, b, c, v, masP; do { printf("Vvedite razmer matrici NxM<=10\n"); scanf("%d%d",&n,&m); } while((n>10)||(m>10)||(n<=0)||(m<=0)); for (i=0; i<n; i++)...
C++ Нужно объяснение кода про нахождение количества решений для латинского квадрата http://www.cyberforum.ru/cpp-beginners/thread1050629.html
Я не могу понять код, который мне нужно будет уже послезавтра объяснить. Задача состоит в том, чтобы найти количество решений для латинского квадрата и вывести эти квадраты на экран: int Factorial(int n) {if (n<=1) return 1; else return n*Factorial(n-1); } const int N = 4; const int Nf = Factorial(N); struct strN { int mas_;
C++ как написать вывод? Как написать вывод объема тетраэдра (тема класс)? //На вход подается некоторое количество тетраэдров(координаты вершин). //Отсортировать и вывести их по возрастанию объемов. #include <iostream> #include <stdio.h> #include <locale> #include <math.h> using namespace std; подробнее

Показать сообщение отдельно
IrineK
Заблокирован
22.12.2013, 00:18     При удалении первого элемента из динамического списка присваивается плохой указатель
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
// Запись содержит марку автобуса, максимальную скорость, вместимость. 
// Удалить из списка записи с автобусами, вместимость которых ниже 25 пассажиров 
// и максимальной скоростью выше 120 км/ч.
 
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
 
typedef struct _Bus
{   char brand [20];
    int maxSpeed;
    int maxCapacity;
    struct _Bus *next;
} TBus;
 
 
TBus* BusStack ()
{   TBus * buses = NULL, *start;
    unsigned int i, n;
    cout << "Number of buses in stack N = : ";
    cin>>n;
    cin.sync();
 
    if (n==0)
        return NULL;
    
    buses = new TBus;
    cout << endl << "Bus No 1" << endl;
    cout << "Brand: ";
    fgets(buses->brand, 40, stdin);
    buses->brand [strlen(buses->brand) - 1] = '\0';
    cout << "Maximum speed: ";
    cin >> buses->maxSpeed;
    cout << "Maximum capacity: ";
    cin >> buses->maxCapacity;
    cin.sync();
    cout << endl;
    start = buses;
 
    for (i = 2; i <= n; i++)
    {   buses->next= new TBus;
        buses = buses->next;
        cout << endl << "Bus No " << i << endl;
        cout << "Brand:";
        fgets(buses->brand, 40, stdin);
        buses->brand [strlen(buses->brand) - 1] = '\0';
        cout << "Maximum speed: ";
        cin >> buses->maxSpeed;
        cout << "Maximum capacity: ";
        cin >> buses->maxCapacity;
        cin.sync();
        cout << endl;
    }
    buses->next = NULL;
    return start;
}
 
void Print (TBus *buses)
{   if (!buses)
    {   cout<<"No buses\n";
        return;
    }
    while (buses)
    {   cout << "Brand: " << buses->brand
            << ", max speed: " << buses->maxSpeed
            << ", max capacity: " << buses->maxCapacity << endl;
        buses = buses ->next;
    }
    cout << endl << endl;
}
 
TBus *DelFront (TBus *buses)
{   TBus *temp, *del;
    
    if (!buses)
        return NULL;
 
    if(!buses->next)
    {   del = NULL;
        delete buses;
    }
    else
    {   temp = buses;
        del = buses->next;
        delete temp;
    }
    return del;
}
 
void Clear(TBus* buses)
{   while (buses)
        buses = DelFront(buses);
}
 
TBus *Filter (TBus *buses, int speed, int capacity)
{   TBus *newBuses = NULL;
    TBus *start = NULL;
    while (buses)
    {   if(!(buses->maxSpeed > speed && buses->maxCapacity < capacity))
        {   newBuses = new TBus;
            *newBuses = *buses;
            newBuses->next = NULL;
            start = newBuses;
            buses = buses->next;
            break;
        }
        buses = buses->next;
    }
    while (buses)
    {   if(!(buses->maxSpeed > speed && buses->maxCapacity < capacity))
        {   newBuses->next = new TBus;
            newBuses = newBuses->next;
            *newBuses = *buses;
            newBuses->next = NULL;
        }
        buses = buses->next;
    }
    return start;
}
 
 
int main()
{   TBus *buses = BusStack ();
    cout << "The whole stack:\n";
    Print (buses);
    
    TBus *filtered = Filter (buses, 120, 25);
    cout << "The filtered stack:\n";
    Print (filtered);
 
    Clear (buses);
    Clear (filtered);
    cin.get();
    return 0;
}
 
Текущее время: 11:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru