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

что за ошибки? - C++

Восстановить пароль Регистрация
 
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
18.07.2013, 22:29     что за ошибки? #1
у меня нет диска F

(если написать полный путь, будет ошибка)

VS 2012
Миниатюры
что за ошибки?   что за ошибки?  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2013, 22:29     что за ошибки?
Посмотрите здесь:

C++ Ошибки в функции что не так?
Ошибки в функции что не так? C++
что это за ошибки? C++
ООП что за ошибки? C++
Что это за ошибки? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
18.07.2013, 22:45  [ТС]     что за ошибки? #2
C++
1
2
3
4
5
6
while(i) //удаление выделенной памяти
{
list *s = i;
i = i->next;  //стрелка при отладке показывает сюда
delete s;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.07.2013, 23:04     что за ошибки? #3
порча памяти. Что тут ещё можно сказать? Утечка может быть где угодно. Может указатель s невалиден, а может какой-то иной.
Код-то целиком где???
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
18.07.2013, 23:09  [ТС]     что за ошибки? #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
порча памяти. Что тут ещё можно сказать? Утечка может быть где угодно. Может указатель s невалиден, а может какой-то иной.
Код-то целиком где???
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include <iostream>
#include <clocale>
#include "stdlib.h"
#include <time.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE, "rus");
    srand(time(NULL));
    struct list
    {
        list * prev;
        list * next;
        int key;
    };
    list *i = new list; 
    list *j = i;
    i->prev = 0;
    const int size = 10; 
    for(int k = 1; k < size; k++)
    {
        cin >> j->key;
        j->next = new list;
        j->next->prev = j;
        j = j->next;
    }
    cin >> j->key;
    //j->key = rand();
    j->next = 0; 
    j = i;
    cout << "Ключи неотсортированнного списка: " << endl;
    while(j)
    {
        cout << j->key << " ";
        j = j->next;
    } 
    list *x;
    list *y;
    j = i;
    while (j) //сортировка списка
    {
        x = j;
        y = j->next;
        while(y)
        {
            if(x->key < y->key)
            {
                x = y;
            }
            y = y->next;
        }
        if(x == j)
        {
            j = j->next;
        }
        if(x->next != 0)
        {
            x->next->prev = x->prev;
        }
        x->next = i;
        i->prev = x;
        i = x;
    }
    j = i;
    cout << "\nКлючи отсортированного в порядке возрастания списка: " << endl;
    int u=0;
 
    while(j && u<size)
    {
        cout << j->key << " ";
        j= j->next;
        u++;
    }
    while(j) //удаление выделенной памяти
    {
        list *s = j;
        j = j->next; 
        delete s;
    }
    cout << endl;
    system("pause"); 
 
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 23:37     что за ошибки? #5
Как он у вас до освобождения памяти доходит? У меня из сотрировки не выходит.
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
18.07.2013, 23:38  [ТС]     что за ошибки? #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Из сортировки вообще не выходит.
вроде ругается на цикл, в котором очистка памяти?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 23:41     что за ошибки? #7
У меня до этого не доходит. Зацикливается в сортировке.
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
18.07.2013, 23:43  [ТС]     что за ошибки? #8
Цитата Сообщение от alsav22 Посмотреть сообщение
У меня до этого не доходит. Зацикливается в сортировке.
10
9
8
7
6
5
4
3
2
1
Ключи неотсортированнного списка:
10 9 8 7 6 5 4 3 2 1
Ключи отсортированного в порядке возрастания списка:
1 2 3 4 5 6 7 8 9 10 Для продолжения нажмите любую клавишу . . .

а дальше уже ошибки, из-за которых создана тема
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 23:46     что за ошибки? #9
Цитата Сообщение от wolf1396 Посмотреть сообщение
а дальше уже ошибки, из-за которых создана тема
Тут не только тема...
Миниатюры
что за ошибки?  
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
18.07.2013, 23:51  [ТС]     что за ошибки? #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Тут не только тема...
ну я то делаю в 12 студии
а это похоже Борланд С++
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 23:59     что за ошибки? #11
Цитата Сообщение от wolf1396 Посмотреть сообщение
а это похоже Борланд С++
Это как вы определяете? Среда тут ни при чём. Код кривой. У меня 10 студия.
Belfegor
19.07.2013, 00:16
  #12

Не по теме:

у меня валялось, может поможет


Не по теме:

Кликните здесь для просмотра всего текста
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
#include <iostream>
 
typedef struct LIST {
    int key;
    struct LIST * next;
} arraylist;
 
using std::cin;
using std::cout;
 
int main() {
    arraylist * list = NULL; // связанный список
    arraylist * node, * node2;
    int num;
    // заполняем список
    while (cin >> num) { // цикл считывания чисел, для выхода ввести букву
        node = (arraylist*) malloc(sizeof (arraylist)); // структура arraylist
        node->key = num; // запись в структуру числа
        node->next = list; // прикркпляем структуру в список, в начало
        list = node; // указатель на начало списка
    }
    // сортируем
    for (node = list; node; node = node->next)
        for (node2 = list; node2; node2 = node2->next)
            if (node->key < node2->key) { // если число из node меньше числа из node2 то переставляем их
                int i = node->key;
                node->key = node2->key;
                node2->key = i;
            }
    // выводим отсортированный список
    cout << "sort: ";
    for (arraylist *node = list; node; node = node->next) {
        cout << node->key << ' ';
    }
    cout << std::endl;
    return 0;
}

Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
19.07.2013, 00:29     что за ошибки? #13
Цитата Сообщение от Belfegor Посмотреть сообщение
int i = node->key;
* * * * * * * * node->key = node2->key;
* * * * * * * * node2->key = i;
менять местами элементы списка лучше перестановкой указателей. (а не перестановкой ключей)
а) Иначе чем это отличается от сортировки массива
б) как же тогда реализуются преимущества списка перед массивом по перемещениям/вставкам элементов?
-=ЮрА=-
Заблокирован
Автор FAQ
19.07.2013, 00:49     что за ошибки? #14
wolf1396, первое сообщение от линковщика : где-то у разработчиков VS был каталог dd\vctools\crt_blt\self_x86\crt\srs в котором лежал срр-ник dbgdel.cpp с прототипами думаю чего то наподобие VirtualAlloc. Tак вот- то что было наверччено в коде с памятью отразилось бы при DEBUG проходе в 52-й строке того файла. Эта инфа называется трассировкой и служит она в первую очередь для разработчиков самой VS, это они (разаработчики) если к ним прийдёт еррор мессадж с компьютера смогут быстро поглядеть а чего ж такого приводило к эксепшину в 52-й строке. Для сингл юзера не имеющего под рукой dbgdel.cpp это просто непонятная бесполезная инфа.
По самому описанию ошибки заключу что была либо не выделена память либо произошло обращение по невалидному адресу (скажем в массиве из 4-х элементов запросили 5-й)
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
19.07.2013, 01:55     что за ошибки? #15
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
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
    int k;
    setlocale(LC_CTYPE, "rus");
    srand(time(NULL));
    struct list
    {
        list * prev;
        list * next;
        int key;
    };
    list *i = new list; 
    list *j;
    i->next = 0;
    const int size = 10; 
    for(k = 1; k < size; k++){
        j=new list;
        i->prev=j;
        j->next=i;
        i->key=rand()%90+10;
        i=j;
    }
    i->prev=0;
    i->key=k;
 
    cout << "Ключи неотсортированнного списка: " << endl;
    j = i;
    while(j!=NULL){
        cout << (j->key) << " ";
        j = j->next;
    } 
 
    cout <<endl<< "Ключи неотсортированнного списка: " << endl;
    j = i;
    while(j->next){
        cout << (j->key) << " ";
        j = j->next;
    } 
    cout << (j->key) << endl;
    
    list *x;
    list *y;
    list* tmpre;
    list* tmnext;
    bool sorted=false;
    while(!sorted){
        sorted=true;
        x=i;
        while(x->next){
            if ((x->key)>(x->next->key)){
                y=x->next;
                tmpre=x->prev;
                tmnext=y->next;
 
                y->prev=tmpre;
                if (tmpre) tmpre->next=y;
                else   i=y;
 
                x->next=tmnext;
                if(tmnext) tmnext->prev=x;
                else j=x;
 
                x->prev=y;
                y->next=x;
 
 
                sorted=false;
            }
            else
                x=x->next;//
        }
    }
    cout << "Ключи отсортированного в порядке возрастания списка: " << endl;
    int u=0; 
    j=i;
    while(j){
        cout << j->key << " ";
        j = j->next;
    } 
    j=i;
    while(j) //удаление выделенной памяти
    {
        x = j;
        j = j->next; 
        delete x;
    }
    cout << endl;
    system("pause"); 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2013, 07:33     что за ошибки?
Еще ссылки по теме:

Что есть причиной ошибки? C++
C++ Что за ошибки
Не пойму что это за ошибки C++

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

Или воспользуйтесь поиском по форуму:
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
19.07.2013, 07:33  [ТС]     что за ошибки? #16
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
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
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
    int k;
    setlocale(LC_CTYPE, "rus");
    srand(time(NULL));
    struct list
    {
        list * prev;
        list * next;
        int key;
    };
    list *i = new list; 
    list *j;
    i->next = 0;
    const int size = 10; 
    for(k = 1; k < size; k++){
        j=new list;
        i->prev=j;
        j->next=i;
        i->key=rand()%90+10;
        i=j;
    }
    i->prev=0;
    i->key=k;
 
    cout << "Ключи неотсортированнного списка: " << endl;
    j = i;
    while(j!=NULL){
        cout << (j->key) << " ";
        j = j->next;
    } 
 
    cout <<endl<< "Ключи неотсортированнного списка: " << endl;
    j = i;
    while(j->next){
        cout << (j->key) << " ";
        j = j->next;
    } 
    cout << (j->key) << endl;
    
    list *x;
    list *y;
    list* tmpre;
    list* tmnext;
    bool sorted=false;
    while(!sorted){
        sorted=true;
        x=i;
        while(x->next){
            if ((x->key)>(x->next->key)){
                y=x->next;
                tmpre=x->prev;
                tmnext=y->next;
 
                y->prev=tmpre;
                if (tmpre) tmpre->next=y;
                else   i=y;
 
                x->next=tmnext;
                if(tmnext) tmnext->prev=x;
                else j=x;
 
                x->prev=y;
                y->next=x;
 
 
                sorted=false;
            }
            else
                x=x->next;//
        }
    }
    cout << "Ключи отсортированного в порядке возрастания списка: " << endl;
    int u=0; 
    j=i;
    while(j){
        cout << j->key << " ";
        j = j->next;
    } 
    j=i;
    while(j) //удаление выделенной памяти
    {
        x = j;
        j = j->next; 
        delete x;
    }
    cout << endl;
    system("pause"); 
    return 0;
}
не подскажете, где почитать про связанные списки? а то в википедии про двунаправленные абзаца 2-3 максимум.

Добавлено через 45 минут
Кликните здесь для просмотра всего текста
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
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
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
    int k;
    setlocale(LC_CTYPE, "rus");
    srand(time(NULL));
    struct list
    {
        list * prev;
        list * next;
        int key;
    };
    list *i = new list; 
    list *j;
    i->next = 0;
    const int size = 10; 
    for(k = 1; k < size; k++){
        j=new list;
        i->prev=j;
        j->next=i;
        i->key=rand()%90+10;
        i=j;
    }
    i->prev=0;
    i->key=k;
 
    cout << "Ключи неотсортированнного списка: " << endl;
    j = i;
    while(j!=NULL){
        cout << (j->key) << " ";
        j = j->next;
    } 
 
    cout <<endl<< "Ключи неотсортированнного списка: " << endl;
    j = i;
    while(j->next){
        cout << (j->key) << " ";
        j = j->next;
    } 
    cout << (j->key) << endl;
    
    list *x;
    list *y;
    list* tmpre;
    list* tmnext;
    bool sorted=false;
    while(!sorted){
        sorted=true;
        x=i;
        while(x->next){
            if ((x->key)>(x->next->key)){
                y=x->next;
                tmpre=x->prev;
                tmnext=y->next;
 
                y->prev=tmpre;
                if (tmpre) tmpre->next=y;
                else   i=y;
 
                x->next=tmnext;
                if(tmnext) tmnext->prev=x;
                else j=x;
 
                x->prev=y;
                y->next=x;
 
 
                sorted=false;
            }
            else
                x=x->next;//
        }
    }
    cout << "Ключи отсортированного в порядке возрастания списка: " << endl;
    int u=0; 
    j=i;
    while(j){
        cout << j->key << " ";
        j = j->next;
    } 
    j=i;
    while(j) //удаление выделенной памяти
    {
        x = j;
        j = j->next; 
        delete x;
    }
    cout << endl;
    system("pause"); 
    return 0;
}

и еще было бы клево, если бы было объяснение работы сортировки
Yandex
Объявления
19.07.2013, 07:33     что за ошибки?
Ответ Создать тему
Опции темы

Текущее время: 23:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru