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

Стек (найти ошибку в коде) - C++

Восстановить пароль Регистрация
 
Programemrok
0 / 0 / 0
Регистрация: 17.09.2013
Сообщений: 13
20.09.2013, 04:38     Стек (найти ошибку в коде) #1
Такая проблема: создаю стек, вычисляю количество елементов между минимальным и максималым, удаляю стек, пытаюсь создать стек по-новой выдаёт ошибку.


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
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
 
int infa;
struct tstk 
 {  int    inf; 
    tstk *a;  }   *sp;
 
 
 
int menu();
void Create() ;
tstk *AddStask(tstk *spt, int inf) ;
tstk *DelStackAll(tstk *spt) ;
void viev(tstk *p);
int kol_em(tstk *p);
 
 
 
 
 
    int main() 
{ 
while (true) 
{
 switch (menu())
{
 case 1: Create();    break;
 case 2: {puts("vvedite element"); cin>>infa; sp=AddStask(sp,infa); } ;  break;
 case 3: viev(sp) ;  break;
 case 4: sp=DelStackAll(sp); break;
  case 5: kol_em(sp);    break;
  case 6: return 0;
    default: "Viberite pravilno!";
}
 puts("Press any key to continue"); 
 getch();      system("cls"); 
} 
} 
 
int menu() // 
{
    system("cls");;
 cout << "VIBERITE:" << endl;
 cout << "1. Sozdat stek" << endl;
 cout << "1. dobavit element" << endl;
 cout << "2. Prosmotret stek" << endl;
 cout << "3. Udalit stak" << endl;
 cout << "4. Vucheslit kolichestvo elementov mezdu min i max" << endl;
 cout << "5. Exit" << endl;
 int i;
 cin >> i;
 return i;
}
 
 
 
 
 
 
//
 
tstk *AddStask(tstk *sp, int inf)  
{   tstk *spt=new tstk;
    spt->inf = inf;
    spt->a = sp;
 return spt;  }
 
 
 
tstk *DelStackAll(tstk *sp) 
{    tstk *spt; int inf;
  while(sp != NULL)    {
    spt = sp;
     inf= sp->inf;
      cout << inf << endl;
     sp = sp->a;
   delete spt;            }
 return NULL;   }
 
 
 
 
 
 
 
 
 
void Create() //
{
    int ch;
    puts("vvedite chislo elementov");
    cin >> ch;
    if(sp!=NULL)
        puts("stek uze soderzut elementu");else{
    for(int i=0;i<ch;i++)
        sp=AddStask(sp,rand()%100-50);}
}
void viev(tstk *p)// 
{
    while(p!=NULL)
    {
        cout<< p->inf <<" "<<endl;
        p=p->a;
    } 
}
 
int kol_em(tstk *p) /// думаю проблема тут
{
    int i,max,imax,min,imin,n=0;
    int *ham; if(p==NULL){puts("stack pust"); getch; return 0;}
    while(p!=NULL)
    {
        p=p->a;
        n++;
    }
    ham=new int(n);
    p=sp;
    min=23453;
    max=-23434;
    for(i=0;i<n;i++)
    {
        ham[i]=p->inf;
        p=p->a;
        if(min>ham[i]) {min=ham[i]; imin=i;}
        if(max<ham[i]) {max=ham[i]; imax=i;}
    }
    cout<< "kolihestvo elementov mezdu min i max ="<<abs(imax-imin)<<" "<< max<<" "<<min    <<" "<< imax<<" "<<imin<<endl;
return 1;
}
Миниатюры
Стек (найти ошибку в коде)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2013, 04:38     Стек (найти ошибку в коде)
Посмотрите здесь:

Найти ошибку в коде C++
найти ошибку в коде: C++
C++ Найти ошибку в коде
C++ Динамические структуры. Стек (помогите найти ошибку)
C++ Найти ошибку в коде
Найти ошибку в коде C++
Найти ошибку в коде C++
C++ Найти ошибку в коде

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
20.09.2013, 07:39     Стек (найти ошибку в коде) #2
Цитата Сообщение от Programemrok Посмотреть сообщение
создаю стек
Цитата Сообщение от Programemrok Посмотреть сообщение
вычисляю количество елементов между минимальным и максималым
и зачем вам стек вообще?
Что касается кода, то форматирование хромает, утечки памяти присутствуют, и даже без всего этого код по сути имеет UB
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
20.09.2013, 08:09     Стек (найти ошибку в коде) #3
Цитата Сообщение от Programemrok Посмотреть сообщение
создаю стек,
Цитата Сообщение от Programemrok Посмотреть сообщение
struct tstk
*{ *int * *inf;
* * tstk *a; *} * *sp;
а где методы push pop?

Добавлено через 2 минуты
Цитата Сообщение от Programemrok Посмотреть сообщение
вычисляю количество елементов между минимальным и максималым,
ты со списком не попутал?
в стеке, а равно в очереди, не определяется количество элементов
в стеке "Последний пришел, первый ушел"
в очереди "Первый пришел, первый ушел"
Yandex
Объявления
20.09.2013, 08:09     Стек (найти ошибку в коде)
Ответ Создать тему
Опции темы

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