PDA

View Full Version : مشکل در رشته



hercool
پنج شنبه 09 اردیبهشت 1389, 18:36 عصر
سلام خدمت دوستان
من می خوام تابعی داشته باشم که بتونه چند رشته رو نمایش بده بعد از ورودی
ولی ایراد داره نیم دونم مشکلش چیه ممنون میشم راهنمایی کنید
من 4 تا رشته انتخاب کردم با محدوده 30



/* strcpy example */
# include <iostream>
# include <conio.h>
#include <stdio.h>
#include <string.h>
using namespace std;
char show(char y[][30]);
int main ()
{int a;
char i;

char name[4][30];

cout<<"please enter name :";
{ for(a=0;a<4;a++)
cin>>i;}
show(name);
cout<<show(name);
getch();
return 0;
}
//.......................
char show(char y[][30]){
int a;char i;
for(a=0;a<4;a++)
cout<<"name ["<<a<<"]:"<<i;
return i;
}

Salar Ashgi
پنج شنبه 09 اردیبهشت 1389, 20:20 عصر
اول اینکه اصلا شما آرایه دو بعدی تون رو مقدار دهی نمیکنین ، ثانیا چاپ کردن تون هم اشتباه هستش !

با استفاده از رشته ها :



#include <iostream>
#include <conio>
#include <string>
using namespace std;
int main(){
string a[4];
cout<<"Enter 4 name :\n";
for(int i=0;i<4;i++)
cin>>a[i];
cout<<"==================\n";
for(int i=0;i<4;i++)
cout<<"Name "<<(i+1)<<": "<<a[i]<<endl;
getch();
}


با استفاده از آرایه دو بعدی :



#include <iostream>
#include <conio>
#include <string>
using namespace std;
int main(){
char a[4][10]={"salar","ali","reza","hossain"};
for(int i=0;i<4;i++){
cout<<"Name "<<(i+1)<<": ";
for(int j=0;j<10;j++)
cout<<a[i][j];
cout<<endl;}
getch();
}

hercool
جمعه 10 اردیبهشت 1389, 13:11 عصر
char name[4][30];

من تو این قسمت اول تعداد کارکتر رو مثلا 5 تا کارکت رو همچنین در قسمت دوم طول مجاز کارکتر ها رو مشخص کردم ایا ایرادی داره ؟
دوم من سعی کردم طبق تابع بنویسم اما بازم ایراد داره
ممنون میشم در رابطه با این کد راهنماییم کنید


#include <iostream>
# include <conio.h>
#include <string>
using namespace std;
char show(char* [],int);
int main(){int n;
char* a[4];
{cout<<"Enter 4 name :\n";
for(int i=0;i<4;i++)
cin>>a[i];}
n=4;
cout<<show(a,4);
getch();
}
char show(char* b[],int n){char a;int i;
cout<<"==================\n";
while(i<4){i++;
cout<<"Name "<<(i+1)<<": "<<*b[i]<<endl;}
return *b[i];
}

Salar Ashgi
جمعه 10 اردیبهشت 1389, 13:37 عصر
اولا اینکه چرا با وجود کلاس بسیار انعطاف پذیر String.h ، بجای استفاده از رشته از آرایه دوبعدی

استفاده می کنید ؟؟؟!!!

همون کدی که براتون تو پست دوم گذاشتم رو داخل تابع پیاده سازیش کنین !

کار کردن با *char بجای رشته ها مشکلات بسیاری داره (مشکلات سرریز ، آدرس دهی اشاره گر و ... )

hercool
جمعه 10 اردیبهشت 1389, 13:59 عصر
فعلا درسمون به کلاس ها نرسیده
والله ازش استفاده می کردم
تابع رو کردم بازم ایراد داشت ممنون میشم راهنمایی بفرمایید

hercool
یک شنبه 12 اردیبهشت 1389, 14:08 عصر
این سورسی هست که من نوشتم اما تو خروجی ایراد داره
من رشته ای رو با تعداد 4 تا و محدوده 30 تا مشخص کردم اما مشکل داره کد و نتیجه رو میزارم


#include <iostream>
# include <conio.h>
#include <string>
using namespace std;
char show(char [][30]);
int main(){int i;
char a[4][30];
{cout<<"Enter 4 name :\n";
for(int i=0;i<4;i++)
cin>>a[i];}

cout<<show(a);
getch();
}
char show(char a[][30]){int i;
cout<<"==================\n";
for(i=0;i<4;i++)
cout<<"Name : "<<a[i][30]<<endl;
return a[i][30];
}

Salar Ashgi
یک شنبه 12 اردیبهشت 1389, 17:14 عصر
فعلا درسمون به کلاس ها نرسیده
والله ازش استفاده می کردم
تابع رو کردم بازم ایراد داشت ممنون میشم راهنمایی بفرمایید

دوست عزیزی این کلاسی که میگم با اون کلاسی که شما در نظر دارین ، فرق میکنه :

کلاسی که من میگم یعنی استفاده از فایلهای کتابخانه ای

و کلاسی که شما مد نظرتون هستش یعنی مبحث کلاس در شی گرایی (OOP)

در واقع دوتاش یه چیزه ، چون این توابع کتابخانه ای نیز خودشون یک کلاس هستن که قبلا

پیاده سازی شده اند و ما با نوشتن نام کلاس از توابع مربوطه کلاس استفاده می کنیم !

منظور من این بود شما لازم نیست که کلاس طراحی کنید !

شما وقتی مینویسید include iostream در واقع از توابع کتابخانه ای این کلاس استفاده

می کنید و کلاسی طراحی نمی کنید ، حالا منظورم استفاده از کلاس String.h هم مثل

این است !

=================

کد شما در رابطه با گرفتن و چاپ کردن اسم ها ، صحیح نیست !

روش اول : (توسط تابع و رشته ها )



#include <iostream>
#include <conio>
#include <string>
using namespace std;
void show(string a[],int n){
for(int i=0;i<n;i++)
cout<<"Name "<<(i+1)<<": "<<a[i]<<endl;
}
//==============================
int main(){
string a[4];
cout<<"Enter 4 Name :\n";
for(int i=0;i<4;i++)
cin>>a[i];
cout<<"================\n";
show(a,4);
getch();
}


روش دوم : (توسط تابع و آرایه دو بعدی )



#include <iostream>
#include <conio>
void show(char a[][30]){
for(int i=0;i<4;i++){
cout<<"Name "<<i+1<<": ";
for(int j=0;j<30;j++)
cout<<a[i][j];
cout<<endl;}

}
//==============================
int main(){
char a[4][30]={"salar","ali","reza","hossain"};
show(a);
getch();
}

maryam126
یک شنبه 19 اردیبهشت 1389, 20:02 عصر
برنامه ای برای تاریخ وساعت میخوام بنویسم که روز/ ماه/سال داشته باشه خودم ساعت رونوشتم اما نمیدونم کجابایدتاریخ توی برنامه جابدم؟میشه واسم توضیح بدید