Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
1

что за ошибки?

18.07.2013, 22:29. Просмотров 739. Ответов 15
Метки нет (Все метки)

у меня нет диска F

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

VS 2012
0
Миниатюры
что за ошибки?   что за ошибки?  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2013, 22:29
Ответы с готовыми решениями:

Найти ошибки в данной программе (известно что есть только 2 ошибки)
У меня в модуле с програмирования задание: Найти ошибки в данной программе (известно что есть...

Пытаюсь разделить диск акронисом,выдаёт ошибки suderror и т.д,что делать? Много программ перепробовал,но что-то показыва
Пытаюсь разделить диск акронисом,выдаёт ошибки suderror и т.д,что делать? Много программ...

Что за ошибки?
1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\dxgitype.h(12): warning C4005:...

Что за ошибки?
Что за ошибки и как от них избавится? /' border='0' style='vertical-align:middle' alt='' /> ...

15
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
18.07.2013, 22:45  [ТС] 2
C++
1
2
3
4
5
6
while(i) //удаление выделенной памяти
{
list *s = i;
i = i->next;  //стрелка при отладке показывает сюда
delete s;
}
0
3279 / 2665 / 719
Регистрация: 25.03.2012
Сообщений: 9,596
Записей в блоге: 1
18.07.2013, 23:04 3
порча памяти. Что тут ещё можно сказать? Утечка может быть где угодно. Может указатель s невалиден, а может какой-то иной.
Код-то целиком где???
0
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
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;
}
0
5474 / 4869 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 23:37 5
Как он у вас до освобождения памяти доходит? У меня из сотрировки не выходит.
0
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
18.07.2013, 23:38  [ТС] 6
Цитата Сообщение от alsav22 Посмотреть сообщение
Из сортировки вообще не выходит.
вроде ругается на цикл, в котором очистка памяти?
0
5474 / 4869 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 23:41 7
У меня до этого не доходит. Зацикливается в сортировке.
0
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
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 Для продолжения нажмите любую клавишу . . .

а дальше уже ошибки, из-за которых создана тема
0
5474 / 4869 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 23:46 9
Цитата Сообщение от wolf1396 Посмотреть сообщение
а дальше уже ошибки, из-за которых создана тема
Тут не только тема...
0
Миниатюры
что за ошибки?  
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
18.07.2013, 23:51  [ТС] 10
Цитата Сообщение от alsav22 Посмотреть сообщение
Тут не только тема...
ну я то делаю в 12 студии
а это похоже Борланд С++
0
5474 / 4869 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 23:59 11
Цитата Сообщение от wolf1396 Посмотреть сообщение
а это похоже Борланд С++
Это как вы определяете? Среда тут ни при чём. Код кривой. У меня 10 студия.
0
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;
}

1
3279 / 2665 / 719
Регистрация: 25.03.2012
Сообщений: 9,596
Записей в блоге: 1
19.07.2013, 00:29 13
Цитата Сообщение от Belfegor Посмотреть сообщение
int i = node->key;
* * * * * * * * node->key = node2->key;
* * * * * * * * node2->key = i;
менять местами элементы списка лучше перестановкой указателей. (а не перестановкой ключей)
а) Иначе чем это отличается от сортировки массива
б) как же тогда реализуются преимущества списка перед массивом по перемещениям/вставкам элементов?
0
Заблокирован
Автор 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-й)
1
3279 / 2665 / 719
Регистрация: 25.03.2012
Сообщений: 9,596
Записей в блоге: 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;
}
2
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
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;
}

и еще было бы клево, если бы было объяснение работы сортировки
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2013, 07:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Что за ошибки?
Есть задание: Создать массив, элементы которого равны сумме цифр чисел, расположенных по кромке...

Что за ошибки
Создать программу с классом Student1 порождающим объекты - анкетные данные о студентах. Класс...

что за ошибки
как фото можно выложить!!?

Что это за ошибки?
Не могу понять в чем ошибка, может кто подскажет Вот код обработки поиска по БД &lt;? echo &quot;&lt;p&gt;По...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.