PDA

View Full Version : مشکل در حذف و نمایش پشته



bazardeh
یک شنبه 07 آذر 1389, 21:41 عصر
با سلام
برنامه زیر با نمایش یک منو درج و حذف و نمایش را انجام می دهد و هیچ خطایی ندارد ولی در نمایش اعداد خروجی غلط و حذف ناقص می باشد ولی درج به نظر من درست است لطفاً کمکم کنید :گریه:



#include<iostream.h>
#include<conio.h>
#include"stdlib.h"
void push(int[],int*, int);
void pop(int[],int*, int);
void display(int[],int*, int);
int main()
{
int x;
int t=0;
//cout<<"Enter Number For Input To Array=";
//cin>>d;
//int *arr;
//arr=new int[d];
int arr[6];
while(1){
cout<<"\n1-push\n2-POP\n3-Display\n4-Exit\n";
cout<<"Enter Number = ";
cin>>x;
switch (x){
case 1: push(arr,&t,6); break;
case 2:pop (arr,&t,6); break;
case 3:display(arr,&t,6); break;
case 4:exit(1); break;
default:cout<<"Error"<<endl;
}
}
return 0;
}
//*************************************
void push(int a[],int *top,int y)
{
if((*top+1)<y && *top != 0)
{
cout<<"Enter Number In Poshte = ";
cin>>a[*top+1];
*top=*top+1;
}
else if(*top==0)
{
cout<<"Enter Number In Poshte =";
cin>>a[*top+1];
*top=*top+1;
}
else cout<<"Poshte Is Full";
}
//*******************************************
void pop(int a[],int *top,int y)
{



}
//******************************************
void display(int a[],int *top,int y)
{
int x=0;
while(a[x]!= 0)
{
cout<<a[x]<<"\n";
x++;
}
}


مشکل کجاست

Topcoding
یک شنبه 07 آذر 1389, 23:27 عصر
با سلام
برنامه زیر با نمایش یک منو درج و حذف و نمایش را انجام می دهد و هیچ خطایی ندارد ولی در نمایش اعداد خروجی غلط و حذف ناقص می باشد ولی درج به نظر من درست است لطفاً کمکم کنید :گریه:



#include<iostream.h>
#include<conio.h>
#include"stdlib.h"
void push(int[],int*, int);
void pop(int[],int*, int);
void display(int[],int*, int);
int main()
{
int x;
int t=0;
//cout<<"Enter Number For Input To Array=";
//cin>>d;
//int *arr;
//arr=new int[d];
int arr[6];
while(1){
cout<<"\n1-push\n2-POP\n3-Display\n4-Exit\n";
cout<<"Enter Number = ";
cin>>x;
switch (x){
case 1: push(arr,&t,6); break;
case 2:pop (arr,&t,6); break;
case 3:display(arr,&t,6); break;
case 4:exit(1); break;
default:cout<<"Error"<<endl;
}
}
return 0;
}
//*************************************
void push(int a[],int *top,int y)
{
if((*top+1)<y && *top != 0)
{
cout<<"Enter Number In Poshte = ";
cin>>a[*top+1];
*top=*top+1;
}
else if(*top==0)
{
cout<<"Enter Number In Poshte =";
cin>>a[*top+1];
*top=*top+1;
}
else cout<<"Poshte Is Full";
}
//*******************************************
void pop(int a[],int *top,int y)
{



}
//******************************************
void display(int a[],int *top,int y)
{
int x=0;
while(a[x]!= 0)
{
cout<<a[x]<<"\n";
x++;
}
}

مشکل کجاست
سلام دوست عزیز
شما هر موقع که آرایه یا متغیری را تعریف می کنید سعی کنید مقدار اولیه به آن اختصاص دهید وگرنه با مقدار زباله پر می شود و بعدا که حواستان نباشد و باآن متغیرکار کنید بخصوص در عملیات محاسباتی یا در نمایش آن دچار مشکل خواهید شد پس شما در اینجا آرایه

int arr[6];
را با مقدار صفر پر کنید(یه حلقه for که از 0 تا 5 تک تک آرایه arr را با 0 پر می کند)
و در تابع push به جای کد
cin>>a[*top+1]; از کد
cin>>a[*top] استفاده کنید
شما قبل از اعمال تغییرات برنامه ات را خط به خط Trace کن تا اشکال کارت را بهتر متوجه بشوی
موفق باشید

bazardeh
دوشنبه 08 آذر 1389, 22:07 عصر
با سلام خدمت دوست عزیزم Topcoding :
for رو اضافه کردم اما نشد


#include<iostream.h>
#include<conio.h>
#include"stdlib.h"
void push(int[],int*, int);
void pop(int[],int*, int);
void display(int[],int*, int);
int main()
{
int x;
int t=0;
//cout<<"Enter Number For Input To Array=";
//cin>>d;
//int *arr;
//arr=new int[d];
int arr[6];
//for (int i=0;i<6;i++)
//arr[i]=0;
while(1){
cout<<"\n1-push\n2-POP\n3-Display\n4-Exit\n";
cout<<"Enter Number = ";
cin>>x;
switch (x){
case 1: push(arr,&t,6); break;
case 2:pop (arr,&t,6); break;
case 3:display(arr,&t,6); break;
case 4:exit(1); break;
default:cout<<"Error"<<endl;
}
}
return 0;
}
//*************************************
void push(int a[],int *top,int y)
{
if((*top+1)<y && *top != 0)
{
cout<<"Enter Number In Poshte = ";
cin>>a[*top+1];
*top=*top+1;
}
else if(*top==0)
{
cout<<"Enter Number In Poshte =";
cin>>a[*top+1];
*top=*top+1;
}
else cout<<"Poshte Is Full";
}
//*******************************************
void pop(int a[],int *top,int y)
{



}
//******************************************
void display(int a[],int *top,int y)
{
int x=0;
while(a[x]!= 0)
{
cout<<a[x]<<"\n";
x++;
}
}

Topcoding
سه شنبه 09 آذر 1389, 00:09 صبح
درسته ولی شما تغییراتی که در تابع push گفتم را اعمال نکردید

bazardeh
سه شنبه 09 آذر 1389, 19:54 عصر
#include<iostream.h>
#include<conio.h>
#include"stdlib.h"
void push(int[],int*, int);
void pop(int[],int*, int);
void display(int[],int*, int);
int main()
{
int x;
int t=0;
int arr[6];
for (int i=0;i<=5;i++) // =0
arr[i]=0;
while(1){
cout<<"\n1-push\n2-POP\n3-Display\n4-Exit\n";
cout<<"Enter Number = ";
cin>>x;
switch (x){
case 1: push(arr,&t,4); break;
case 2:pop (arr,&t,4); break;
case 3:display(arr,&t,4); break;
case 4:exit(1); break;
default:cout<<"Error"<<endl;
}
}
return 0;
}
//*************************************
void push(int a[],int *top,int y)
{
if((*top+1)<y && *top != 0)
{
cout<<"Enter Number In Poshte = ";
cin>>a[*top];
*top=*top+1;
}
else if(*top==0)
{
cout<<"Enter Number In Poshte =";
cin>>a[*top+1];
*top=*top+1;
}
else cout<<"Poshte Is Full";
}
//*******************************************
void pop(int a[],int *top,int y)
{
}
//******************************************
void display(int a[],int *top,int y)
{
int x=0;
while(a[x]!= 0)
{
cout<<a[x]<<"\n";
x++;
}
}


سلام
وقتی مقدار آرایه ها رو با حلقه ی فر صفر مقدار دهی می کنم دیگه گزینه سوم من کاری انجام نمی دهد
مشکل کجاست مشکل کجاست:متفکر:

sh4mid
سه شنبه 09 آذر 1389, 20:34 عصر
تابع push مشکل داره




else if(*top==0)
{
cout<<"Enter Number In Poshte =";
cin>>a[*top];
//cin>>a[*top+1];
*top=*top+1;
}

bazardeh
سه شنبه 09 آذر 1389, 21:54 عصر
دستتون درد نکنه ببخشید حواسم نبود