PDA

View Full Version : در مورد نتایج مسابقات ورزشی تو این برنامه مشکل دارم !!



roberty
چهارشنبه 11 اردیبهشت 1387, 20:46 عصر
سلام به همگی !!
آقا ما یه برنامه ای نوشتیم که اسم پنج تا تیم رو میگیره و جدول مسابقات فوتبال رو که بصورت دوتا دوتا هست رو چاپ میکنه و سپس از کاربر میخواد که نتایج هر دیدار بین دو تیم رو هم وارد کنه تا ایندفعه یه جدول جدید چاپ بشه که هم اسم تیمها رو داره و هم تعداد گل زده در کنار اسم هر تیم نوشته شده باشه !!

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

#include <iostream.h>
#include <conio.h>
void main(){
char team[5][15];
int result1[10],result2[10];
int i,j;
cout<<"Enter five teams"<<"\n";
for( i=0;i<5;i++)
cin>>team[i];
cout<<endl;
for( i=0;i<5;i++)
for( j=i;j<5;j++)
if(i!=j )
cout<<team[i]<<" "<<team[j]<<endl;
for(i=0;i<5;i++)
for(j=i;j<5;j++)
if(i!=j){
cout<<"enter the result of"<<team[i]<<" whit "<<team[j];
cin>>result1[i]>>result2[j];
}
cout<<"the chart of results is"<<team[i]<<result1[i]<<" "<<team[j]<<result2[j]<<endl;
}
برنامه هنگام کامپایل و اجرا هیچ مشکلی نداره و براحتی اجرا میشه و اسم تیمها رو هم میگیره و جدول مساقات فوتبال رو چاپ میکنه و سپس از کاربر میگه تعداد گل تیم اول result1 رو وارد کنه و سپس تعداد گل تیم دوم یا همون result2 اما بعد از وارد کردن تعداد گل هر تیم در هر دیدار برنامه تو خروجی چرت و پرت و مزخرفات چاپ میکنه !!http://forum.p30world.com/images/New-smile/N_aggressive%20(40).gif

و مشکل منهم دقیقا همینجاست !!
خودم احساس میکنم با یه دستکاری ساده مشکل براحتی حل میشه !! اما دقیق نمیدونم باید چیکار کنم که بعد از وارد کردن تعداد گل زده هر تیم بشه براحتی جدول نتایج دیدار ها بصورت گفته شده چاپ بشه (( اسم دو تیم که با هم بازی میکنند و تعداد گل زده در کنار اسم همان تیم ))
یعنی مثلا اگه دیدار پاس و استقلال برابر 2 -0 به نفع استقلال باشه باید برای بازی استقلال و پاس بنویسه :
esteghlal 2 ---- pass 0
ممنونم میشم اگه یه کمکی هم بما بکنید !!http://forum.p30world.com/images/New-smile/N_aggressive%20(17).gif
مرC

PC2st
پنج شنبه 12 اردیبهشت 1387, 10:41 صبح
خب چون قسمت "the chart of results is" توی حلقه for قرار نداره :-) مثلا کد زیر بجای آخرین خط از کد نوشته بشه:


for(i=0;i<5;i++)
for(j=i;j<5;j++)
{
if(i!=j)
cout<<"the chart of results is"<<team[i]<<result1[i]<<" "<<team[j]<<result2[j]<<endl;
}

roberty
شنبه 14 اردیبهشت 1387, 10:16 صبح
ممنونم محمد صادق عزیز که رای من وقت گذاشتید و منو راهنمایی کردید :قلب:
برنامه رو با تغییراتی جزئی به این شکل درآوردم :

#include <iostream.h>
#include <conio.h>
void main(){
char team[5][15];
int result1[10],result2[10];
int i,j;
cout<<"Enter five teams"<<"\n";
for( i=0;i<5;i++)
cin>>team[i];
cout<<endl;
for( i=0;i<5;i++)
for( j=i;j<5;j++)
if(i!=j )
cout<<team[i]<<" "<<team[j]<<endl;
for(i=0;i<5;i++)
for(j=i;j<5;j++)
if(i!=j){
cout<<"enter the result of"<<team[i]<<" whit "<<team[j];
cin>>result1[i]>>result2[j];
}
cout<<"the chart of results is";
for(i=0;i<5;i++)
for(j=i;j<5;j++)
{
if(i!=j)
cout<<team[i]<<" "<<result1[i]<<"______ "<<team[j]<<" "<<result2[j]<<endl;
}
}
چون فکر میکردم اینجوری موقع اجرا خروجی جالبتری داشته باشه !!
بازهم از شما ممنونم !!:تشویق:
لطف کردید

emad_67
شنبه 14 اردیبهشت 1387, 13:20 عصر
چون فکر میکردم اینجوری موقع اجرا خروجی جالبتری داشته باشه !!برای اینکه خروجیت بهتر هم بشه یعنی همه تیم ها در یک ستون دقیقا زیر هم قرار بگیرند، از setw استفاده کن. این نمونه برنامه رو اجرا کن:


#include <iostream.h>
#include<iomanip.h>
void main()
{
cout.setf(ios::left);
cout<<setw(15)<<"ali"<<"mohammad reza\n"
<<setw(15)<<"saeed"<<"amir\n"
<<setw(15)<<"ali reza"<<"hossein\n";
}
setw یک پارامتر میگیره و بر اساس اون یک طول میدان ایجاد میکنه. یعنی مثلا وقتی که مینوسی :


cout<<setw(15)
یعنی از جایی که کرسر قرار داره میدانی به طول 15 کاراکتر داریم و رشته ای که بعد از اون قرار چاپ بشه از انتهای میدان (یعنی از کاراکتر 15) شروع به پر شدن به سمت چپ میکنه به صورتی که کاراکتر آخر رشته روی مکان 15 ام طول میدان قرار میگیره.
برای اینکه متن رو چپ چین کنیم اینو نوشتم:


cout.setf(ios::left);

roberty
دوشنبه 16 اردیبهشت 1387, 17:19 عصر
دوستان !!
الان یه چیزی رو متوجه شدم که گویا هیچیک از ما بهش دقت نکردیم !!:افسرده:

برنامه رو با اصلاحاتی که دوستان تو این تاپیک لطف کردند و بیان کردند کامپایل و اجرا کنید و در قسمتی که مربوط به وارد کردن نتایج میشه دقت کنید و ببینید همون اعدادی که مثلا برای نتیجه دیدار تیم A با تیم B وارد میکنید در خروجی چاپ میشه یا خیر !!!

مسلما عدد دیگری در خروجی چاپ میشه و برنامه خروجی غلطی رو ظاهر میکنه !!

نمیدونم چیکارش کنم !! اعصابم رو بهم ریخته این یه ریزه برنامه !!!:عصبانی++::عصبانی++:

emad_67
دوشنبه 16 اردیبهشت 1387, 18:31 عصر
دوستان !!
الان یه چیزی رو متوجه شدم که گویا هیچیک از ما بهش دقت نکردیم !!:افسرده:

برنامه رو با اصلاحاتی که دوستان تو این تاپیک لطف کردند و بیان کردند کامپایل و اجرا کنید و در قسمتی که مربوط به وارد کردن نتایج میشه دقت کنید و ببینید همون اعدادی که مثلا برای نتیجه دیدار تیم A با تیم B وارد میکنید در خروجی چاپ میشه یا خیر !!!

مسلما عدد دیگری در خروجی چاپ میشه و برنامه خروجی غلطی رو ظاهر میکنه !!

نمیدونم چیکارش کنم !! اعصابم رو بهم ریخته این یه ریزه برنامه !!!:عصبانی++::عصبانی++:
به نظرم منطق برنامه ای که نوشتی کلا غلطه. خیلی برنامه رو پیچیده کردی. توی این حلقه for:


for(i=0;i<5;i++)
for(j=i;j<5;j++)
if(i!=j){
cout<<"enter the result of"<<team[i]<<" whit "<<team[j];
cin>>result1[j]>>result2[j];
}
توی این حلقه هر دفعه که i یه دونه بهش اضافه میشه روی نتایج قبل نتایج جدید ثبت میشن که باعث میشه در انتها همه نتایج به هم بریزن. به نظرم بهتره که یه struct بسازی که توی اون اسم 2 تا بازیکن و 2 تا هم int به عنوان نتایج تعریف کنی. بعدش یه آرایه از اون struct تشکیل بدی و ...
اینجوری دیگه مشکلات الان پیش نمیاد.

roberty
دوشنبه 16 اردیبهشت 1387, 18:46 عصر
به نظرم منطق برنامه ای که نوشتی کلا غلطه. خیلی برنامه رو پیچیده کردی. توی این حلقه for:


for(i=0;i<5;i++)
for(j=i;j<5;j++)
if(i!=j){
cout<<"enter the result of"<<team[i]<<" whit "<<team[j];
cin>>result1[j]>>result2[j];
}
توی این حلقه هر دفعه که i یه دونه بهش اضافه میشه روی نتایج قبل نتایج جدید ثبت میشن که باعث میشه در انتها همه نتایج به هم بریزن. به نظرم بهتره که یه struct بسازی که توی اون اسم 2 تا بازیکن و 2 تا هم int به عنوان نتایج تعریف کنی. بعدش یه آرایه از اون struct تشکیل بدی و ...
اینجوری دیگه مشکلات الان پیش نمیاد.

یه سوال ازت بپرسم عماد جوون !! لطف کن و راست و حسینی جواب بده !!!:متفکر:
با استفاده از مباحثی در حد چهار فصل کتاب ++C جعفر نژاد قمی (( یعنی همون معرفی ++C و ساختار های کنترلی و آرایه و تایع )) میشه برنامه ای نوشت که اسم 5 تا تیم رو بگیره و نتایج رو هم بگیره و اسم گلزن هارو هم بگیره و دقایق به ثمر رسیدن گل رو هم بگیره و بعدش کلی تحلیل انجام بده ؟؟ از جمله چاپ چندین جدول که اولی برای دیدار ها و دومی برای نتایج و سومی برای نتایج و گلزنها باهم و چهارمی برای نتایج و دقایق به ثمر رسیدن گلها باهم و پنجمی برای تحلیل اینکه چند درصد گلها در پانزده دقیقه اول و پانزده دقیقه دوم و ... و جدول امتیا تیمها و همچنین چیدا کردن بهترین گلزن به عنوان آقای گل ؟؟؟:متعجب::متعجب::متعجب:

خداییش میشه با این چهار مبحث ابتدایی ++C این مسئله رو حل کرد یا اینکه من دارم بیخودی به خودم فشار میارم ؟؟؟:گیج:

PC2st
دوشنبه 16 اردیبهشت 1387, 19:04 عصر
الان یه چیزی رو متوجه شدم که گویا هیچیک از ما بهش دقت نکردیم !!:افسرده:
متاسفانه خطای موجود، به طرزی کاملا محرمانه ای (!)، گولمان زد :لبخند:
همانطور که عماد عزیز توضیح دادند... به این خاطره که حلقه for و پارامترهای i و j بخوبی شمارش نمیشوند و در آرایه های result نتایج بصورت اشتباه یا به عبارتی دوباره نویسی میشوند.

من بحای شما بودم از یه آرایه 2 بعدی به جای دو آرایه تک بعدی استفاده میکردم، مثلا:


#include <iostream>
#include <iomanip>

#define XFOR( i, j, count ) for( int i = 0; i < count; i++ ) for( int j = i; j < count; j++ ) if( i != j )

using namespace std;

int main( int argc, char * argv[] )
{
const unsigned int count = 3;
const unsigned int tnLng = 12;

char team[ count ][ tnLng ];
unsigned int result[ count ][ count ];

cout << "Enter " << count << " Teams :" << endl;
for( int i = 0; i < count; i++ )
{
cin >> team[ i ];
}
cout << endl;

XFOR( i, j, count )
{
cout << "Enter the game result of " << team[ i ] << " and " << team[ j ] << " ? ";
cin >> result[ i ][ j ] >> result[ j ][ i ];
}
cout << endl;

cout << "The chart of results is :" << endl << endl;
XFOR( i, j, count )
cout << right << setw( tnLng ) << team[ i ] << " " << result[ i ][ j ] << " - " << result[ j ][ i ] << " " << left << setw( tnLng ) << team[ j ] << endl;

system( "pause > nul" );
return 0;
}

برای نمایش خروجی هم از setw و ... استفاده شده که باز هم قبلا عماد توضیح داده :-)
راستی، یکم زیادی با کدش ور رفتم، اگه خواستی اون XFOR رو هم پاک کن و بجاش for ها و غیره رو بزار :لبخند:

emad_67
دوشنبه 16 اردیبهشت 1387, 19:19 عصر
یه سوال ازت بپرسم عماد جوون !! لطف کن و راست و حسینی جواب بده !!!:متفکر:
با استفاده از مباحثی در حد چهار فصل کتاب ++C جعفر نژاد قمی (( یعنی همون معرفی ++C و ساختار های کنترلی و آرایه و تایع )) میشه برنامه ای نوشت که اسم 5 تا تیم رو بگیره و نتایج رو هم بگیره و اسم گلزن هارو هم بگیره و دقایق به ثمر رسیدن گل رو هم بگیره و بعدش کلی تحلیل انجام بده ؟؟ از جمله چاپ چندین جدول که اولی برای دیدار ها و دومی برای نتایج و سومی برای نتایج و گلزنها باهم و چهارمی برای نتایج و دقایق به ثمر رسیدن گلها باهم و پنجمی برای تحلیل اینکه چند درصد گلها در پانزده دقیقه اول و پانزده دقیقه دوم و ... و جدول امتیا تیمها و همچنین چیدا کردن بهترین گلزن به عنوان آقای گل ؟؟؟:متعجب::متعجب::متعجب:

خداییش میشه با این چهار مبحث ابتدایی ++C این مسئله رو حل کرد یا اینکه من دارم بیخودی به خودم فشار میارم ؟؟؟:گیج:
شدنش که میشه ولی باید برات طلب صبر و مغفرت کنم :لبخند::بامزه:

roberty
چهارشنبه 18 اردیبهشت 1387, 19:28 عصر
آقا من بالاخره این برنامه رو یه جورایی دستکاری کردم و به شکل زیر درش اوردم که خوشبختانه جواب خروجی این برنامه درسته !!


#include <iostream.h>
#include <conio.h>
void main(){
char team[5][15];
int goal[5][5];
int i,j;
cout<<"Enter five teams"<<"\n";
for( i=0;i<5;i++)
cin>>team[i];
cout<<endl;
for( i=0;i<5;i++)
for( j=i;j<5;j++)
if(i!=j )
cout<<team[i]<<" "<<team[j]<<endl;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i!=j){
cout<<"how many goals has "<<team[i]<<" scored to "<<team[j]<<"?";
cin>>goal[i][j];
}
cout<<"the chart of results is\n";
for(i=0;i<5;i++)
for(j=i;j<5;j++)
{
if(i!=j)

cout<<team[i]<<" "<<goal[i][j]<<" **and** "<<team[j]<<" "<<goal[j][i]<<endl;
}
}

حالا میخوام بدونم ترتیب پر شدن آرایه goal [5][5 به این صورت هست ؟؟ به فرض اینکه اعداد حروف و اعداد قرمز همون اسم تیمها و تعداد گلها و بقیه همون آرایه ها باشند


A2 [0][0] ------ B1[0][1]
A3 [0][2] ------C3[0][3]
A0 [0][4] ------D5[1][0]
A1 [1][1]------ E4[1][2]
B2 [1][3]------ C1[1][4]
B4 [2][0]------ D0[2][1]
B0 [2][2]------ E1[2][3]
C3 [2][4]------ D2[3][0]
C1 [3][1]------ E5[3][2]
D3 [3][3]------ E3[3][4]

ممنون میشم اگه پاسخ این سوالم رو هم لطف کنید :لبخندساده:

PC2st
چهارشنبه 18 اردیبهشت 1387, 20:01 عصر
حالا میخوام بدونم ترتیب پر شدن آرایه goal [5][5 به این صورت هست ؟؟ به فرض اینکه اعداد حروف و اعداد قرمز همون اسم تیمها و تعداد گلها و بقیه همون آرایه ها باشند ...

شاید خوب متوجه نشده باشم، بهرحال ترتیب پر شدن آرایه مثله زیر میشه:


0,1
0,2
0,3
0,4
1,0
1,2
1,3
1,4
2,0
2,1
2,3
2,4
3,0
3,1
3,2
3,4
4,0
4,1
4,2
4,3

برای اینکه ببینیم که به چه ترتیب پر میشه، میتونیم توی حلقه for، کدی مثلا شبیه به زیر رو اضافه کنیم:


cout << i << ", " << j << endl;

roberty
چهارشنبه 18 اردیبهشت 1387, 22:53 عصر
ممنونم !!
اگه به پست قبلی بنده عنایت داشته باشید ملاحظه میکنید که در خط اول تیم A دو گل و تیم B یک گل زده است .
حالا من میخوام بدونم اون تعداد گل تیم A عضو چندم آرایه است و تعداد گل تیم B در دیدار با تیم A عضو چندم آرایه است و الی آخر...

آخه میدونید !!
برای محاسبه امتیاز تیمها تو جدول رده بندی نیاز به دانستن تعداد گلهای زده و خورده و تعداد برد ها و باخت ها و تساوی ها دارم !! برای همین باید روی آن آرایه هایی که معرف تعداد گلها هستند چند تا عدد رو ضرب و تقسیم کنم تا امتیازات رو بدست بیارم !! اما مشکلم اینجاست که دقیق نمیدونم کدام آرایه با کدام شماره مربوط به گل کدام تیم هست !!

اینو میدونم که آرایه هر چند بعدی که باشه برای هر خانه اش یک مقدار داره و در این برنامه برای هر عددی که معرف گل زده آن تیم به تیم مقابل است یکی از آن مقادیر استفاده میشه !! منتها اینجا این حلقه های تو در تو یه خورده فهم این قسمت از مسئله رو برای من مشکل کرده و همونطور که عرض کردم دقیق نمیدونم که مثلا کدام عضو از آرایه goal [5][5 مروبط به تعداد گلهای تیم A در مقابل تیم B است !!

احتمالا توضیح محمد صادق عزیز درسته !!! اما از آنجا که ایشون فرمودن (( شاید من خوب متوجه نشدم )) خواستم با نوشتن این پست در صحت جواب سوالم اطمینان حاصل کنم !!
با تشکر

PC2st
چهارشنبه 18 اردیبهشت 1387, 23:29 عصر
اما از آنجا که ایشون فرمودن (( شاید من خوب متوجه نشدم )) خواستم با نوشتن این پست در صحت جواب سوالم اطمینان حاصل کنم !!
ممنون :-) حالا دقیقا فهمیدم چی شد. (بعبارتی دو زاریم افتاد :بامزه:)
با اینکه فکر کنم خودتون کاملا متوجه قضیه هستین اما منم جهت اطمینان اینها رو مینویسم:


A2 [0][1] ------ B1[1][0]
A3 [0][2] ------ C3[2][0]
A0 [0][3] ------ D5[3][0]
A1 [0][4] ------ E4[4][0]
B2 [1][2] ------ C1[2][1]
B4 [1][3] ------ D0[3][1]
B0 [1][4] ------ E1[4][1]
C3 [2][3] ------ D2[3][2]
C1 [2][4] ------ E5[4][2]
D3 [3][4] ------ E3[4][3]

خانه 1 و 4 برابر تعداد گلهایی که تیم دوم به تیم پنجم زده و خانه 4 و 1 برابر تعداد گلهایی که تیم پنجم به تیم دوم زده.

roberty
پنج شنبه 19 اردیبهشت 1387, 08:35 صبح
ممنونم محمد صادق عزیز که ساعت دوازده شب:بامزه: برای من وقت گذاشتید و به سوال حقیر جواب صحیح دادید !!:خجالت:

خیلی خوبه که یه مهندس عمران اینقدر توانایی داشته باشه که بتونه تو برنامه نویسی به دیگران کمک کنه !!
آفرین :تشویق:

PC2st
پنج شنبه 19 اردیبهشت 1387, 10:21 صبح
از لطفتون ممنونم... راستش من هیچوقت قبل از ساعت 12 نخوابیدم :لبخند:
درضمن وظیفه شاگردیم بود و اصلا قابل شما رو نداشت. در این مابین، منم یه چیزهایی یاد گرفتم :لبخندساده:

در مورد این رشته عمران، راستش خیلی علاقه داشتم که بتونم رشته نرم افزار رو تو دانشگاه قبول بشم ولی متاسفانه قسمت نبود!
ولی منم کم نیاوردم و یه چیزهایی رو (در همین حد) یاد گرفتم :بامزه:

roberty
چهارشنبه 25 اردیبهشت 1387, 12:54 عصر
جسارتا برنامه رو بازهم ادامه دادم و بعد از گرفتن اسم تیمها و چاپ جدول مسابقات و گرفتن نتایج تیمها و چاپ جدول نتایج مسابقات و چاپ جدول امتیازات و تعداد گل زده و خورده و تساوی تیمها و امتیاز تیمها (( برد 3 امتیاز و تساوی 1 امتیاز و باخت 1- امتیاز )) برنامه رو با اینجا رسوندم که حدود 180 خط کد نویسی هست !!


#include <iostream.h>
#include <conio.h>
void main()
{
char team[5][15];//used to enter the name of those five teams in this programm
int time[200]={0};
int counter[200]={0};//used to count the time of winnig and losing and saming the games
float cntphnd[200];//counter per one hundred that is used to descibe the percentage of scoring the goals in any minutes of the football match
int goal[5][5];
int mark[200];
int i,j;
cout<<"Enter five teams"<<"\n";
for( i=0;i<5;i++)
for( i=0;i<5;i++)
cin>>team[i];
cout<<endl;
for( i=0;i<5;i++)
for( j=i;j<5;j++)
if(i!=j )
cout<<team[i]<<" "<<team[j]<<endl;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i!=j){
cout<<"how many goals has "<<team[i]<<" scored to "<<team[j]<<"?";

cin>>goal[i][j];
}
cout<<"the chart of results is\n";
for(i=0;i<5;i++)
for(j=i;j<5;j++)
{
if(i!=j)
cout<<team[i]<<" "<<goal[i][j]<<" **and** "<<team[j]<<" "<<goal[j][i];
cout<<endl;


}
cout<<"FOR TEAM "<<"*** "<<team[0]<<"***"<<"\n";// first team
cout<<"the number of scored goals" <<" is "<<goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[1][0]+goal[2][0]+goal[3][0]+goal[4][0]<<endl;
for(i=0;i<5;i++)
if(goal[0][i]> goal[i][0])
counter[0] ++;
cout<<"team "<<team[0]<<" won the football match "<<counter[0]<<" times\n";
for(i=0;i<5;i++)
if(goal[0][i]< goal[i][0])
counter[1]++;
cout<<"team "<<team[0]<<" lost the football match "<<counter[1]<<" times\n";
for(i=0;i<5;i++)
if(goal[0][i]==goal[i][0])
counter[2] ++;
cout<<"team "<<team[0]<<"got the same result for "<< counter[2]-1<<" times\n";
mark[0]=(2* counter[0])+counter[1]-counter[2];
cout<<"the score of team "<<team[0]<<" is"<<mark[0];
cout<<endl;
cout<<endl;
cout<<endl;

cout<<"FOR TEAM "<<"*** "<<team[1]<<"***"<<"\n";//second team
cout<<"the number of scored goals" <<" is "<<goal[1][0]+goal[1][2]+goal[1][3]+goal[1][4]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][1]+goal[2][1]+goal[3][1]+goal[4][1]<<endl;
for(i=0;i<5;i++)
if(goal[1][i]> goal[i][1])
counter[4] ++;
cout<<"team "<<team[1]<<" won the football match "<<counter[4]<<" times\n";
for(i=0;i<5;i++)
if(goal[1][i]< goal[i][1])
counter[5]++;
cout<<"team "<<team[1]<<" lost the football match "<<counter[5]<<" times\n";
for(i=0;i<5;i++)
if(goal[1][i]==goal[i][1])
counter[6] ++;
cout<<"team "<<team[1]<<"got the same result for "<< counter[6]-1<<" times\n";
mark[1]=(2* counter[4])+ counter[5]-counter[6];
cout<<"the score of team "<<team[1]<<" is"<<mark[1];
cout<<endl;//end of operation for second team
cout<<endl;
cout<<endl;



cout<<"FOR TEAM "<<"*** "<<team[2]<<"***"<<"\n";//third team
cout<<"the number of scored goals" <<" is "<<goal[2][3]+goal[2][4]+goal[2][1]+goal[2][0]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][2]+goal[1][2]+goal[3][2]+goal[4][2]<<endl;
for(i=0;i<5;i++)
if(goal[2][i]> goal[i][2])
counter[7] ++;
cout<<"team "<<team[2]<<" won the football match "<<counter[7]<<" times\n";
for(i=0;i<5;i++)
if(goal[2][i]< goal[i][2])
counter[8]++;
cout<<"team "<<team[2]<<" lost the football match "<<counter[8]<<" times\n";
for(i=0;i<5;i++)
if(goal[2][i]==goal[i][1])
counter[9] ++;
cout<<"team "<<team[2]<<"got the same result for "<< counter[9]<<" times\n";
mark[2]=(2*counter[7])+ counter[8]-counter[9];
cout<<"the score of team "<<team[2]<<" is"<<mark[2];
cout<<endl;//end of operaion for third team
cout<<endl;
cout<<endl;





cout<<"FOR TEAM "<<"*** "<<team[3]<<"***"<<"\n";//fourth team
cout<<"the number of scored goals" <<" is "<<goal[3][0]+goal[3][1]+goal[3][2]+goal[3][4]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][3]+goal[1][3]+goal[2][3]+goal[4][3]<<endl;
for(i=0;i<5;i++)
if(goal[3][i]> goal[i][3])
counter[10] ++;
cout<<"team "<<team[3]<<" won the football match "<<counter[10]<<" times\n";
for(i=0;i<5;i++)
if(goal[3][i]< goal[i][3])
counter[11]++;
cout<<"team "<<team[3]<<" lost the football match "<<counter[11]<<" times\n";
for(i=0;i<5;i++)
if(goal[3][i]==goal[i][3])
counter[12] ++;
cout<<"team "<<team[3]<<"got the same result for "<< counter[12]-1<<" times\n";
mark[3]=(2*counter[10])+counter[11]-counter[12];
cout<<"the mark of team "<<team[3]<<" is"<<mark[3];//end of operation for forth team
cout<<endl;
cout<<endl;
cout<<endl;



cout<<"FOR TEAM "<<"***"<<team[4]<<"***"<<"\n";//fifth team
cout<<"the number of scored goals" <<" is "<<goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][4]+goal[1][4]+goal[2][4]+goal[3][4]<<endl;
for(i=0;i<5;i++)
if(goal[4][i]> goal[i][4])
counter[13] ++;
cout<<"team "<<team[4]<<" won the football match "<<counter[13]<<" times\n";
for(i=0;i<5;i++)
if(goal[4][i]< goal[i][4])
counter[14]++;
cout<<"team "<<team[4]<<" lost the football match "<<counter[14]<<" times\n";
for(i=0;i<5;i++)
if(goal[4][i]==goal[i][4])
counter[15] ++;
cout<<"team "<<team[4]<<"got the same result for "<< counter[15]-1<<" times\n";
mark[4]=(2* counter[13])+ counter[14]-counter[15];
cout<<"the mark of team "<<team[4]<<" is"<<mark[4];
cout<<endl;//end of operation for fifth team
cout<<endl;
cout<<endl;
cout<<"enter times of scoring the goals of team "<<team[0];
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
{
cin>>time[i];
}
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
if(time[i]>90 || time[i]<0)
cout<<"error of entering the time";
else
{
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
if(0<=time[i] && time[i] <=15)
counter[16]++;
cntphnd[1] = float( (counter[16]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[1]<<" percent of goals of team "<<team[0]<<" scored between 0 and 15 minutes ";
cout<<endl;
if(16<=time[i] && time[i] <=30)
counter[17]++;
cntphnd[2]= float ((counter[17]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[2]<<" percent of goals of team "<<team[0]<<" scored between 16 and 30 minutes";
cout<<endl;
if( 31<= time[i] && time[i] <=45)
counter[18]++;
cntphnd[3]= float (counter[18]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]);
cout<<cntphnd[3]<<" percent of goals of team "<<team[0]<<" scored between 31 and 45 minutes ";
cout<<endl;
if(46<=time[i] && time[i]<=60)
counter[19]++;
cntphnd[4]= float ((counter[19]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[4]<<" pecent of goals of team "<<team[0]<<" scored between 46 and 60 minues ";
cout<<endl;
if(61<=time[i] && time[i]<=75)
counter[20]++;
cntphnd[5]= float ((counter[20]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[5]<<" percent of goals of team "<<team[0]<< "scored between 61 and 75 minutes ";
cout<<endl;
if(76<=time[i] && time[i]<=90)
counter[21]++;
cntphnd[6]=float((counter[21]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[6]<< " percent of goals of team "<<team[0]<<" scored between 76 and 90 minutes ";
cout<<endl;
}
}


حالا میخوام دوتا کار انجام بدم !!
اولا تو خطوط اولیه که اون cin رو قرمز کردم و برنامه در اونجا اسم تیمها رو میگیره میخواهم کاری کنم که برنامه بمحض دریافت هرچیزی بجز کاراکتر error بده و برنامه تموم بشه و پیغام بده که باید حتما از حروف استفاده کنید !!
خودم فکر کردم که بیام و یه دستور شرطی if/else بنویسم و در اون لحاظ بکنم که تک تک کاراکتر های ورودی رو از 'a' تا 'z' چک بکنه و هرجا چیز دیگری وارد بشه error بده !! اما راستش دقیق نمیدونم این دستور رو کجا و بین کدوم حلقه ها و دستور های خروجی cout قرار بدم !! این بود که گفتم با شما هم مشورت بکنم !!

دوم اینکه تو انتهای برنامه و اون تیکه ای که قرمز شده و مربوط به دستور cout<<"enter times of scoring the goals of team "<<team[0]; هست قصد دارم به ازای تعداد گل زده شده که قبلا تو برنامه بدست اومده و به تعداد گلها اعدای از صفر تا نود رو بگیرم که معرف دقایق به ثمر رسیدن گلها هست و سپس با استفاده از حلقه for و تقسیم بندی زمان از صفر تا نود به بازه های 15 دقیقه ای تحلیل بکنم که چند درصد گلها در یک ربع اول بازی و چند درصد در یک ربع دوم و چند در صد در یک ربع سوم و به همین ترتیب چند درصد هم در پانزده دقیقه ششم بازی به ثمر رسیدند !! البته آرایه cntphnd که از جنس float هست و نام آن مخفف counter per hundred هست رو برای همین کار ایجاد کردم که تعداد گلهایی رو که مثلا در پانزده دقیقه اول به ثمر رسیده اند رو در صد ضرب بکنه و تقسیم بر تعداد کل گلهای آن تیم که در نود دقیقه بازی به ثمر رسیده اند بکنه و درصد گلهایی که تو پانزده دقیقه اول زده شده اند رو حساب بکنه که البته تو این بخش هم با مشکل مواجه شدم !! چون برنامه براحتی کامپایل و اجرا میشه ولی تو قسمت درصد گلها تو پانزده دقیقه ها فقط عدد صفر رو چاپ میکنه !!! و این منو آزار میده !!
لازم به ذکر هست که آرایه cntphnd رو برای این 200 تایی انتخاب کردم که مثلا اعضای 0 و 1 و 2 و 3 و 4 و 5 این ارایه برای درصد گلهای تیم A در کل بازیها با تیمهای دیگه و اعضای 6 و 7 و8 و9و 10 و11 برای درصد گلهای تیم B در آن شش تا پانزده دقیقه هست و الی آخر !!


خودم خوب میدونم که ظاهر این برنامه به نظر وحشتناک میاد و کمتر کسی رغبت میکنه به طرفش بره !! ولی واقعیت اینه که چیز زیاد سختی نیست و فقط چند تا قلق داره که من بلد نیستم و بخاطر همین هم در دو مورد گفته شده برای وارد کردن اسم تیمها و درصد گلهای تیمها در 6 تا پانزده دقیقه نیاز به کمک شما دارم !!
ممنون میشم اگه یه کمکی هم به من آماتور بکنید !!
مرC

A_Salimi
چهارشنبه 25 اردیبهشت 1387, 14:23 عصر
در مواقعی که برنامه در این حد بزرگ میشه معمولا برنامه نویسی از بالا به پایین عاقلانه به نظر نمیرسه به خاطر اینکه هم درک و فهم برنامه مشکل میشه و هم اینکه اگه بخوای برنامه رو مرتبا بزرگتر کنی به مشکلات بدتری میخوری !


اما راستش دقیق نمیدونم این دستور رو کجا و بین کدوم حلقه ها و دستور های خروجی cout قرار بدم !! این بود که گفتم با شما هم مشورت بکنم !!

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

شما برنامه ای بنویسید که رشته ای رو دریافت کنه و بعدش بگه که آیا در اون رشته از کاراکترهای غیر عددی استفاده شده یا نه (این یعنی یک زیر برنامه)

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

PC2st
چهارشنبه 25 اردیبهشت 1387, 23:23 عصر
امتیاز تیمها (( برد 3 امتیاز و تساوی 1 امتیاز و باخت 1- امتیاز ))
موچتو گرفتم! باخت 0 امتیاز داره... :بامزه:

من روی صحت و درستی کدها دقت نکردم (ولی احتمالا باید درست نوشته باشید) فقط میخواستم راهکارهایی که برای کاهش حجم کد و تعداد عملیات میشه انجام داد رو با هم بحث کنیم؛

_________________________________________

1+ در قسمتی از کدهاتون، کد زیر رو نوشتین:


cout << "FOR TEAM " << "*** " << team[ 0 ] << "***" << "\n"; // first team
cout << "the number of scored goals" << " is " << goal[ 0 ][ 1 ] + goal[ 0 ][ 2 ] + goal[ 0 ][ 3 ] + goal[ 0 ][ 4 ] << endl;
cout << "the number of recived goals" << "is " << goal[ 1 ][ 0 ] + goal[ 2 ][ 0 ] + goal[ 3 ][ 0 ] + goal[ 4 ][ 0 ] << endl;
for( i = 0; i < 5; i++ )
if( goal[ 0 ][ i ] > goal[ i ][ 0 ] )
counter[ 0 ]++;
cout << "team " << team[ 0 ] << " won the football match " << counter[ 0 ] << " times\n";
for( i = 0; i < 5; i++ )
if( goal[ 0 ][ i ] < goal[ i ][ 0 ] )
counter[ 1 ]++;
cout << "team " << team[ 0 ] << " lost the football match " << counter[ 1 ] << " times\n";
for( i = 0; i < 5; i++ )
if( goal[ 0 ][ i ] == goal[ i ][ 0 ] )
counter[ 2 ]++;
cout << "team " << team[ 0 ] << "got the same result for " << counter[ 2 ] - 1 << " times\n";

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


cout << "FOR TEAM " << "*** " << team[ 0 ] << "***" << "\n"; // first team
cout << "the number of scored goals" << " is " << goal[ 0 ][ 1 ] + goal[ 0 ][ 2 ] + goal[ 0 ][ 3 ] + goal[ 0 ][ 4 ] << endl;
cout << "the number of recived goals" << "is " << goal[ 1 ][ 0 ] + goal[ 2 ][ 0 ] + goal[ 3 ][ 0 ] + goal[ 4 ][ 0 ] << endl;
for( i = 0; i < 5; i++ )
{
if( goal[ 0 ][ i ] > goal[ i ][ 0 ] )
{
counter[ 0 ]++;
}
else if( goal[ 0 ][ i ] < goal[ i ][ 0 ] )
{
counter[ 1 ]++;
}
else // goal[ 0 ][ i ] == goal[ i ][ 0 ] )
{
counter[ 2 ]++;
}
}
cout << "team " << team[ 0 ] << " won the football match " << counter[ 0 ] << " times\n";
cout << "team " << team[ 0 ] << " lost the football match " << counter[ 1 ] << " times\n";
cout << "team " << team[ 0 ] << "got the same result for " << counter[ 2 ] - 1 << " times\n";

اینطوری هم کدها خلاصه تر ، هم خواناتر و هم با سرعت بیشتری انجام میگیره (بدلیل حذف 2 حلقه for و تکرار زیادی دستورات if در داخل حلقه ها).

_____________________________________

2+ راستش اگه با هم کدهاتون رو مرور کنیم، میبینیم که این نوع حلقه های for بطور متعددی تکرار شده است، به طریقی میشد که تمام این for های تکرار شده رو در داخل یک for کلی قرار داد و از تکرار بیهوده کدها جلوگیری کرد، مثلا کدی که نوشتین:


cout << "FOR TEAM " << "*** " << team[ 0 ] << "***" << "\n"; // first team
cout << "the number of scored goals" << " is " << goal[ 0 ][ 1 ] + goal[ 0 ][ 2 ] + goal[ 0 ][ 3 ] + goal[ 0 ][ 4 ] << endl;
cout << "the number of recived goals" << "is " << goal[ 1 ][ 0 ] + goal[ 2 ][ 0 ] + goal[ 3 ][ 0 ] + goal[ 4 ][ 0 ] << endl;
for( i = 0; i < 5; i++ )
if( goal[ 0 ][ i ] > goal[ i ][ 0 ] )
counter[ 0 ]++;
cout << "team " << team[ 0 ] << " won the football match " << counter[ 0 ] << " times\n";
for( i = 0; i < 5; i++ )
if( goal[ 0 ][ i ] < goal[ i ][ 0 ] )
counter[ 1 ]++;
cout << "team " << team[ 0 ] << " lost the football match " << counter[ 1 ] << " times\n";
for( i = 0; i < 5; i++ )
if( goal[ 0 ][ i ] == goal[ i ][ 0 ] )
counter[ 2 ]++;
cout << "team " << team[0] << "got the same result for " << counter[ 2 ] - 1 << " times\n";
mark[0]=(2* counter[0])+counter[1]-counter[2];
cout<<"the score of team "<<team[0]<<" is"<<mark[0];
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"FOR TEAM "<<"*** "<<team[1]<<"***"<<"\n";//second team
cout<<"the number of scored goals" <<" is "<<goal[1][0]+goal[1][2]+goal[1][3]+goal[1][4]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][1]+goal[2][1]+goal[3][1]+goal[4][1]<<endl;
for(i=0;i<5;i++)
if(goal[1][i]> goal[i][1])
counter[4] ++;
cout<<"team "<<team[1]<<" won the football match "<<counter[4]<<" times\n";
for(i=0;i<5;i++)
if(goal[1][i]< goal[i][1])
counter[5]++;
cout<<"team "<<team[1]<<" lost the football match "<<counter[5]<<" times\n";
for(i=0;i<5;i++)
if(goal[1][i]==goal[i][1])
counter[6] ++;
cout<<"team "<<team[1]<<"got the same result for "<< counter[6]-1<<" times\n";
mark[1]=(2* counter[4])+ counter[5]-counter[6];
cout<<"the score of team "<<team[1]<<" is"<<mark[1];
cout<<endl;//end of operation for second team
cout<<endl;
cout<<endl;

cout<<"FOR TEAM "<<"*** "<<team[2]<<"***"<<"\n";//third team
cout<<"the number of scored goals" <<" is "<<goal[2][3]+goal[2][4]+goal[2][1]+goal[2][0]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][2]+goal[1][2]+goal[3][2]+goal[4][2]<<endl;
for(i=0;i<5;i++)
if(goal[2][i]> goal[i][2])
counter[7] ++;
cout<<"team "<<team[2]<<" won the football match "<<counter[7]<<" times\n";
for(i=0;i<5;i++)
if(goal[2][i]< goal[i][2])
counter[8]++;
cout<<"team "<<team[2]<<" lost the football match "<<counter[8]<<" times\n";
for(i=0;i<5;i++)
if(goal[2][i]==goal[i][1])
counter[9] ++;
cout<<"team "<<team[2]<<"got the same result for "<< counter[9]<<" times\n";
mark[2]=(2*counter[7])+ counter[8]-counter[9];
cout<<"the score of team "<<team[2]<<" is"<<mark[2];
cout<<endl;//end of operaion for third team
cout<<endl;
cout<<endl;


cout<<"FOR TEAM "<<"*** "<<team[3]<<"***"<<"\n";//fourth team
cout<<"the number of scored goals" <<" is "<<goal[3][0]+goal[3][1]+goal[3][2]+goal[3][4]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][3]+goal[1][3]+goal[2][3]+goal[4][3]<<endl;
for(i=0;i<5;i++)
if(goal[3][i]> goal[i][3])
counter[10] ++;
cout<<"team "<<team[3]<<" won the football match "<<counter[10]<<" times\n";
for(i=0;i<5;i++)
if(goal[3][i]< goal[i][3])
counter[11]++;
cout<<"team "<<team[3]<<" lost the football match "<<counter[11]<<" times\n";
for(i=0;i<5;i++)
if(goal[3][i]==goal[i][3])
counter[12] ++;
cout<<"team "<<team[3]<<"got the same result for "<< counter[12]-1<<" times\n";
mark[3]=(2*counter[10])+counter[11]-counter[12];
cout<<"the mark of team "<<team[3]<<" is"<<mark[3];//end of operation for forth team
cout<<endl;
cout<<endl;
cout<<endl;

cout<<"FOR TEAM "<<"***"<<team[4]<<"***"<<"\n";//fifth team
cout<<"the number of scored goals" <<" is "<<goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][4]+goal[1][4]+goal[2][4]+goal[3][4]<<endl;
for(i=0;i<5;i++)
if(goal[4][i]> goal[i][4])
counter[13] ++;
cout<<"team "<<team[4]<<" won the football match "<<counter[13]<<" times\n";
for(i=0;i<5;i++)
if(goal[4][i]< goal[i][4])
counter[14]++;
cout<<"team "<<team[4]<<" lost the football match "<<counter[14]<<" times\n";
for(i=0;i<5;i++)
if(goal[4][i]==goal[i][4])
counter[15] ++;
cout<<"team "<<team[4]<<"got the same result for "<< counter[15]-1<<" times\n";
mark[4]=(2* counter[13])+ counter[14]-counter[15];
cout<<"the mark of team "<<team[4]<<" is"<<mark[4];
cout<<endl;//end of operation for fifth team
cout<<endl;
cout<<endl;

اگه به کدهای فوق دقت کنیم، میبینیم که میشه اونها رو توی یه حلقه for قرار داد ولی یه مشکل کوچولو در آرایه market و مقداردهی به خانه های اون هست، که اگه نحوه مقداردهی به خانه هاش رو این زیر لیست کنیم و کنار هم بگذاریم:


mark[0]=(2* counter[0])+ counter[1]-counter[2];
mark[1]=(2* counter[4])+ counter[5]-counter[6];
mark[2]=(2*counter[7])+ counter[8]-counter[9];
mark[3]=(2*counter[10])+counter[11]-counter[12];
mark[4]=(2* counter[13])+ counter[14]-counter[15];

دیده میشه که میشه بهم ربطشون داد ولی متاسفانه در اولین خط (از لیست فوق) خانه های 0 و 1 و 2 از آرایه counter تناسب کافی ای با سایر دستورات ندارند، میشه بپرسم چرا خانه 3 (سوم) از آرایه counter رو مقدار دهی نکردین؟ (فکر کنم بخاطر اشتباه تایپی در حین کد نویسی این اتفاق رخ داده باشه). پس برای اینکه بشه یک رابطه بینشون ایجاد کرد، من خانه های 1و 2 و 3 رو مقدار دهی میکنم و خانه 0 رو بدون مقدار میگذارم که در اینصورت میشه تمام کدهای گفته شده رو در یک حلقه قرار داد، همچنین برای محاسبه فرمول و قراردادن یک مقدار در یه خانه market فرمول (از لحاظ قوانین فوتبالی!) باید به شکل زیر تغییر کنه:


mark[ k ] = 3 * counter[ 3 * k + 1 ] + counter[ 3 * k + 3 ] - 1;

منظور از k مثلا تیم k ام است. با توجه به توضیحاتی هم که دادین با فرمول 1+K*3 و غیره هم میشه به خانه های آرایه counter هم دسترسی داشت و اون منفی 1 که در آخر اومده هم که خودتون خبر دارین :لبخند: عبارت اول محاسبه 3 امتیاز ناشی از بردها و عبارت دوم هم محاسبه 1 امتیاز ناشی از تساوی است.
در کل، کد بصورت زیر در میاد:


int scored;
int recived;
for( int k = 0; k < 5; k++ )
{
cout << "FOR TEAM " << "*** " << team[ k ] << "***" << "\n"; // first team
scored = 0;
recived = 0;
for( int t = 0; t < 5; t++ )
{
if( k != t )
{
scored += goal[ k ][ t ];
recived += goal[ t ][ k ];
}
}
cout << "the number of scored goals" << " is " << scored << endl;
cout << "the number of recived goals" << "is " << recived << endl;
for( i = 0; i < 5; i++ )
if( goal[ k ][ i ] > goal[ i ][ k ] )
counter[ 3 * k + 1 ]++;
cout << "team " << team[ k ] << " won the football match " << counter[ 3 * k + 1 ] << " times\n";
for( i = 0; i < 5; i++ )
if( goal[ k ][ i ] < goal[ i ][ k ] )
counter[ 3 * k + 2 ]++;
cout << "team " << team[ k ] << " lost the football match " << counter[ 3 * k + 2 ] << " times\n";
for( i = 0; i < 5; i++ )
if( goal[ k ][ i ] == goal[ i ][ k ] )
counter[ 3 * k + 3 ]++;
cout << "team " << team[ k ] << "got the same result for " << counter[ 3 * k + 3 ] - 1 << " times\n";
mark[ k ] = 3 * counter[ 3 * k + 1 ] + counter[ 3 * k + 3 ] - 1;
cout << "the score of team " << team[ k ] << " is" << mark[ k ];
cout << endl;
cout << endl;
cout << endl;
}


_____________________________________

3+ با ترکیب موارد 1 و 2، کد قبلی زیر:


cout<<"FOR TEAM "<<"*** "<<team[0]<<"***"<<"\n";// first team
cout<<"the number of scored goals" <<" is "<<goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[1][0]+goal[2][0]+goal[3][0]+goal[4][0]<<endl;
for(i=0;i<5;i++)
if(goal[0][i]> goal[i][0])
counter[0] ++;
cout<<"team "<<team[0]<<" won the football match "<<counter[0]<<" times\n";
for(i=0;i<5;i++)
if(goal[0][i]< goal[i][0])
counter[1]++;
cout<<"team "<<team[0]<<" lost the football match "<<counter[1]<<" times\n";
for(i=0;i<5;i++)
if(goal[0][i]==goal[i][0])
counter[2] ++;
cout<<"team "<<team[0]<<"got the same result for "<< counter[2]-1<<" times\n";
mark[0]=(2* counter[0])+counter[1]-counter[2];
cout<<"the score of team "<<team[0]<<" is"<<mark[0];
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"FOR TEAM "<<"*** "<<team[1]<<"***"<<"\n";//second team
cout<<"the number of scored goals" <<" is "<<goal[1][0]+goal[1][2]+goal[1][3]+goal[1][4]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][1]+goal[2][1]+goal[3][1]+goal[4][1]<<endl;
for(i=0;i<5;i++)
if(goal[1][i]> goal[i][1])
counter[4] ++;
cout<<"team "<<team[1]<<" won the football match "<<counter[4]<<" times\n";
for(i=0;i<5;i++)
if(goal[1][i]< goal[i][1])
counter[5]++;
cout<<"team "<<team[1]<<" lost the football match "<<counter[5]<<" times\n";
for(i=0;i<5;i++)
if(goal[1][i]==goal[i][1])
counter[6] ++;
cout<<"team "<<team[1]<<"got the same result for "<< counter[6]-1<<" times\n";
mark[1]=(2* counter[4])+ counter[5]-counter[6];
cout<<"the score of team "<<team[1]<<" is"<<mark[1];
cout<<endl;//end of operation for second team
cout<<endl;
cout<<endl;

cout<<"FOR TEAM "<<"*** "<<team[2]<<"***"<<"\n";//third team
cout<<"the number of scored goals" <<" is "<<goal[2][3]+goal[2][4]+goal[2][1]+goal[2][0]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][2]+goal[1][2]+goal[3][2]+goal[4][2]<<endl;
for(i=0;i<5;i++)
if(goal[2][i]> goal[i][2])
counter[7] ++;
cout<<"team "<<team[2]<<" won the football match "<<counter[7]<<" times\n";
for(i=0;i<5;i++)
if(goal[2][i]< goal[i][2])
counter[8]++;
cout<<"team "<<team[2]<<" lost the football match "<<counter[8]<<" times\n";
for(i=0;i<5;i++)
if(goal[2][i]==goal[i][1])
counter[9] ++;
cout<<"team "<<team[2]<<"got the same result for "<< counter[9]<<" times\n";
mark[2]=(2*counter[7])+ counter[8]-counter[9];
cout<<"the score of team "<<team[2]<<" is"<<mark[2];
cout<<endl;//end of operaion for third team
cout<<endl;
cout<<endl;


cout<<"FOR TEAM "<<"*** "<<team[3]<<"***"<<"\n";//fourth team
cout<<"the number of scored goals" <<" is "<<goal[3][0]+goal[3][1]+goal[3][2]+goal[3][4]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][3]+goal[1][3]+goal[2][3]+goal[4][3]<<endl;
for(i=0;i<5;i++)
if(goal[3][i]> goal[i][3])
counter[10] ++;
cout<<"team "<<team[3]<<" won the football match "<<counter[10]<<" times\n";
for(i=0;i<5;i++)
if(goal[3][i]< goal[i][3])
counter[11]++;
cout<<"team "<<team[3]<<" lost the football match "<<counter[11]<<" times\n";
for(i=0;i<5;i++)
if(goal[3][i]==goal[i][3])
counter[12] ++;
cout<<"team "<<team[3]<<"got the same result for "<< counter[12]-1<<" times\n";
mark[3]=(2*counter[10])+counter[11]-counter[12];
cout<<"the mark of team "<<team[3]<<" is"<<mark[3];//end of operation for forth team
cout<<endl;
cout<<endl;
cout<<endl;

cout<<"FOR TEAM "<<"***"<<team[4]<<"***"<<"\n";//fifth team
cout<<"the number of scored goals" <<" is "<<goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]<<endl;
cout<<"the number of recived goals" <<"is "<<goal[0][4]+goal[1][4]+goal[2][4]+goal[3][4]<<endl;
for(i=0;i<5;i++)
if(goal[4][i]> goal[i][4])
counter[13] ++;
cout<<"team "<<team[4]<<" won the football match "<<counter[13]<<" times\n";
for(i=0;i<5;i++)
if(goal[4][i]< goal[i][4])
counter[14]++;
cout<<"team "<<team[4]<<" lost the football match "<<counter[14]<<" times\n";
for(i=0;i<5;i++)
if(goal[4][i]==goal[i][4])
counter[15] ++;
cout<<"team "<<team[4]<<"got the same result for "<< counter[15]-1<<" times\n";
mark[4]=(2* counter[13])+ counter[14]-counter[15];
cout<<"the mark of team "<<team[4]<<" is"<<mark[4];
cout<<endl;//end of operation for fifth team
cout<<endl;
cout<<endl;

به شکل خلاصه زیر تبدیل میشه:


int scored;
int recived;
int winIndex;
int drawIndex;
int loseIndex;
for( int k = 0; k < 5; k++ )
{
cout << "FOR TEAM " << "*** " << team[ k ] << "***" << "\n"; // first team
scored = 0;
recived = 0;
winIndex = 3 * k + 1;
loseIndex = winIndex + 1;
drawIndex = loseIndex + 1;
for( int t = 0; t < 5; t++ )
{
if( goal[ k ][ t ] > goal[ t ][ k ] )
{
counter[ winIndex ]++;
}
else if( goal[ k ][ t ] < goal[ t ][ k ] )
{
counter[ loseIndex ]++;
}
else
{
counter[ drawIndex ]++;
}
if( k != t )
{
scored += goal[ k ][ t ];
recived += goal[ t ][ k ];
}
}
cout << "the number of scored goals" << " is " << scored << endl;
cout << "the number of recived goals" << "is " << recived << endl;
cout << "team " << team[ k ] << " won the football match " << counter[ winIndex ] << " times\n";
cout << "team " << team[ k ] << " lost the football match " << counter[ loseIndex ] << " times\n";
cout << "team " << team[ k ] << "got the same result for " << counter[ drawIndex ] - 1 << " times\n";
mark[ k ] = 3 * counter[ winIndex ] + counter[ drawIndex ] - 1;
cout << "the score of team " << team[ k ] << " is" << mark[ k ];
cout << endl;
cout << endl;
cout << endl;
}

در اینصورت اگه از ثابت ها هم استفاده کنیم (به جای عدد 5) میشه به سرعت برنامه رو طوری تغییر داد که تعدداد تیم ها عوض بشه (چون به راحتی فقط مرز for رو عوض میکنیم).



برای سایر قسمت های کد هم خودتون میتونین این کار رو انجام بدین...

_________________________________________


خودم فکر کردم که بیام و یه دستور شرطی if/else بنویسم و در اون لحاظ بکنم که تک تک کاراکتر های ورودی رو از 'a' تا 'z' چک بکنه و هرجا چیز دیگری وارد بشه error بده !! اما راستش دقیق نمیدونم این دستور رو کجا و بین کدوم حلقه ها و دستور های خروجی cout قرار بدم !! این بود که گفتم با شما هم مشورت بکنم !!
راستش همونطور که eshgh_82 عزیز هم اشاره کردند، یک تابع یا کلاس رو میشه برای این منظور تعریف کرد و هر جایی که خواستین که یک ورودی از کاربر بگیرین اون تابع رو صدا بزنید، مثلا اگه برای این منظور تابع GetNameFromUser رو نوشته باشین:


for( i=0;i<5;i++)
for( i=0;i<5;i++)
team[i] = GetNameFromUser();



چون برنامه براحتی کامپایل و اجرا میشه ولی تو قسمت درصد گلها تو پانزده دقیقه ها فقط عدد صفر رو چاپ میکنه !!! و این منو آزار میده !!
دقیقا نفهمیدم چطور بود، چون تست کردم و بعضی نتایج عجیب بود، بهرحال برای اینکه عدد صفر رو بجای درصد بهتون نده، در حلقه for برای مجموع گلها اینطور نوشتین:


goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]

درحالیکه برای نمایش اطلاعات و در مخرج تقسیم (برای درصد گیری) مجموع گلها رو اینطور نوشتین:


goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]

که با هم شباهتی ندارند، اگه درست متوجه شده باشم، برای جلوگیری از اینجور ایرادات تایپی، همیشه محاسبات رو یکبار انجام بدین و در یک متغیر بریزین و به دفعات ازش استفاده کنین (اینطوری سرعت اجرا هم بیشتر میشه، قاعدتا).
همچنین در جایی که خواستید درصد رو حساب کنید (و ضربدر 100 شده) عدد 100 رو به 100.0F تغییر بدین تا نتیجه حاصل از تقسیم هم اعشاری باشه.
همچنین تمام آکولادهای (علامت { و }) تمامی if ها و for ها رو هم مشخص کنین :لبخندساده:

چقدر طولانی شد، امیدوارم سانسور شده نخونده باشید :لبخند: (خودم دقیقا نفهمیدم این همه که نوشتم چی بود!)

roberty
شنبه 28 اردیبهشت 1387, 00:50 صبح
بیشتر از اون چیزی که من توی این برنامه گیر کنم تو این موضوع موندم که چجوری میتونم از شما دوست عزیز که اینهمه نسبت به من حقیر لطف دارید تشکر کنم !!:قلب::قلب:


برای سایر قسمت های کد هم خودتون میتونین این کار رو انجام بدین

شما لطف دارید !!
حجم برنامه تا قبل از این راهنمایی های شما حدد 250 خط بود که الان به حدود 120 خط کاهش پیدا کرده !!
برنامه تغییر یافته شده اینه !! با فرض اینکه اینبار در محاسبه امتیاز گلها برای برد 2 امتیاز و تساوی یک امتیاز و برای باخت هم صفر امتیاز در نظر گرفتیم !!:لبخند: و بجای کلمه drawIndex از کلمه sameIndex استفاده کردم که مفهوم تساوی تیمها رو بهتر برسونه !!:لبخندساده:

#include <iostream.h>
void main()
{
char team[5][15];//used to enter the name of those five teams in this programm
int time[200]={0};
int counter[200]={0};//used to count the time of winnig and losing and saming the games
float cntphnd[200];//counter per one hundred that is used to descibe the percentage of scoring the goals in any minutes of the football match
int goal[5][5];
int mark[200];
int scored,recived,loseIndex,winIndex,sameIndex;
int i,j,k;
cout<<"Enter five teams"<<"\n";
for( i=0;i<5;i++)
for( i=0;i<5;i++)
cin>>team[i];
cout<<endl;
for( i=0;i<5;i++)
for( j=i;j<5;j++)
if(i!=j )
cout<<team[i]<<" "<<team[j]<<endl;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i!=j){
cout<<"how many goals has "<<team[i]<<" scored to "<<team[j]<<"?";
cin>>goal[i][j];
}
cout<<"the chart of results is\n";
for(i=0;i<5;i++)
for(j=i;j<5;j++)
{
if(i!=j)
cout<<team[i]<<" "<<goal[i][j]<<" **and** "<<team[j]<<" "<<goal[j][i]<<endl;
cout<<endl;
}
for( k=0;k<5; k++)//end of the first chart
{
cout << "FOR TEAM " << "*** " << team[ k ] <<" ***" << "\n";
scored = 0;
recived = 0;
winIndex = 3 * k + 1;
loseIndex = winIndex + 1;
sameIndex = loseIndex + 1;
for( int t = 0; t < 5; t++ )
{
if( goal[k][t] > goal[t][k] )
{
counter[winIndex]++;
}
else if( goal[k][t] < goal[t][k] )
{
counter[loseIndex]++;
}
else
{
counter[sameIndex]++;
}
if( k != t )
{
scored += goal[k][t];
recived += goal[t][k];
}
}
cout << "the number of scored goals" << " is " << scored << endl;
cout << "the number of recived goals" << "is " << recived << endl;
cout << "team " << team[k] << " won the football match " << counter[winIndex] << " times\n";
cout << "team " << team[k] << " lost the football match " << counter[loseIndex] << " times\n";
cout << "team " << team[k] << "got the same result for " << counter[sameIndex] - 1 << " times\n";
mark[k] = 3 * counter[winIndex] + counter[sameIndex] - 1;
cout << "the score of team " << team[k] << " is" << mark[k];//winning has 3 marks and saming has 1 mark and losing has 0 mark
cout << endl;
cout << endl;
cout << endl;
}

cout<<"enter times of scoring the goals of team "<<team[0];
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
cin>>time[i];
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
if(time[i]>90 || time[i]<0)
cout<<"error of entering the time";
else
{
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
if(0<=time[i] && time[i] <=15)
counter[16]++;
cntphnd[1] = float( (counter[16]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[1]<<" percent of goals of team "<<team[0]<<" scored between 0 and 15 minutes ";
cout<<endl;
if(16<=time[i] && time[i] <=30)
counter[17]++;
cntphnd[2]= float ((counter[17]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[2]<<" percent of goals of team "<<team[0]<<" scored between 16 and 30 minutes";
cout<<endl;
if( 31<= time[i] && time[i] <=45)
counter[18]++;
cntphnd[3]= float (counter[18]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]);
cout<<cntphnd[3]<<" percent of goals of team "<<team[0]<<" scored between 31 and 45 minutes ";
cout<<endl;
if(46<=time[i] && time[i]<=60)
counter[19]++;
cntphnd[4]= float ((counter[19]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[4]<<" pecent of goals of team "<<team[0]<<" scored between 46 and 60 minues ";
cout<<endl;
if(61<=time[i] && time[i]<=75)
counter[20]++;
cntphnd[5]= float ((counter[20]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[5]<<" percent of goals of team "<<team[0]<< "scored between 61 and 75 minutes ";
cout<<endl;
if(76<=time[i] && time[i]<=90)
counter[21]++;
cntphnd[6]=float((counter[21]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[6]<< " percent of goals of team "<<team[0]<<" scored between 76 and 90 minutes ";
cout<<endl;
}

}



راستش همونطور که eshgh_82 عزیز هم اشاره کردند، یک تابع یا کلاس رو میشه برای این منظور تعریف کرد و هر جایی که خواستین که یک ورودی از کاربر بگیرین اون تابع رو صدا بزنید، مثلا اگه برای این منظور تابع GetNameFromUser رو نوشته باشین:


for( i=0;i<5;i++)
for( i=0;i<5;i++)
team[i] = GetNameFromUser();


حق با شماست !!
بجای اینکه تو برنامه از کاربر بخواهیم و التماس کنیم که حتما تورو جون هرکی دوست داری حتما کاراکتر وارد کنید !!!!!:قهقهه::قهقهه: میشه یه تابع مثلا با پروتوتایپ
void checktype (char team[][]);
نوشت و با چک کردن تک تک کلمات ورودی از 'z' تا 'a' اونها رو مورد استفاده قرار داد !!
همونطور که تو انتهای برنامه مشاهده میکنید و ناتوانی بنده در استفاده هوشمندانه از حلقه for کاملا واضح و مبرهن هست !!:قهقهه: قراره که دقایق به ثمر رسیدن گلها گرفته بشه که بنده صددرصد واقفم که اینجا هم باید از حلقه for استفاده بشه به این صورت که به گفته شما دوست عزیز یه حلقه مثل
for(int i=0;i<5,i++) برای پنج تا تیم بنویسیم یا اینکه اصلا دوتا حلقه تو در تو که یکی از آنها همین حلقه گفته شده و دیگری حلقه ای مربوط به گرفتن تعداد گلها باشه بنویسیم و سپس با استفاده از تعداد گلهای زده شده هر تیم و دقیقا به تعداد گلهای زده شده از کاربر عدد بگیریم و همونطور که تو پست قبلی هم عرض کردم با تقسیم بندی زمان بازی به شش تا 15 دقیقه تحلیل بکنیم که برای هر تیم چند درصد از گلهای زده شده آن تیم در
چه بازه ای به ثمر رسیده است !! که البته ذهن بنده فقط در حد توضیح دادن قادر به توصیف این مقوله است !!:قهقهه:



دقیقا نفهمیدم چطور بود، چون تست کردم و بعضی نتایج عجیب بود، بهرحال برای اینکه عدد صفر رو بجای درصد بهتون نده، در حلقه for برای مجموع گلها اینطور نوشتین:


goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]

درحالیکه برای نمایش اطلاعات و در مخرج تقسیم (برای درصد گیری) مجموع گلها رو اینطور نوشتین:


goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]

که با هم شباهتی ندارند، اگه درست متوجه شده باشم....

بله !! حق با شماست و بنده اشتباه کردم !!!:اشتباه:


برای جلوگیری از اینجور ایرادات تایپی، همیشه محاسبات رو یکبار انجام بدین و در یک متغیر بریزین و به دفعات ازش استفاده کنین (اینطوری سرعت اجرا هم بیشتر میشه، قاعدت
بله درسته !!
چون معتقدم این تیکه از برنامه (( بعد از قسمتی که مربوط به گرفتن تعداد گلها و نمایش تعداد گلها و تعداد برد و باخت و ... میشه )) واقعا خوانایی برنامه رو پایین میاره برای همین دستش نزدم تا سر فرصت با استفاده از چند تا حلقه for بتونم این تیکه رو پاک کنم و برای تمامی تیمها دقایق به ثمر رسیدن گلها رو بگیرم و تحلیل درصدی انجام بدم !! این چیزی هست که برای شما براحتی چایی خوردن هست (( آواتار شما !!!:بامزه:)) و برای من یه هفته کار میبره :ناراحت:



همچنین در جایی که خواستید درصد رو حساب کنید (و ضربدر 100 شده) عدد 100 رو به 100.0F تغییر بدین تا نتیجه حاصل از تقسیم هم اعشاری باشه
والله بنده منظور شما رو از عبارت 100.0F متوجه نمیشم !!
بنده خواستم برای اینکه تو خروجی جواب عددی از نوع float باشه قبل از پرانتز ها از عبارت float استفاده کنم !! کما اینکه خود آرایه cntphnd رو هم از نوع float تعریف کردم !! ولی نمیدونم چرا حتی با قرار دادن عدد 100.0F بجای 100 هم تغییری در برنامه مشاهده نمیشه !! احتمالا بازهم دلیلش خنگ بودن من هست !!:قهقهه: و اینکه یه جایی اشتباه کردم و خودم هم نمیدونم !! احتمالا تو خروجی جواب بصورت int چاپ میشه که فقط عدد 0 اون ظاهر میشه !!



همچنین تمام آکولادهای (علامت { و }) تمامی if ها و for ها رو هم مشخص کنین :لبخندساده:
چقدر طولانی شد، امیدوارم سانسور شده نخونده باشید :لبخند: (خودم دقیقا نفهمیدم این همه که نوشتم چی بود!)

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

mahtab8025
شنبه 28 اردیبهشت 1387, 14:44 عصر
سلام و خسته نباشید
می خواستم بدونم می تونم اجرای برنامه رو اینجا ببینم.
ممنون

PC2st
یک شنبه 29 اردیبهشت 1387, 20:50 عصر
والله بنده منظور شما رو از عبارت 100.0F متوجه نمیشم !!
بنده خواستم برای اینکه تو خروجی جواب عددی از نوع float باشه قبل از پرانتز ها از عبارت float استفاده کنم !! کما اینکه خود آرایه cntphnd رو هم از نوع float تعریف کردم !! ولی نمیدونم چرا حتی با قرار دادن عدد 100.0F بجای 100 هم تغییری در برنامه مشاهده نمیشه !! احتمالا بازهم دلیلش خنگ بودن من هست !!:قهقهه: و اینکه یه جایی اشتباه کردم و خودم هم نمیدونم !! احتمالا تو خروجی جواب بصورت int چاپ میشه که فقط عدد 0 اون ظاهر میشه !!
بله حق با شماست... منظورم از 100.0f همون تبدیل به اعشاری بود که خودتون قبلا توسط ()float این تبدیل رو انجام داده بودید ولی من حواسم نبود و فکر کردم که کل کسر (عبارت تقسیم) رو درون پرانتز گذاشتین در حالیکه فقط صورت کسر رو درون پرانتز (پرانتز float) گذاشته بودید که در اینصورت نتیجه حاصل از تقسیم (یا کسر) بصورت یک عدد اعشاری بود و دیگه نیازی به اون 100.0f زیادی نبود :متفکر:
درمورد اینکه چرا خروجی همواره صفره، باید بگم که با گذاشتن آکولاد ifها و forها، دیگه نتایج همواره صفر نمیشه. و بدلیل نبودن آکولادها خطاهای غیر قابل انتظاری ممکنه رخ بده. چون در صورتی که آکولادها رو نگذاریم (همانطور که مطلع هستید) فقط خط اول دستورات زیر if به if تعلق داره و سایر دستورات همواره اجرا میشه ولی با فراموش نکردن آکولادها، از این جور خطاهای سهوی، جلوگیری میشه. شدیدا توصیه میکنم (من کی باشم که توصیه کنم :بامزه:) که همواره آکولادها رو بگذارید چون دو مزیت عایدتون میشه:
1) جلوگیری از خطاهای سهوی 2) بالابردن خوانایی برنامه (که مورد دوم مهمتره).
پس اگه آکولادها رو بگذاریم، کد مربوط به گرفتن زمان گل ها، چیزی شبیه به زیر میشه:


cout<<"enter times of scoring the goals of team "<<team[0];
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
cin>>time[i];
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
{
if(time[i]>90 || time[i]<0)
cout<<"error of entering the time";
else
{
for(i=0;i<(goal[4][0]+goal[4][1]+goal[4][2]+goal[4][3]);i++)
{
if(0<=time[i] && time[i] <=15)
{
counter[16]++;
cntphnd[1] = float( (counter[16]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[1]<<" percent of goals of team "<<team[0]<<" scored between 0 and 15 minutes ";
cout<<endl;
}
else if(16<=time[i] && time[i] <=30)
{
counter[17]++;
cntphnd[2]= float ((counter[17]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[2]<<" percent of goals of team "<<team[0]<<" scored between 16 and 30 minutes";
cout<<endl;
}
else if( 31<= time[i] && time[i] <=45)
{
counter[18]++;
cntphnd[3]= float (counter[18]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]);
cout<<cntphnd[3]<<" percent of goals of team "<<team[0]<<" scored between 31 and 45 minutes ";
cout<<endl;
}
else if(46<=time[i] && time[i]<=60)
{
counter[19]++;
cntphnd[4]= float ((counter[19]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[4]<<" pecent of goals of team "<<team[0]<<" scored between 46 and 60 minues ";
cout<<endl;
}
else if(61<=time[i] && time[i]<=75)
{
counter[20]++;
cntphnd[5]= float ((counter[20]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[5]<<" percent of goals of team "<<team[0]<< "scored between 61 and 75 minutes ";
cout<<endl;
}
else if(76<=time[i] && time[i]<=90)
{
counter[21]++;
cntphnd[6]=float((counter[21]*100)/(goal[0][1]+goal[0][2]+goal[0][3]+goal[0][4]));
cout<<cntphnd[6]<< " percent of goals of team "<<team[0]<<" scored between 76 and 90 minutes ";
cout<<endl;
}
}
}
}

راستی اگه چندتا if پشت سر هم (و صدالبته مرتبط با هم) در کد وجود داشت، برای افزایش سرعت اجرا و خوانایی کدها، if های بعدی رو همراه با else میاریم تا اگر شرط اولین if برقرار بود، شرط سایر if های else دار، بررسی نشه. یا مثلا اگه شرط if اول برقرار نبود، به اولین else if میرسه، اگه اون برقرار بود، دستورات داخلش رو اجرا میکنه و سایر else if های مربوطه رو نادیده میگیره، درغیر اینصورت: شرط else if بعدی رو بررسی میکنه (هر چند ممکنه خودتون اینها رو از من بهتر بلد باشین، ولی محض اطمینان اینها رو گفتم).



چه بازه ای به ثمر رسیده است !! که البته ذهن بنده فقط در حد توضیح دادن قادر به توصیف این مقوله است !!:قهقهه:
یه سوال داشتم: :متفکر: تاحالا با قلم و کاغذ، شبه کد برای روند اجرای برنامتون نوشتین؟ (منظورم از شبیه کد اینه که مثلا به فارسی بنویسین که باید فلان کار انجام بشه یا فلان شرط بررسی بشه و غیره)... یک خورده به قضیه ساده نگاه کنین (و البته برای دسترسی به خانه های آرایه کمی ریاضیاتی میشه در نظر گرفت!) منتظر الگوریتمتون هستم...


راستی، تو کدهای این برنامه یک حلقه for زیادی در اوایل کدها وجود داره که با پاک کردن کل خطی که حاوی اون حلقه است، برنامه بدون هیچ مشکلی اجرا میشه... ببینم میتونی پیداش کنی؟ :لبخند: :شیطان: