PDA

View Full Version : مشکل در تخصیص حافظه



paradise_human
جمعه 10 اردیبهشت 1389, 23:41 عصر
سلام.
فکر میکنم این برنامه توی تخصیص حافظه مشکل داره !
کسی میتونه مشکلشو برام رفع کنه ؟

#include <iostream>
using namespace std;
class Array
{
public:
void make();
Array(int);
~Array();
void input();
void output();
void sort();
int search(float);
private:
float *a;
int size;
};
void Array::make()
{
a=new float [size];
if(a==NULL)
size=0;
}
Array::Array(int n=0)
{
size=n;
make();
}
Array::~Array()
{delete []a;}
void Array::input()
{for(int i=0;i<size;i++)
cin>>a[i];
}
void Array::output()
{for(int i=0;i<size;i++)
cout<<a[i]<<" ";
}
void Array::sort()
{
int i,j;
float t;
for(i=0;i<size-1;i++)
for(j=i+1;j<size;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
int Array::search(float key)
{
for(int i=0;i<size;i++)
if(a[i]==key)
return i;
return -1;
}
void main()
{
int n,t;
float k;
Array x;
Array y;
cin>>n;
y=Array(n);
x.input();
x.sort();
x.output();
cin>>k;
t=y.search(k);
if(t!=-1)
cout<<k<<"is at index"<<t;
else
cout<<k<<"is not in Array";
}





ممنون.

paradise_human
شنبه 11 اردیبهشت 1389, 22:21 عصر
کسی نتونست کمک کنه ؟
این برنامه error سینتکس نمیگره ولی موقع اجرا خطا میده ...
کسی میتونه مشکلشو برطرف کنه ؟

tdkhakpur
شنبه 11 اردیبهشت 1389, 23:26 عصر
نمیدانم برای چی این کار را کردید ولی شما از کلاسی تقاضای پردازش کردید که اجرا و خاتمه پیدا میکند و حافظه به هنگام خاتمه را از دست میدهد یعنی کد زیر اشتباه قید شده است.


void main()
{
int n,t;
float k;
Array x;
Array y;
cin>>n;
y=Array(n); // اینجا اشتباه
x.input();
x.sort();
x.output();

به همین خاطر کد بصورت زیر اصلاح میشود


void main()
{
int n,t;
float k;
//Array x; حذف شود
Array y; اگر کاری با این کلاس هم نداردی حذفش کنید
cin>>n;
//y=Array(n); حدف شود
Array x(n); اضاف شود
x.input();
x.sort();
x.output();