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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
#1

проверте програму - C++

22.02.2011, 22:37. Просмотров 723. Ответов 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
137
#include "stdafx.h"
#include <time.h> 
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
 
        typedef struct maneg
        {
            char name [20];
            char secondname[20];
            maneg* next;
            maneg* prev;
        }list;
list *clear( list*h )
{
if(!h) return NULL;
list*n;
for(n=h->next;n;n=n->next )
{
if(h) free(h);
h=n;
}
if(h) free (h);
return 0;
}
 
list* dod(list* first)
        {
            list* nov;
            nov = (list*) malloc(sizeof(list));
            if(!nov)
                printf("can not allocate memory");
                return nov;
            printf("vvedid dannue");
            scanf("%s,%s",&(nov->name),&(nov->secondname));
            nov->next=first;
            first=nov;
            return first;
        }
list* poc(list* p)
        {
            list*n=p;
            int i,sum=0;
        printf("nom pos");
            scanf("%i",&i);
            for(n;n->next;n=n->next)
                sum++;
            if(sum==i)
                return p;
        }
list* per(list*p)
{   list*n=p;
    if(p->next)p->next=p->prev;
    n->prev=n->next;
    return p;
}
list* dob(list*vuzel)
{
    list* n;
    n=(list*) malloc(sizeof(list));
 
if(!vuzel) return n;
if(vuzel->next) n->next=vuzel->next;
vuzel->next=n;
return n;
}
void print(list* first)
{
    list*wwe;
    wwe=first;
    while(wwe)
    {
        printf("%s,%s\n",&(wwe->name),&(wwe->secondname));
        wwe=wwe->next;
    
    }
 
 
}
void fill_list(list*p)
{
    for( ;p;p=p->next)
    {
        printf(" enter name of student\n");
            scanf("%s",&(p->name));
 
        printf("enter secondname of student\n");
            scanf("%s",&(p->secondname));
        
    }
}
list *Add(list *p)
{
list *n = new list;
memset( n, 0, sizeof(list) );
if(!p) return n;
 
n->next = p->next;
p->next = n;
n->prev = p;
return n;
}
 
    
int main ()
 
{    
    int q;      
printf("vvedit kilkist\n");
    scanf("%d",&q);
list *head = Add( NULL );
    for(list*p=head;q>1;q--)
    fill_list(head);
    list fx;
    list* r=dod(&fx);
    list* o=poc(&fx);
    list* s=per(&fx);
    list* z=dob(&fx);
    list* p=clear(&fx);
    print(head);
        
        int n, i, k,sum=0;
        printf("vvedit rozmir masuva\n");
        scanf("%d",&n);
        int *a=new int [n];
                srand(time(NULL));
        for (i=0; i<n; i++)
               a[i]=rand()%20; //заполнение массива случайными числами от 0 до 19
      
        for (k=0; k<n; k++)
                sum+=a[k];
                printf("sum=%i",sum);   
        delete [] a;
        return sum;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2011, 22:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос проверте програму (C++):

проверте эту програму - C++
#include void multipy( int a,int b,int c); main(void) { int a= { 0,1,2,3,4, 1,2,3,4,5, 4,5,6,7,8, 1,2,3,4,5,}, b={1,2,3,4, ...

Проверте матрицу - C++
Помогите подправить программу,чтобы выводило матрицу,согласно задаче. Задача:Задана матрица D(4,4).Определить максимальный среди...

ПРОВЕРТЕ НА ОШИБКИ ПЛЗ! - C++
была такая задача: Составить программу, которая для заданного начального каталогов файловой системы вычисляет общее количество строк в...

проверте где ошибка в mergeSort - C++
main.cpp #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;iomanip&gt; #include &quot;merge_sort.h&quot; #include...

Проверте, пожалуйста, правильность программного кода - C++
#include &quot;stdafx.h&quot; #include &quot;string.h&quot; #include &quot;iostream&quot; using namespace std; int main() { char text; char*slova; ...

Создал прогу в С++, я нуб, проверте меня, и поставте оценку - C++
Дан целочисленный массив A(n) с элементами, сгенерированными случайными числами в диапазоне (-20, 20). Требуется: Отсортировать по убыванию...

18
Lord_Voodoo
Супер-модератор
8594 / 2209 / 61
Регистрация: 07.03.2007
Сообщений: 10,967
Завершенные тесты: 1
22.02.2011, 23:30 #2
kaffein, а потрассировать программу слабо?
0
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
22.02.2011, 23:36  [ТС] #3
извините за ламерский вопрос, но что ето значит?
0
silent_1991
22.02.2011, 23:37
  #4

Не по теме:

kaffein, извините за резкий ответ, но вы что, в гугле забанены?

0
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
22.02.2011, 23:48  [ТС] #5
причём здесь гугл. у меня програма коректно не работает и я не могу найти ошибку. мне что нужно код в поисковике прописать???
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
22.02.2011, 23:49 #6
kaffein, трассировка.
0
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
22.02.2011, 23:54  [ТС] #7
по теме кто-то может ответить????
0
ping_rulezzz
26 / 26 / 4
Регистрация: 18.02.2011
Сообщений: 51
23.02.2011, 00:01 #8
Поставьте брейк поинт в начале проги, тыкаем f5, затем f10/f11. и смотрим пошагово как выполняется программа. Сей процесс - пошаговый прогон - называется трассировка.
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
23.02.2011, 00:04 #9
ping_rulezzz, зачем такие сложности, можно сразу f10/f11 - начнётся трассировка)))
1
ping_rulezzz
26 / 26 / 4
Регистрация: 18.02.2011
Сообщений: 51
23.02.2011, 00:06 #10
ну да) ... привычка видать)
0
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
23.02.2011, 00:11  [ТС] #11
а..... ясно! ето я знаю! и етим пользовался, но, в принципе, так и не понял в чём проблема
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
23.02.2011, 00:14 #12
Вы хоть скажите, что вас не устраивает, где происходит ошибка?
0
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
23.02.2011, 00:26  [ТС] #13
когда я запускаю програму, заполнил список, вишло на исполнение функции dod вискакивает какое-то окно. беру ету функцию в /*......*/ и питаюсь проверить следующую функцию но и там что-то выскакивает.
возьмите попробуйте откомпелировать.
0
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
27.02.2011, 23:04  [ТС] #14
вот поработал над прогой но все одно не работает посмотрите в чём проблема, а то я всю голову уже сломал
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
#include "stdafx.h"
#include <time.h> 
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
 
        struct list
        {
            char name [20];
            char secondname[20];
            list* next;
            list* prev;
        };
list *clear( list*h )
{
    if(!h) return NULL;
    list*n;
    for(n=h->next;n;n=n->next )
    {
        if(h) free(h);
            h=n;
    }
    if(h) free (h);
    return 0;
}
 
list* dod(list* first)
        {
            list* nov;
            nov = (list*) malloc(sizeof(list));
            if(!nov){
                printf("can not allocate memory");
                return NULL;
            }
            printf("vvedid dannue");
            scanf("%s,%s",&(nov->name),&(nov->secondname));
            nov->next=first;
            first=nov;
            return first;
        }
list* poc( list* head, int num )
        {
            if (!head)
                return NULL;
            list*n = head;
            for( int i=1; (i<num) && (n->next); i++, n=n->next);
            return n;
        }
list* per(list*p)
{   list*n=p;
    if(p->next)p->next=p->prev;
    n->prev=n->next;
    return p;
}
list* dob(list*vuz_el)
{
    list* n;
    n=(list*) malloc(sizeof(list));
 
if(!vuz_el) return n;
 
if(vuz_el->next) 
    n->next=vuz_el->next;
vuz_el->next=n;
return n;
}
void print(list* first)
{
    list*wwe;
    wwe=first;
    while(wwe)
    {
        printf("%s,%s\n",wwe->name,wwe->secondname);
        wwe=wwe->next;
    
    }
 
 
}
void fill_list(list*p)
{
    for( ;p;p=p->next)
    {
        printf(" enter name of student\n");
            scanf("%s",&(p->name));
 
        printf("enter secondname of student\n");
            scanf("%s",&(p->secondname));
        
    }
}
list *AddL(list *p)
{
list *n = new list;
memset( n, 0, sizeof(list) );
if(!p) return n;
 
n->next = p->next;
n->prev = p;
p->next = n;
 
return n;
}
 
    
int main ()
 
 
{    
    int q;      
    printf("vvedit kilkist student\n");
    scanf("%d",&q);
 
    list *head, *tail;
    head = AddL(NULL);
    tail = AddL(AddL( head ));
 
    for(list*p=head;q>1;q--)
        p=AddL(p);
 
 
 
    for(list*p = head; p; p = p->next)
        fill_list(p);
    
    list fx;
    list* o=poc( head, 2 );
    list* z=dob(&fx);
    list* r=dod(&fx);
    list* s=per(&fx);
 
 
    list* p=clear(&fx);
    print(head);
        
        int n, i, k,sum=0;
        printf("vvedit rozmir masuva\n");
        scanf("%d",&n);
        int *a=new int [n];
                srand(time(NULL));
        for (i=0; i<n; i++)
               a[i]=rand()%20; //заполнение массива случайными числами от 0 до 19
      
        for (k=0; k<n; k++)
                sum+=a[k];
                printf("sum=%i",sum);   
        delete [] a;
        return sum;
0
ping_rulezzz
26 / 26 / 4
Регистрация: 18.02.2011
Сообщений: 51
28.02.2011, 00:37 #15
зачем этот цикл?
for(list*p = head; p; p = p->next)
если вы его же делает в самой функции fill_list

функция dob работает неправильно ( как мне кажется), тоже самое и с функцией dod (в ней никак не обрабатывается list->prev
на счёт функции per не могу сказать. т.к. пока не понял что именно вы хотели сделай этой функцией.

по поводу того, что у вас вылетает ошибка (все предыдущие функции проходят, но всё же мне кажется делают они не то, что нужно) - это происходит потому, что вы пытаетесь очистить неправильно сформированный список. поставьте брейкпоинт в функции clear и протрассируйте. сама функция clear работает правильно - можете убедиться, передав в неё свой первоначальный список head;

Добавлено через 1 минуту
только print(head) после этого не делайте
1
28.02.2011, 00:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2011, 00:37
Привет! Вот еще темы с ответами:

Продолжить програму - C++
В среде С++ реализовать консольное приложение использующее заданный фрагмент кода. Описания переменных добавить самостоятельно. ...

решить програму - C++
1.Заменить в слове все гласные о на а, а буквы а – на о 2.Составить программу для вычеркивания из слова X каждой третьей буквы

отладить програму - C++
дана такая задача программы &quot;Данный символьный файл. Учтем, что длина слов не превышает двадцати символов, определить, сколько в файле...

Написать програму в С++ - C++
Ввести одномерный статический массив из k чисел. Вывести на экран ис-ходные данные и полученный результат в виде двух списков в...


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

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

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