PDA

View Full Version : مشکل با چاپ کاراکتر ها و حلقه ی for



roberty
سه شنبه 10 اردیبهشت 1387, 11:24 صبح
سلام به همگی !!:لبخندساده:
راستش قصد داشتم برنامه ای بنویسم که اسم پنج تا ورزشکار رو بگیره و مسابقاتی رو که بصورت دو به دو انجام میدهند رو بصورت آوردن اسم دوتا بازیکنی که با هم مسابقه دادند چاپ بکنه
برای مثال اگه سه بازیکن ali و hasan و reza داشته باشیم در خروجی باید این عبارت چاپ بشه

ali ---- reza
ali-----hasan
hasan---reza

من این برنامه رو برای متغیر های int نوشتم !! لیکن بلد نیستم برای متغیر های char که اسم بازیکنان میباشند همین برنامه رو بازنویسی کنم !!!http://forum.p30world.com/images/New-smile/N_aggressive%20(26).gif البته تو همون برنامه هم اشکالی که هست اینه که یکبار مسابقه 1 رو با 2 حساب میکنه و یکبار مسابقه 2 رو با 1 حساب میکنه !! در صورتی که مسابقه 1با 2 و 2 با 1 هردو یک چیز هستند و باید یکی از آنها چاپ بشه که من نمیدونم چجوری ممکنه اینکار رو انجام داد !! از طرفی میخوام بجای int از char استفاده کنم که بازهم به مشکل برمیخورم !!http://forum.p30world.com/images/New-smile/N_aggressive%20(40).gif

برنامه ای که نوشتم اینه که البته باید به محیط سی پلاس پلاس copy - paste بشه



#include<iostream.h>
int main()
{
int team[5];
int i;
cout<<"enter five teams";
for( i=0;i<5;i++){
cin>>team[i];
}
cout<<"the chart of legue is";
for(i=0;i<5;i++)
for(int j=0;j<5;j++)
if(i!=j)
cout<<team[i]<<" "<<team[j]<<endl;
return 0;
}


به نظر من کلیت این برنامه مشکل داره و اون چیزی که من میخوام رو نمیتونه درست بکنه !!
چون من میخوام 5 تا اسم بگیره و جایگشت های دوتائی آنهارو در خروجی چاپ بکنه !! لیکن این برنامه نه تنها جایگشت ها یا همون ترکیب 2 از 5 رو چاپ نمیکنه بلکه اصلا من بلد نیستم چجوری همین برنامه رو با متغیر های char بازنویسی کنم !!

برای همین نیاز به کمک شما دارم تا به من که یه آماتور بیشتر نیستم یه help برسونید !!
ممنونم :چشمک:

emad_67
سه شنبه 10 اردیبهشت 1387, 15:01 عصر
برای اینکه بتونی از ورودی رشته دریافت کنی باید یک آرایه از نوع اشاره گر بسازی که هر خونه اون به یک رشته اشاره کنه. به این شکل:


char *team[5];

بنابراین برنامت به این شکل میشه:


#include<iostream.h>
int main()
{
char *team[5],*people;
int i;
cout<<"enter five teams :\n";
for( i=0;i<5;i++)
{
people=new char[10];
cin>>people;
team[i]=people;
}
cout<<"the chart of legue is :\n";
for(i=0;i<5;i++)
for(int j=i;j<5;j++)
if(i!=j )
cout<<team[i]<<" "<<team[j]<<endl;
return 0;
}


البته تو همون برنامه هم اشکالی که هست اینه که یکبار مسابقه 1 رو با 2 حساب میکنه و یکبار مسابقه 2 رو با 1 حساب میکنه !! در صورتی که مسابقه 1با 2 و 2 با 1 هردو یک چیز هستند و باید یکی از آنها چاپ بشه که من نمیدونم چجوری ممکنه اینکار رو انجام داد
این شرط رو هم در کد بالا اعمال کردم. فقط کافیه j رو از i در حلقه for شروع کنی ;)

A_Salimi
سه شنبه 10 اردیبهشت 1387, 16:41 عصر
دوستمون از اشاره گرها استفاده کردند که البته اصلش هم همينه
برنامه زير هم با طريقي مشابه اين عمل را انجام ميدهد .




#include <iostream.h>
#include <conio.h>
void main(){
char team[5][15];
cout<<"Enter five teams"<<"\n";
for(int i=0;i<5;i++)
cin>>team[i];
cout<<endl;
for(int i=0;i<5;i++)
for(int j=i;j<5;j++)
if(i!=j )
cout<<team[i]<<" "<<team[j]<<endl;
getch();
}

roberty
سه شنبه 10 اردیبهشت 1387, 22:45 عصر
برای اینکه بتونی از ورودی رشته دریافت کنی باید یک آرایه از نوع اشاره گر بسازی که هر خونه اون به یک رشته اشاره کنه.

این شرط رو هم در کد بالا اعمال کردم. فقط کافیه j رو از i در حلقه for شروع کنی ;)


دوستمون از اشاره گرها استفاده کردند که البته اصلش هم همينه
برنامه زير هم با طريقي مشابه اين عمل را انجام ميدهد .




#include <iostream.h>
#include <conio.h>
void main(){
char team[5][15];
cout<<"Enter five teams"<<"\n";
for(int i=0;i<5;i++)
cin>>team[i];
cout<<endl;
for(int i=0;i<5;i++)
for(int j=i;j<5;j++)
if(i!=j )
cout<<team[i]<<" "<<team[j]<<endl;
getch();
}



وااای !!!:قلب::گیج:
واقعا در حق من حقیر محبتی کردید که حد نداره !!!
نمیدونم چجوری تشکر کنم !! واقعا هردوی شما کد نویس های خیلی قوی ای هستید !!:تشویق:
هردو برنامه درست بودند !! آفرین !!
جفت برنامه ها رو save کردم تا توی پروژه ام ازشون استفاده کنم !!
بازهم ممنونم که برای من وقت گذاشتید و به سوالم پاسخ دادید !:چشمک: