PDA

View Full Version : تورو خدا بگین اشکال برنامم کجاس!



amir0102
دوشنبه 15 خرداد 1391, 15:41 عصر
سلام به همه ی اساتید، دوستان عاجزانه درخواست دارم که راهنمایین کنین.
استادم یه پروژه داده بهم به این شکل:
برنامه ای بنویسید که 10 عدد طبیعی را بطور تصادفی تولید کند و آنهارا بصورت ثانیه در نظر بگیرد،سپس هریک از این ثانیه ها را به فرمت hh:mm:ss در آورد و در آخر از کوچیک به بزرگ مرتب کند.
اینم برنامم،3 روز باهاش درگیرم ولی نمیفهمم مشکلش کجاس!


#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include <conio.h>



int main(void){
int a,r[10],i=0,j=0,m,h,s;


printf("\a Secound\n");
do{ //START gereftan 10 adad tasadofi//
r[i]=rand()%86401;
printf("T%d : %d\n",i,r[i]);
i++;
} while(i<=9); //END gereftan 10 adad tasadofi//
printf("\a\n Sorting Times\n");


//ijad format hh:mm:ss//

for(j=0;j<=9;j++){
if (r[j]<60)
{ if (r[j]<10)
printf("T%d 00:00:0%d\n",j,r[j]);
else
printf("T%d 00:00:%d\n",j,r[j]);
}
if (r[j]==60)
printf("T%d 00:01:00\n",j);
if (r[j]>60)
{ m=int (r[j]/60);
s=r[j]%60;
if (m<60)
{ if (m<10)
if (s<10)
printf("T%d 00:0%d:0%d\n",j,m,s);
else
printf("T%d 00:0%d:%d\n",j,m,s);
if (m>10)
if (s>10)
printf("T%d 00:%d:%d\n",j,m,s);
else
printf("T 00:%d:0%d\n",j,m,s);
}
if (m==60)
printf("T%d 01:00:00",j);
if (m>60)
{ h=int(m/60);
m=m%60;
if (h<60)
{ if (h<10)
if (m<10)
if (s<10)
printf("T%d 0%d:0%d:0%d\n",j,h,m,s);

else if (h<10)
if(m<10)
if(s>10)
printf("T%d 0%d:0%d:%d\n",j,h,m,s);
else if (h<10)
if(m>10)
if(s>10)
printf("T%d 0%d:%d:%d\n",j,h,m,s);
else if (h>10)
if(m<10)
if(s<10)
printf("T%d %d:0%d:0%d\n",j,h,m,s);
else if (h<10)
if(m>10)
if(s>10)
printf("T%d %0d:%d:0%d\n",j,h,m,s);
else if (h>10)
if(m>10)
if(s<10)
printf("T%d %d:%d:0%d\n",j,h,m,s);
else if (h>10)
if(m<10)
if(s>10)
printf("T%d %d:0%d:%d\n",j,h,m,s);
else if (h>10)
if(m>10)
if(s>10)
printf("T%d %d:%d:%d\n",j,h,m,s);
}





}
}
}


getch();
return 0;

}

one hacker alone
دوشنبه 15 خرداد 1391, 19:55 عصر
اول اینکه اگه کدی در اینجا قرار میدین اون رو بین تگ کد بزارید تا به هم نریزه دوم اینکه برنامه رو تقسیم به اجزای کوچک تر کن و تابع برای هر کدوم بنویس اینجوری خطایابی خیلی راحت تر هست
با این کد های در هم ریخته کسی حوصله نداره بشینه کد رو نگاه کنه کد ها رو مرتب کنین
بعد الگوریتم کارتون رو بگین ببینم چجوری پیش رفتین
مثلا الان این عدد تصادفی بین چند تا چند باشه؟

amir0102
دوشنبه 15 خرداد 1391, 20:13 عصر
اول اینکه اگه کدی در اینجا قرار میدین اون رو بین تگ کد بزارید تا به هم نریزه دوم اینکه برنامه رو تقسیم به اجزای کوچک تر کن و تابع برای هر کدوم بنویس اینجوری خطایابی خیلی راحت تر هست
با این کد های در هم ریخته کسی حوصله نداره بشینه کد رو نگاه کنه کد ها رو مرتب کنین
بعد الگوریتم کارتون رو بگین ببینم چجوری پیش رفتین
مثلا الان این عدد تصادفی بین چند تا چند باشه؟

سلام،راستیتش من بلد نبودم بین تگ کد قرار بدم،بعدش اینکه اعداد تصادفیم باید بین 0 وrand max یعنی کل بازه ی تابعrand();

amir0102
دوشنبه 15 خرداد 1391, 20:21 عصر
اول اینکه اگه کدی در اینجا قرار میدین اون رو بین تگ کد بزارید تا به هم نریزه دوم اینکه برنامه رو تقسیم به اجزای کوچک تر کن و تابع برای هر کدوم بنویس اینجوری خطایابی خیلی راحت تر هست
با این کد های در هم ریخته کسی حوصله نداره بشینه کد رو نگاه کنه کد ها رو مرتب کنین
بعد الگوریتم کارتون رو بگین ببینم چجوری پیش رفتین
مثلا الان این عدد تصادفی بین چند تا چند باشه؟
دوست عزیز،من الان همه کارای برنامرو کردم غیر از مرتب کردنش.اما نمیدونم چرا فقط سه تا عددمو (از ده تا) تبدیل به فرمت hh:mm:ss میکنه.

vistacali
دوشنبه 15 خرداد 1391, 20:26 عصر
میشه بگی مشکلت با کجای کد هست این کد که اجرا شد دقیق بگپ ببینم درست توضیح بده تا بفهمم چی میخوای
87887

amir0102
دوشنبه 15 خرداد 1391, 20:37 عصر
میشه بگی مشکلت با کجای کد هست این کد که اجرا شد دقیق بگپ ببینم درست توضیح بده تا بفهمم چی میخوای
87887

داداشی این کد باید هر ده تا عدد بالا رو تبدیل کنه به ساعت،تو کامپیوتر من 3 تاش تبدیل میشه(t0,t1,t3)الان تو سیستم شما فقط t8 ولی باید از t0باشه تا t9.
راستی مرسی که کدمو اجرا کردی.

vistacali
دوشنبه 15 خرداد 1391, 20:45 عصر
87888
داداشی این کد باید هر ده تا عدد بالا رو تبدیل کنه به ساعت،تو کامپیوتر من 3 تاش تبدیل میشه(t0,t1,t3)الان تو سیستم شما فقط t8 ولی باید از t0باشه تا t9.
راستی مرسی که کدمو اجرا کردی.

الان همونه که میخوای ؟

amir0102
دوشنبه 15 خرداد 1391, 20:56 عصر
87888

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

vistacali
دوشنبه 15 خرداد 1391, 21:00 عصر
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<time.h>

using namespace std;
int main(void)
{
srand(time(NULL));
int a,r[10],i=0,j=0,m,h,s;

printf("\a Secound\n");
do
{int x;
//START gereftan 10 adad tasadofi
x=rand() % ((RAND_MAX)%500);
r[i]=x ;
printf("T%d : %d\n",i,r[i]);
i++;
} while(i<=9);
//END gereftan 10 adad tasadofi

printf("\a\n Sorting Times\n");


//ijad format hh:mm:ss//

for(j=0;j<=9;j++){
if (r[j]<60)
{ if (r[j]<10)
printf("T%d 00:00:0%d\n",j,r[j]);
else
printf("T%d 00:00:%d\n",j,r[j]);
}
if (r[j]==60)
printf("T%d 00:01:00\n",j);
if (r[j]>60)
{ m=int (r[j]/60);
s=r[j]%60;
if (m<60)
{ if (m<10)
if (s<10)
printf("T%d 00:0%d:0%d\n",j,m,s);
else
printf("T%d 00:0%d:%d\n",j,m,s);
if (m>10)
if (s>10)
printf("T%d 00:%d:%d\n",j,m,s);
else
printf("T 00:%d:0%d\n",j,m,s);
}
if (m==60)
printf("T%d 01:00:00",j);
if (m>60)
{ h=int(m/60);
m=m%60;
if (h<60)
{ if (h<10)
if (m<10)
if (s<10)
printf("T%d 0%d:0%d:0%d\n",j,h,m,s);

else if (h<10)
if(m<10)
if(s>10)
printf("T%d 0%d:0%d:%d\n",j,h,m,s);
else if (h<10)
if(m>10)
if(s>10)
printf("T%d 0%d:%d:%d\n",j,h,m,s);
else if (h>10)
if(m<10)
if(s<10)
printf("T%d %d:0%d:0%d\n",j,h,m,s);
else if (h<10)
if(m>10)
if(s>10)
printf("T%d %0d:%d:0%d\n",j,h,m,s);
else if (h>10)
if(m>10)
if(s<10)
printf("T%d %d:%d:0%d\n",j,h,m,s);
else if (h>10)
if(m<10)
if(s>10)
printf("T%d %d:0%d:%d\n",j,h,m,s);
else if (h>10)
if(m>10)
if(s>10)
printf("T%d %d:%d:%d\n",j,h,m,s);
}





}
}
}

return 0;

}



توی خط 16 برنامه نگاه کن این خط متوجه میشی اونجایی که تابع RAND_MAXرو اضاف کردم

amir0102
دوشنبه 15 خرداد 1391, 21:26 عصر
داداش من الان متوجه شددم کجاشه،ولی استاد گفته همه اعداد،یعنی نباید محدود به اعداد زیر 500.
با اعداد زیر 4000 مشکل نداره ولی به بالا قاطی میکنه!!!
دیوونم کرده