ورود

View Full Version : آرایه ای از کلمات



ICEMAN
پنج شنبه 29 آذر 1386, 21:26 عصر
سلام ...
برای اینکه ارایه ای از چند تا اسم داشته باشیم میشه یا یه Array Pointer تعریف کرد یا از آرایه دو بعدی استفاده کرد .
مثلا :


char ch[5][10];

یعنی 5 تا اسم با طول 10 .
حالا چطور میشه برای داخل این آرایه از ورودی مقدار ریخت (یعنی کاربر اسم ها رو خودش بده)
و چطور میشه اونا رو در خروجی چاپ کرد .

ممنون

emad_67
جمعه 30 آذر 1386, 16:21 عصر
باید اینجوری بنویسی:


void main()
{
char a[5][10];
cin>>a[0];
cout<<a[0]<<endl;
}
هر سطر آرایه قابلیت نگه داشتن رشته ای به طول 10 کاراکتر رو داره پس میشه با cin کردن بعد اول مقدار رو در اون قرار داد. توی اینجا رشته ورودی رو در سطر 0 ام از آرایه قرار میده.

lord_akinak
جمعه 30 آذر 1386, 17:39 عصر
امیدوارم بدرد بخوره ...


#include<iostream>
typedef const char* xString;
xString xDuplicateString( xString src ) {
size_t len = strlen( src ) + 1;
char* string = newchar[len];
memcpy( string , src , sizeof(char) * len );
return string;
}
int main() {
int count = 0;
std::cout << "Please Enter Names Count:";
std::cin >> count;
xString *arr = new xString[count];
for (int i = 0; i < count; i++) {
char inp[10];
std::cout << "N#" << i << " :";
std::cin >> inp;
arr[i] = xDuplicateString(inp);
}
for (int i = 0; i < count; i++) {
std::cout << "N#" << i << " : " << arr[i] << "\n";
}
return 0;
}

emad_67
جمعه 30 آذر 1386, 18:06 عصر
امیدوارم بدرد بخوره ...برنامه شما به صورت ساده تر به این شکل میشه نوشت:


#include<iostream.h>
void main()
{
int count;
cout<<"Please Enter Names Count:";
cin>>count;
char **arr=new char *[count];
for (int i = 0; i < count; i++)
{
char *inp=new char[10];
cout << "N#" << i << " :";
cin >> inp;
arr[i] =inp;
}
for (i = 0; i < count; i++)
cout << "N#" << i << " : " << arr[i] << "\n";
}
که همون روش استفاده از آرایه های اشاره گر میشه.

lord_akinak
جمعه 30 آذر 1386, 18:58 عصر
برنامه شما به صورت ساده تر به این شکل میشه نوشت:

جالب بود... انگار این پست بیشتر بدرد خودم خورد ...

ICEMAN
شنبه 01 دی 1386, 09:21 صبح
ممنون دوستان مشکلم حل شد ولی ...


char **arr=new char *[count];


میشه در مورد این خط کد کمی بیشتر توضیح بدید چرا دوتا ** گذاشتید

emad_67
شنبه 01 دی 1386, 21:24 عصر
ممنون دوستان مشکلم حل شد ولی ...


char **arr=new char *[count];

میشه در مورد این خط کد کمی بیشتر توضیح بدید چرا دوتا ** گذاشتیدبه طور مثال وقتی مینویسی:


char *arr=new char [count];
یه آرایه یک بعدی که هر خونه اون یک کاراکتر هست ایجاد میکنه و آدرس اول اونو در متغیر arr قرار میده یعنی اینکه arr متغیری از نوع اشاره گر به char هست ولی وقتی مینویسیم arr** یعنی arr به خونه ای داره اشاره میکنه که اون خونه خودش اشاره گری به یک خونه char هست و این موضوع برای *** هم صادقه در کل آرایه ای که از این دستور ایجاد میشه:


char **arr=new char *[count];
آرایه ای هست که هر خونه اون یک اشاره گر به char هستند. در واقع مثل این میمونه که بنویسی:


char *a[10];
ولی چون اینجا تعداد خونه های آرایه رو از ورودی دریافت کردیم این آرایه رو به صورت داینامیک ایجاد کردم.

microsoftabed
جمعه 07 دی 1386, 15:36 عصر
void main()
{
char a[5][10];
cin>>a[0];
cout<<a[0]<<endl;
}

emad_67
جمعه 07 دی 1386, 20:14 عصر
void main()
{
char a[5][10];
cin>>a[0];
cout<<a[0]<<endl;
}خوب این که همون کدی هست که من در ابتدا نوشتم.
اصلا این سوال بود یا جواب؟