PDA

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



amir0102
سه شنبه 16 خرداد 1391, 14:19 عصر
سلام به اساتید،تو برنامم یه مشکل کوچیک خوردم،میشه یه نگاه بکنید،بگین مشکلش کجاس با زبان c نوشتم
باید ده تا عدد تصادفی بگیره(محدوده ی اعداد تصادفی باید از 0 باشه تا بینهایت)،بعد به فرمتی که تو برنامه هست(hh:mm:ss) چاپ کنه و مرتب کنه.الان درسته ولی فقط اعداد زیر 500 باشه درسته،وگرنه قاطی میکنه!!!


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



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

//************************************************** formate darkhasti 1************************************************* ******

printf("\a Secound\n");

//************************************************** START gereftan 10 adad tasadof******************************************* *
srand(time(NULL));
do{

int long x;

x=rand() % ((RAND_MAX)%500);
r[i]=x;
printf("T%d : %d\n",i,r[i]);
i++;


} while(i<=9);
//************************************************** formate darkhasti 2************************************************* ******
printf("\a\n Sorting Times\n");



//************************************************** create format :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]);
}

//************************************************** create format :mm:ss******************************************** **********
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);
}
//************************************************** create format hh:mm:ss****************************************** ***********
if (m==60)
printf("T%d 01:00:00",j);
if (m>60)
{ h=int(m/60);
m=m%60;
if (h<24)
{ 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
سه شنبه 16 خرداد 1391, 15:20 عصر
مهندس قاطی میکنه یعنی چی به نظر من اگه برنامه رو با یه کامپایلر خوب trace کنی به مشکل پی میبری
trace حل میکنه مشکلو

amir0102
سه شنبه 16 خرداد 1391, 15:40 عصر
مهندس قاطی میکنه یعنی چی به نظر من اگه برنامه رو با یه کامپایلر خوب trace کنی به مشکل پی میبری
trace حل میکنه مشکلو

سلام،بابا من بار اولمه دارم یه برنامه مینویسم،ترم یک کامپیوترم.trace نمیدونم چیه
!
ببین ده تا عدد الان برنامم تولید میکنه زیر پونصد،ببعد به فرمت ساعت،پایین چاپ میکنه،ولی اگخ بگم مثلا اعداد تصادفی زیر85000 باشه،فرمت ساعت بهم میریزه.
نمیدونم چه ریطی داره که برنامه به مشکل میخوره!دیگه دیوونم کرده!

#target
سه شنبه 16 خرداد 1391, 16:06 عصر
چه خبره اون همه شرط !!!!!


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

int long x;

x=rand() % ((RAND_MAX)%86399);
r[i]=x;
printf("T%d : %d\n",i,r[i]);
i++;


} while(i<=9);
// ----------- PRINT - Tabdyl addad Be Form Saat Az Sanie
for (int i = 0 ; i < 10 ; i++)
{ int x = r[i];
int hr = x / 3600;
x -= (hr*3600);
int min = x / 60;
x -= (min*60);
printf("%d : %d : %d \n" , hr , min , x);
}
}

amir0102
سه شنبه 16 خرداد 1391, 16:17 عصر
چه خبره اون همه شرط !!!!!


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

int long x;

x=rand() % ((RAND_MAX)%86399);
r[i]=x;
printf("T%d : %d\n",i,r[i]);
i++;


} while(i<=9);
// ----------- PRINT - Tabdyl addad Be Form Saat Az Sanie
for (int i = 0 ; i < 10 ; i++)
{ int x = r[i];
int hr = x / 3600;
x -= (hr*3600);
int min = x / 60;
x -= (min*60);
printf("%d : %d : %d \n" , hr , min , x);
}
}

اینطوری آخه فرمتش درست در نمیاد.مثلا عدد 41 باید دقیقا فرمتش 00:00:41 باشه.الان این کدی که شما زحمتشو کشیدی،فرمتش درست نیست.
یک دنیا ممنون بابت برنامه.

one hacker alone
سه شنبه 16 خرداد 1391, 16:19 عصر
اخ دمت گرم برادر من هروقت کد این بنده خدا رو میدیدم تحریک میشدم برنامه رو بخونم و شرط رو کوتاه کنم که شما انجام دادین ابته نمیدونم کار میکنه یا نه اما خوب اون همه شرط هم نیاز نبود

دوست عزیز شما کد این دوستمون که بهینه تر هست رو جایگزاری کنید شاید الگوریتمتون مشکل داشته باشه اگه باز مشکل پا بر جا بود حلش میکنیم

amir0102
سه شنبه 16 خرداد 1391, 16:24 عصر
داداشی مشکل نداره،فقط فرمتش دقیق نیست،که عدلم استاد گیرش رو فرمته!مثلا 29000 رو 8:5:18 چاپ میکنه ولی استاد گفته حتما باید 08:05:18 چاپ کنه!!!:گریه:

#target
سه شنبه 16 خرداد 1391, 16:35 عصر
آها . فهمیدم !
printf("%02d : %02d : %02d \n" , hr , min , x);
پرینت به این صورت کن
%02d
یعنی عدد دو رقم اگه گمتره صفر بذار . استاد احتمالا منظورش این بوده !
کدی که نوشتم هم تست کردم درست کار میکنه !!!