С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.12.2015
Сообщений: 10
1

Найти и устранить ошибку в коде программы, возникающую при сортировке самодельного списка

26.12.2015, 23:28. Показов 503. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Сделал сортировку, при отладке видно, что он сортирует, но в конце выбивает ошибку, помогите, пожалуйста.
Найти и устранить ошибку в коде программы, возникающую при сортировке самодельного списка

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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
struct Node
{
    int data;
    Node *next;
};
 
void Sort(Node *head) //Сортировка
{
    int tmp;
    Node *cur1;
    Node *cur2;
    cur1 = head;
    cur1 = cur1->next;
    while (cur1->next->data)
    {
        cur2 = cur1;
        while (cur2->next->data)
        {
            if (cur2->data > cur2->next->data)
            {
                tmp = cur2->data;
                cur2->data = cur2->next->data;
                cur2->next->data = tmp;
            }
            cur2 = cur2->next;
        }
        cur1 = cur1->next;
    }
}
 
void main()
{
    setlocale(LC_ALL, "Russian");
    Node *head1, *head2;
    Node *cur1 = new Node;
    Node *cur2 = new Node;
    cur1->next = NULL;
    cur2->next = NULL;
    head1 = cur1;
    head2 = cur2;
    int number;
    unsigned int i, n;
    bool flag;
    i = 0;
    flag = true;
    cout << "Ввод элементов 1-го вектора. Чтобы закончить ввод, введите 0.\n";
    while (flag)
    {
        cur1->next = new Node;
        cout << "Введите " << i + 1 << "-й элемент 1-го вектора: ";
        cin >> number;
        if (number != 0)
        {
            cur1->next->data = number;
            cur1->next->next = NULL;
            cur1 = cur1->next;
        }
        else
            flag = false;
        i = i + 1;
    }
    n = i - 1;
    cout << "Ввод элементов 2-го вектора.\n";
    i = 0;
    while (i < n)
    {
        cur2->next = new Node;
        cout << "Введите " << i + 1 << "-й элемент 2-го вектора: ";
        cin >> number;
        cur2->next->data = number;
        cur2->next->next = NULL;
        cur2 = cur2->next;
        i = i + 1;
    }
    /*Вывод*/
    cur1 = head1;
    cur1 = cur1->next;
    i = 0;
    cout << "Элементы 1-го вектора: ";
    while (i < n)
    {
        cout << left << setw(4) << cur1->data;
        cur1 = cur1->next;
        i = i + 1;
    }
    cur2 = head2;
    cur2 = cur2->next;
    i = 0;
    cout << "\nЭлементы 2-го вектора: ";
    while (i < n)
    {
        cout << left << setw(4) << cur2->data;
        cur2 = cur2->next;
        i = i + 1;
    }
    cout << endl;
    /*Конец вывода*/
    /*Скалярное произведение*/
    int SComposition;
    SComposition = 0;
    i = 0; 
    cur1 = head1;
    cur1 = cur1->next;
    cur2 = head2;
    cur2 = cur2->next;
    while (i < n)
    {
        SComposition = SComposition + cur1->data*cur2->data;
        cur1 = cur1->next;
        cur2 = cur2->next;
        i = i + 1;
    }
    cout << "Скалярное произведение 2-х заданных векторов равно " << SComposition << endl;
    /*Сортировка элементов векторов по возрастанию*/
    Sort(head1);
    Sort(head2);
    cout << "Отсортированные элементы векторов:\n";
    cur1 = head1;
    cur1 = cur1->next;
    i = 0;
    cout << "Элементы 1-го вектора: ";
    while (i < n)
    {
        cout << left << setw(4) << cur1->data;
        cur1 = cur1->next;
        i = i + 1;
    }
    cur2 = head2;
    cur2 = cur2->next;
    i = 0;
    cout << "\nЭлементы 2-го вектора: ";
    while (i < n)
    {
        cout << left << setw(4) << cur2->data;
        cur2 = cur2->next;
        i = i + 1;
    }
    cout << endl;
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2015, 23:28
Ответы с готовыми решениями:

Как отловить ошибку возникающую до загрузки программы?
Вот голова - WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR strParams, int) { try {...

Не могу найти ошибку при сортировке массивов
Даны два числа n и m и два упорядоченных по неубыванию массива A&lt;=A&lt;=....&lt;=A и B&lt;=B&lt;=....&lt;=B....

Не могу найти ошибку при сортировке массива
Добрый день.Помогите найти ошибку.Суть в том что первые 2-е кнопки выдают данные те что нужно, но...

Устранить ошибку в коде
Здравствуйте, в чем ошибка..? Написать программу, которая предлагает пользователю ввести число и,...

2
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
27.12.2015, 08:25 2
примерно так
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
//#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
struct Node
{
    int data;
    Node *next;
};
 
void Sort(Node *head) //Сортировка
{
    int tmp;
    Node *cur1 = head;
    Node *cur2;
    while (cur1!= NULL)
    {
        cur2 = cur1;
        while (cur2 != NULL)
        {
            if (cur1->data > cur2->data)
            {
                tmp = cur2->data;
                cur2->data = cur1->data;
                cur1->data = tmp;
            }
            cur2 = cur2->next;
        }
        cur1 = cur1->next;
    }
}
 
void print(Node* head, int i){
    Node*node = head;
    cout << "Элементы " << i << "-го вектора: ";
    while (node != NULL)
    {
        cout << left << setw(4) << node->data;
        node = node->next;
    }
    cout << '\n';
}
void main()
{
    setlocale(LC_ALL, "Russian");
    Node *head1 = NULL,
        *head2 = NULL,
        *cur1 = NULL,
        *cur2 = NULL;
    int number;
    unsigned int n, i = 0; 
    cout << "Ввод элементов 1-го вектора. Чтобы закончить ввод, введите 0.\n";
    do{
        cout << "Введите " << i + 1 << "-й элемент 1-го вектора: ";
        cin >> number;
        if (number != 0){
            if (head1 == NULL){
                head1 = new Node;
                head1->data = number;
                head1->next = NULL;
                cur1 = head1;
            }
            else{
                cur1->next = new Node;
                cur1->next->data = number;
                cur1->next->next = NULL;
                cur1 = cur1->next;
            }
            i++;
        }
    } while (number != 0);
    n = i;
    cout << "Ввод элементов 2-го вектора.\n";
    i = 0;
    while (i < n)
    {
        cout << "Введите " << i + 1 << "-й элемент 2-го вектора: ";
        cin >> number;
        if (head2 == NULL){
            head2 = new Node;
            head2->data = number;
            head2->next = NULL;
            cur2 = head2;
        }
        else{
            cur2->next = new Node;
            cur2->next->data = number;
            cur2->next->next = NULL;
            cur2 = cur2->next;
        }
        i++;
    }
    /*Вывод*/
    cout << '\n';
    print(head1, 1);
    print(head2, 2);
    /*Конец вывода*/
    /*Скалярное произведение*/
    int SComposition = 0;
    cur1 = head1;
    cur2 = head2;
    while (cur1 != NULL)
    {
        SComposition += cur1->data*cur2->data;
        cur1 = cur1->next;
        cur2 = cur2->next;
        i = i + 1;
    }
    cout << "Скалярное произведение 2-х заданных векторов равно " << SComposition << endl;
    /*Сортировка элементов векторов по возрастанию*/
    Sort(head1);
    Sort(head2);
    cout << "Отсортированные элементы векторов:\n";
    print(head1, 1);
    print(head2, 2);
    system("pause");
}
1
0 / 0 / 0
Регистрация: 26.12.2015
Сообщений: 10
27.12.2015, 12:21  [ТС] 3
Спасибо большое, очень помогли.
0
27.12.2015, 12:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2015, 12:21
Помогаю со студенческими работами здесь

Исправить ошибку, возникающую при поиске файлов
Здравствуйте,уважаемые форумчане! Написала программу,которая выполняет поиск файлов и столкнулась с...

Устранить ошибку в коде. Массивы
Dim x() As Single, y() As Single, Msg As String, D As Single, Y1() As Single, X1() As Single ...

Помогите устранить ошибку в коде.
Здравствуйте не могу понять почему в программе в строке 54 выдает ошибку. У меня в классе массив...

Не могу устранить ошибку в коде
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #define N 5 int main() { ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru