PDA

View Full Version : سوال: خطا در اجرای برنامه



maryamgol
سه شنبه 22 آذر 1390, 11:58 صبح
#include <iostream.h>
#include <conio.h>
#define true 1
#define false 0
#define lenght 5
typedef int bool;
bool remove (float a[],int &n,float x)
{
int i=0;
do
{
if (a[i]==x)
{
for (int j=i;j<n-1;j++)
a[i]=a[i+1];
n--;
return true;
}
}
while(i<n);
return false;
}
int main()
{
float a[lenght];
int n;
float x;
cout<<"plese enter five number:"<<'\n';
for(int i=0;i<lenght;i++)
cin>>a[i];
cout<<"enter x=";
cin>>x;
cout<<"enter n=";
cin>>n;

cout<<"result is"<<remove(a,n,x)<<endl;
return 0;
}


برنامه بالا اگر عدد مورد نظر یافت شود برنامه کار می کند ولی اگر عدد مورد نظر یافت نشود برنامه هنگ می کند. در حقیقت return false مشل داره.

chris66001
سه شنبه 22 آذر 1390, 13:18 عصر
تابع كلا مشكل داره اين برنامه مثل جستجوي دودويي ميمونه از اون سورس استفاده كنيد بجاي نوع تابع كه void هست شما Bool و به جاي رشته Found هم True و ....

يه سوال فني اين n الان داره كار شمارنده حلقه تابع رو انجام ميده ؟؟؟ (اينو جواب بدي شايد بتونم كمكت كنم)

الان اين برنامه اگر عدد رو پيدا كنه يكدونه به j اضافه ميكنه و بعد به جاي عدد پيدا شده عدد بعدي رو جايگزين ميكنه يكدونه از n كم ميكنه كه در آخر عدد پيدا شده حذف شده و حلقه تا انديس 3 ميره و جلوتر نميره و هر سري هم دستور True رو اجرا ميكنه . چرا؟


for (int j=i;j<=n-1;j++)
a[i]=a[i+1];
n--;