PDA

View Full Version : حرفه ای: تابع دوست



suraty
یک شنبه 24 مهر 1390, 19:51 عصر
با سلام
این برنامه قرار است آرایه ی پویای 10 عنصری گرفته شده از کاربر را با استفاده از تابع دوست مرتب کند. اما برنامه یک خطا دارد خواهشمندم اگر می توانید برایم رفع خطا کنید:

#include"iostream.h"
#include"conio.h"
class class1{
int *p;
public:
class1(){
p=new int[10];
for(int i=0;i<10;i++)
*(p+i)=0;
}
void input(){
for(int i=0;i<10;i++)
cin>>*(p+i);
}
void print(){
for(int i=0;i<10;i++)
cout<<*(p+i)<<" ";
}
friend void fun(class1 ob);
};
void fun(class1 ob){
int i,j,t;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(ob.*(p+j)>ob.*(p+j+1)){
t=ob.*(p+j);
ob.*(p+j)=ob.*(p+j+1);
ob.*(p+j+1)=t; }
}
int main(){
class1 ob1;
ob1.input();
fun(ob1);
ob1.print();
return 0;
}

حامد مصافی
یک شنبه 24 مهر 1390, 22:51 عصر
متغیر p در داخل کلاس تعریف شده است و خارج از آن قابل دسترسی نیست.

suraty
پنج شنبه 28 مهر 1390, 16:15 عصر
سلام
اما تابع fun دوست class1 است که می تواند از داده های اختصاصی کلاس استفاده نماید.
به هر حال من برنامه را به شکل زیر امتحان کردم و متغیر p را به صورت عمومی تعریف نمودم، دیگر خطا نداشت اما مشکل جدید در مرتب سازی آرایه است.
مثلا من اعداد زیر را به آرایه دادم
9-8-7-6-5-4-3-2-1-0
و به صورت زیر برگرداند
8-7-6-5-4-3-2-1-0-0
کد برنامه:
#include"iostream.h"
#include"conio.h"
class class1{
public:
int *p;
class1(){
p=new int[10];
p[10]=0;
}
void input(){
for(int i=0;i<10;i++)
cin>>*(p+i);
}
void print(){
for(int i=0;i<10;i++)
cout<<*(p+i)<<" ";
}
friend void fun(class1 ob);
};
void fun(class1 ob){
int i,j,t;
for(i=0;i<10;i++)
for(j=0;j<10;j++){
if(*(ob.p+j)>*(ob.p+j+1)){
t=*(ob.p+j);
*(ob.p+j)=*(ob.p+j+1);
*(ob.p+j+1)=t; }
} }
int main(){
class1 ob1;
ob1.input();
fun(ob1);
ob1.print();
return 0;
}