PDA

View Full Version : ایراد برنامه



vahideh85
جمعه 13 اردیبهشت 1387, 10:13 صبح
سلام
می خواستم ببینم برنامه زیر چه مشکلش چیه؟
مرسی


#include <iostream.h>
#include <conio.h>

class time
{
public:
int hour;
int getTime ();
};


int time::getTime ()
{
cin<<hour;
return hour;
}


int main ()
{
int hour;
time clock;
hour=clock.getTime();
cout<<hour;
getch();
return 0;
}

A_Salimi
جمعه 13 اردیبهشت 1387, 11:26 صبح
تنها اشکال برنامه این بود که شما نوشتید cin<<hour که باید مینوشتید



cin>>hour

vahideh85
جمعه 13 اردیبهشت 1387, 12:09 عصر
مرسی
مشکل این برنامه چی؟
چطوری می شه از یه ارایه هم در کلاس هم در تابع main استفاده کرد؟


#include <iostream.h>
#include <conio.h>

class time
{
public:
int hour,minute;
int timee [10][2];
void getTime ();
};


void time::getTime ()
{
for(int i=0; i<10; i++)
{
cin>>hour>>minute;
timee[i][1]=hour;
timee[i][2]=minute;
}
}




int main ()
{
time timee[10][2];
for (int i=0; i<10; i++)
{
cout<< timee[i][1]<<':'<<timee[i][2];
}


getch();
return 0;
}

A_Salimi
جمعه 13 اردیبهشت 1387, 13:28 عصر
یک راهش اینه که آرایه رو عمومی تعریف کنید اما راه دیگش هم اینه که یک تابع مثلا با نام showtime()
تعریف کنید و از طرفی که آرایه public هست در توابع دیگه قابل شناسایی هستش .

به این صورت :



#include <iostream.h>
#include <conio.h>

class time
{
public:
int hour,minute;
int timee [10][2];
void getTime ();
void ShowTime();
};


void time::getTime ()
{
for(int i=0; i<10; i++)
{
cin>>hour>>minute;
timee[i][1]=hour;
timee[i][2]=minute;
}
}

void time::ShowTime(){
for (int i=0; i<10; i++)
{
cout<< timee[i][1]<<":"<<timee[i][2]<<endl;
}
}


int main ()
{
cout<<"enter ten hour and minute :\n";

time ob;

ob.getTime();
ob.ShowTime();

getch();
return 0;

}

farhadamin
جمعه 13 اردیبهشت 1387, 13:38 عصر
اینجوری هم می تونی بنویسیش


#include <iostream.h>
#include <conio.h>

class time
{
public:
int hour,minute;
int timee [10][2];
void getTime ();
};


void time::getTime ()
{
for(int i=0; i<10; i++)
{
std::cin>>hour>>minute;
timee[i][1]=hour;
timee[i][2]=minute;
std::cout<< timee[i][1]<<":"<<timee[i][2];
}
}




int main ()
{
time A;
A.getTime();

_getch();
return 0;
}


موفق باشی

MRHagh
جمعه 13 اردیبهشت 1387, 14:45 عصر
البته باید توجه کنید که در زبان C اندیس آرایه ها از صفر شروع میشود . بنابراین در تکمیل فرمایش دوستان اصلاحات زیررا هم انجام دهید :

void time::getTime ()
{
for(int i=0; i<10; i++)
{
cin>>hour>>minute;
timee[i][0]=hour;
timee[i][1]=minute;
}
}

موفق باشید ...

vahideh85
جمعه 13 اردیبهشت 1387, 18:05 عصر
ممنون از همه دوستان به خاطر راهنماییتون

باز تو همین برنامه می خواستم کل ساعتا رو بر حسب ثانیه جمع کنم ولی جواب درست در نمی یاد !!
(نمی خوام تابع sum جزو کلاس باشه )

بازم اگه لطف کنین و راهنماییم کنین ممنون




#include <iostream.h>
#include <conio.h>

int timee [2][2];
int hours, minutes, seconds;

class time
{
public:
int hour,minute,second;

void getTime ();

};


void time::getTime ()
{
for(int i=0; i<2; i++)
{
cout<<"-";
cin>>hour>>minute>>second;
cout<<endl;
if((hour<0) || (hour>12) || (minute<0) || (minute>60) || (second<0) || (second>60)) cout<< "wrong numbers";
timee[i][0]=hour;
timee[i][1]=minute;
timee[i][2]=minute;
}
}




int sum ()
{
hours=0, minutes=0, seconds=0;
for (int i=0; i<2; i++)
{
hours+=timee[i][0];
minutes+=timee[i][1];
seconds+=timee[i][2];
}

return seconds+minutes*60+hours*3600 ;

}


int main ()
{

cout<<"enter 2 hour and minute and second (hh mm ss) :\n";
time ob;
ob.getTime();
cout<< "sum of seconds :" << sum();


getch();
return 0;

}

farhadamin
جمعه 13 اردیبهشت 1387, 22:39 عصر
من با دقت نگاه نکردم اما این جا کاملا مشخص است که اشتباه است...البته بهتر هم می شد بنویسی


timee[i][0]=hour;
timee[i][1]=minute;
timee[i][2]=minute;

موفق باشی

vahideh85
جمعه 13 اردیبهشت 1387, 23:08 عصر
خیلی ممنون
همونو خودمم تازه دیدم
ولی باز مشکل داره
سه ثانیه یا دو ثانیه این ور اون ور چاپ می کنه جمعشونو:ناراحت:

A_Salimi
جمعه 13 اردیبهشت 1387, 23:27 عصر
در برنامه تغییرات زیادی رو حاصل کردم تا چیزی که میخواین بشه

مطالعه کنید اگه در جایی اشکال داشتید بگید توضیح بدم .



#include <iostream.h>
#include <conio.h>

int timee [3][3];
int hours, minutes, seconds;

class time
{
public:
int hour,minute,second;

void getTime ();

};


void time::getTime ()
{
int i=0;
while (i!=2)
{
cout<<"-"<<endl;
cin>>hour>>minute>>second;

cout<<endl;


if((hour<0) || (hour>12) || (minute<0) ||(minute>60) || (second<0) || (second>60)){
cout<< "wrong numbers";


continue;
}
timee[i][0]=hour;
timee[i][1]=minute;
timee[i][2]=minute;
i++;
}

}




int sum ()
{
hours=0, minutes=0, seconds=0;

for (int i=0; i<2; i++)
{

hours+=timee[i][0];
minutes+=timee[i][1];
seconds+=timee[i][2];
}

return seconds+minutes*60+hours*3600 ;

}


int main ()
{

cout<<"enter 2 hour and minute and second (hh mm ss) :\n"<<endl;
time ob;
ob.getTime();
cout<< "sum of seconds :" << sum();


getch();
return 0;

}

vahideh85
جمعه 13 اردیبهشت 1387, 23:41 عصر
بازم ممنون
continue نفهمیدم برا اینه که برنامه رو ادامه بده؟
ولی من می خواستم exit بزارم ولی طرز کارشو بلد نیستم
(البته طرز کار continue رو هم بلد نیستم تا حالا به کار نبردمشون)

و بازم درست نمی یاد
برای مشخص شدن sum رو این مدلی نوشتم
مشکل از second هستش همشونو درست می یاره به جز second!!!


void sum ()
{
hours=0, minutes=0, seconds=0;

for (int i=0; i<2; i++)
{
hours+=timee[i][0];
minutes+=timee[i][1];
seconds+=timee[i][2];
}

cout<< hours <<":"<<minutes<<":"<<seconds;

}

A_Salimi
جمعه 13 اردیبهشت 1387, 23:58 عصر
Continue رو برای این گذاشتم که اگر عددی اشتباه وارد شه دوباره برگرده به while
ضمنا بین شرط ها هم & گذاشته بودید که من | گذاشتم
بقیه رو خودتون بررسی کنید و در حالت دیباگ عیب زدایی کنید

موفق باشید .

vahideh85
شنبه 14 اردیبهشت 1387, 00:11 صبح
بین شرطا || بود

خیلی خیلی ممنون برا راهنمایی همه دوستان
مرسی

A_Salimi
شنبه 14 اردیبهشت 1387, 00:12 صبح
این رو هم بگم که مشکل ثانیه رو دوستمون گفتند اون خط رو اینطوری تغییر بدید



timee[i][2]=second;