PDA

View Full Version : مشکل در ارسال کل ساختمان به تابع



بهزادانلاین
چهارشنبه 16 آذر 1390, 00:21 صبح
با سلام مشکل تکه کد زیر به نظر شما چیست ؟

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

struct std{
char name [20];
int no;
};
struct std Enter();
void list(struct std);
int main()
{
struct std Enter();
list(Enter());
getch();
return 0;
}
//enter data
struct std Enter()
{
struct std y[5];
for(int i=0;i<5;i++)
{
printf("\nEnter Student name[%d]:",i);
scanf("%s",&y[i].name);
printf("\nEnter Student No[%d]:",i);
scanf("%d",&y[i].no);
}
return y[];
}//end enter data

void list(struct std x[])
{
printf("\n\t%s",x[j].name);

}

}

BeginnerProgrammer
چهارشنبه 16 آذر 1390, 01:17 صبح
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

typedef struct stD{
char name [20];
int no;
};
stD* Enter(stD*);
void list(stD*);
int main()
{
//struct stD Enter();
stD y[2];
stD* f=Enter(y);
list(f);
getch();
return 0;
}
//enter data
stD* Enter(stD* y)
{
stD *p;
char c[20];int num;
for(int i=0;i<2;i++)
{
printf("\nEnter Student name[%d]:",i);
scanf("%s",y[i].name);
printf("\nEnter Student No[%d]:",i);
scanf("%d",&y[i].no);
}
p=&y[0];
return p;
}//end enter data

void list(stD* x)
{
int j;
for(int j=0;j<2;j++)
printf("\n\t%s",x[j].name);

}

این کد اصلاح شده س ، اشکالات: std خودش جزو namespaceهاس پس اسم کلاسو باید عوض کنید.
تابع لیست هم که از j استفاده کردین در حالی که یه همچین متغیری اصلا وجود نداره

بهزادانلاین
چهارشنبه 16 آذر 1390, 15:03 عصر
با تشکر از لطفتون دوست عزیز
کدی که من بالا قرار دادم به صورت تک متغیره جواب میده و وقتی به صورت ارایه نوشتم به return y[];
خطا میده و در ضمن نمیخواهم با اشاره گر بنویسم ممنون میشم کمکم کنی

BeginnerProgrammer
چهارشنبه 16 آذر 1390, 18:45 عصر
از return y[] ارور میگیره چون خروجی تابعو کلاس تعریف کردی در حالی که y[] یک اشاره گر از کلاسه.
تو سی++ امکان اینکه خروجی یه تابعو مثلا اینجوری stD[] تعریف کنید وجود نداره بنابراین مجبوری از اشاره گرها استفاده کنی. که دیگه از دستور return y; هم ارور نمیگیره .اما ورودی توابع میتونی به همون صورتی که تو کد خودتون تعریف کردید ، تعریف کنید.