c++ - dynamic stack , error while compiling , dev compiler and g++ -


this dynamic stack , , there functions 1 till 6 , , 0 exit , when choose 6 ,it's shown error "segmentation fault (core dumped) " , have g++ compiler , i'm compiling in , when use codeblocks works , can `

#include <stdlib.h> #include <iostream> using namespace std; const int n=100; struct stack{     int a[n];     int count; }; //создание стека void creation(stack *p) {     p->count=0; } //проверка стека на пустоту int full(stack *p) {     if (p->count==0){         return 1;     }     else if (p->count==n) {         return -1;     }     else {         return 0;     } } //добавление элемента void add(stack *p) {     int value;     cout<<"Введите элемент > "; cin>>value;     p->a[p->count]=value;     p->count++; } //удаление элемента void delete(stack *p) {     p->count--; } //вывод верхнего элемента int top(stack *p) {     return p->a[p->count-1]; } //размер стека int size(stack *p) {     return p->count; } int show(stack *p){     int i=0;     while(i!=p->count){         cout<<p->a[i]<<endl;         i++;     } }  void transposition(stack *p){     int temp,i = 0;     int a[p->count];     int max,min = p->a[0];     int max_pos,min_pos;     while(i!=p->count){         a[i] = p->a[i];         if(p->a[i] > max){             max = p->a[i];             max_pos = i;         }         i++;     }     int j=0;     while(j!=p->count){         if(p->a[j] < min){             min = p->a[j];             min_pos = j;         }         j++;     }     temp = p->a[max_pos];     p->a[max_pos] = p->a[min_pos];     p->a[min_pos] = temp;  } //главная функция int main() { setlocale(lc_all,"russian"); stack s; creation(&s); char number; {   cout<<"1. Добавить элемент"<<endl;     cout<<"2. Удалить элемент"<<endl;     cout<<"3. Вывести верхний элемент"<<endl;     cout<<"4. Узнать размер стека"<<endl;     cout<<"5. Вывесьте все элементе стека"<<endl;     cout<<"6. Перестановка max и min элемента стека"<<endl;     cout<<"0. Выйти"<<endl;     cout<<"Номер команды > "; cin>>number; switch (number) {     case '1':         if (full(&s)==-1){             cout<<endl<<"Стек заполнен\n\n";         }         else{         add(&s);         cout<<endl<<"Элемент добавлен в стек\n\n";         }     break; //-----------------------------------------------     case '2':         if (full(&s)==1) {             cout<<endl<<"Стек пуст\n\n";         }         else{         delete(&s);         cout<<endl<<"Элемент удален из стека\n\n";         }     break; //-----------------------------------------------     case '3':         if (full(&s)==1) {             cout<<endl<<"Стек пуст\n\n";         }         else {             cout<<"\nВерхний элемент: "<<top(&s)<<"\n\n";         }     break; //-----------------------------------------------     case '4':         if (full(&s)==1){             cout<<endl<<"Стек пуст\n\n";         }         else{             cout<<"\nРазмер стека: "<<size(&s)<<"\n\n";         }     break; //-----------------------------------------------     case '5':         if (full(&s)==1){             cout<<endl<<"Стек пуст\n\n";             }         else{                 show(&s);             }     break; //-----------------------------------------------     case '6':         if (full(&s)==1){             cout<<endl<<"Стек пуст\n\n";             }         else {                 transposition(&s);             }     break; //----------------------------------------------- case '0': break;     default:         cout<<endl<<"Команда не определена\n\n";     break; } } while(number!='0');     system("pause"); } 

`

the easy way solve such problems building program in gcc / g++ -g switch (includes debugging symbols) , running program through gdb (gdb <path program executable>, when opens type run). when crashes shown file name , line on crash occured.


Comments

Popular posts from this blog

google chrome - Developer tools - How to inspect the elements which are added momentarily (by JQuery)? -

angularjs - Showing an empty as first option in select tag -

php - Cloud9 cloud IDE and CakePHP -