ورود

View Full Version : سوال: محدودیت در تعریف استراکت



immortalboy
یک شنبه 03 بهمن 1389, 15:36 عصر
سلام دوستان برنامه‌ای نوشتم که از استراکت زیر استفاده می‌کنه ولی نمی‌تونم آرایه info رو بیشتر از 100 تعریف کنم خطا می‌گیره. و اگر بخوام یک استراکت دیگه هم تعریف کنم که این عدد کمتر می‌شه.



struct book {
char name[50];
char publication[50];
char isbn[15];
char writer_1[50];
char writer_2[50];
char id[215];
}info[100];

ممنون می‌شم اگه کمکم کنید اگه بشه می‌خوام به صورت نامحدود اطلاعات رو دریافت کنم.

Salar Ashgi
یک شنبه 03 بهمن 1389, 19:47 عصر
خوب شما Type آرایه رو مشخص نکردید !
اصلاح شده کد :


#include <iostream>
#include <conio>
struct book {
char name[50];
char publication[50];
char isbn[15];
char writer_1[50];
char writer_2[50];
char id[215];
char info[100];
};
int main(){
getch();
}

اگر باز سوال خاصی هست ، مطرح کنید ./

immortalboy
یک شنبه 03 بهمن 1389, 20:26 عصر
خوب شما Type آرایه رو مشخص نکردید !
اصلاح شده کد :


#include <iostream>
#include <conio>
struct book {
char name[50];
char publication[50];
char isbn[15];
char writer_1[50];
char writer_2[50];
char id[215];
char info[100];
};
int main(){
getch();
}
اگر باز سوال خاصی هست ، مطرح کنید ./

نه سالار جان کد من درسته info متغیر استراکته که اون هم از نوع آرایه‌ست. نمی‌دونم منظورم رو متوجه شدید یا نه!؟
به کد پایین نگاه کنید احتمالا متوجه می‌شید.





struct book {
char name[50];
char publication[50];
char isbn[15];
char writer_1[50];
char writer_2[50];
char id[215];
};
struct book info[100];
همینجوری که توی کد بالا می‌بینید استراکت رو تعریف کردم همراه با عناصر ساختمان که از نام و ... تشکیل شده و در ادامه یک متغیر از نوع استراکت به نام info تعریف کردم که شامل موارد بالا می‌شه. حالا این info رو نمی‌تونم بیشتر از 100 بگیرم. یعنی نمی‌خوام محدود باشه.

Salar Ashgi
یک شنبه 03 بهمن 1389, 22:24 عصر
ببینید آخه شما طوری سوالتون رو مطرح کردید که اینطور برداشت میشه که میخواین info بعنوان یک نوع داده ای Struct باشه ؛
در ضمن وقتی شما متغیر از نوع یک Struct تعریف می کنید دیگه لازم نیست خود اسم Struct هم بیاد ، که البته اینجا حتما هدفتون
آرایه ای از یک Struct هست ، حالا بر گردیم به مساله ، وقتی آرایه رو درست ایجاد کنید ، اصلا مشکلی پیش نمیاد . حتی من برنامه رو
طوری تغییر دادم که بشه یک آرایه پویا از نوع یک Struct تعریف کرد و هیچ مشکلی بوجود نمیاد ، کد مورد نظر :


#include <iostream>
#include <conio>
struct book {
char name[50];
char publication[50];
char isbn[15];
char writer_1[50];
char writer_2[50];
char id[215];
};
int main(){
int n;
cout<<"Enter len :\n";
cin>>n;
book *a = new book[n];
cout<<"OK\n";
getch();
}

نتیجه :
http://salarcpp.persiangig.com/new_folder_4/pic123.png

immortalboy
دوشنبه 04 بهمن 1389, 07:49 صبح
الان با این کد چه جوری می‌شه به عناصر استراکت دسترسی پیدا کرد؟ مثلا فیلد نام رو چه جوری باید پر کنم؟

Salar Ashgi
دوشنبه 04 بهمن 1389, 08:32 صبح
خیلی ساده :


#include <iostream>
#include <conio>
struct book {
char name[50];
char publication[50];
char isbn[15];
char writer_1[50];
char writer_2[50];
char id[215];
};
int main(){
int n;
cout<<"Enter len :\n";
cin>>n;
book *a = new book[n];
//cout<<"OK\n";
strcpy(a[0].name,"Reza");
cout<<a[0].name<<endl;
getch();
}