سلام....
من یک دو تا تابع برای مرتب کردن خروحی به برنامه اضافه کردم اما چندان درست کار نمی کنند... یعنی فقط ساعت را مد نطر دارند و در صورتی که ساعت ها برابر باشند .... به دقیقه و ثانیه کاری ندارند.........
در ضمن من دو تا if هم استفاده کردم برای این کا باید ساعت ها برای بزرگتر از 12 به صورت صعودی و برای کوچک تر از آن به صورت نزولی مرتب شوند....... اما این ها هم درست کار نمی کنندد .... ممنون می شم یک نگاهی به برنامه بیندازید.....نمی دونم این کار را راحت تر هم می شود کرد یا با یک تابع..... .
خیلی ممنون
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
/**********************Bubble sortering1***************///
void bubbleSort1(int *ta11,int *ta12,int *ta13,int max)
{
int i,imax,j,k;
int save1,save2,save3;
do
{
for (j=0,i=0,k=0;i<max-1;i++)
{
if (ta11[i+1]<ta11[i])
{
save1=ta11[i];
save2=ta12[i];
save2=ta13[i];
ta11[i]=ta11[i+1];
ta12[i]=ta12[i+1];
ta13[i]=ta13[i+1];
ta11[i+1]=save1;
ta12[i+1]=save2;
ta13[i+1]=save3;
j=i=k;
}
}
imax=j=k;
}
while (imax>0);
}
//************************end*********************** **//
/**********************Bubble sortering2***************///
void bubbleSort2(int *ta14,int *ta15,int *ta16,int max1)
{
int i,imax,j,k;
int save4,save5,save6;
do
{
for (j=0,i=0,k=0;i<max1-1;i++)
{
if (ta14[i+1]>ta14[i])
{
save4=ta14[i];
save5=ta15[i];
save6=ta16[i];
ta14[i]=ta14[i+1];
ta15[i]=ta15[i+1];
ta16[i]=ta16[i+1];
ta14[i+1]=save4;
ta15[i+1]=save5;
ta16[i+1]=save6;
j=i=k;
}
}
imax=j=k;
}
while (imax>0);
}
//************************end*********************** **//
//*******************ny til gammel******************///
void nytilgammel(double *nytimer, int *gtime, int *gmin, int *gsek,int n)
{
int i;
for (i=0; i<n; i++)
{
nytimer[i] *= (24./20.);
gtime[i] = (int) nytimer[i];
nytimer[i] -= gtime[i];
nytimer[i] *= 60;
gmin[i] = (int) nytimer[i];
nytimer[i] -= gmin[i];
nytimer[i] *= 60;
gsek[i] = (int) nytimer[i];
/* if (nytimer[i] - gsek[i]>0.50)
gsek[i]+= 1;
//*******************/
//Retter sek og min i 100 //
/* if (gsek[i]>=60)
{
gsek[i] -=60;
gmin[i] += 1;
}
if (gmin[i]>=60)
{
gmin[i] -=60;
gtime[i] += 1;
}
*/
}
}
//*********************end**************************//
//*******************gammel til ny*********************//
void gammeltilny (int *time, int *min, int *sek,double *nytid, int n)
{
int i;
for (i=0; i<n; i++)
{
nytid[i] = ((((sek[i]/60.)+ min[i])/60.)+ time[i])*(20./24.);
}
}
//**********************end************************* **//
int main()
{
FILE *fp1, *fp2;
FILE *fp3, *fp4;
int gtime[80], gmin[80], gsek[80];
double nytimer[80];
int time[80], min[80], sek[80];
double nytid [80];
char menu;
int i, counter;
printf("\n\t*Det program regner mellem to tidsystemer\n\tv?lge sin valg til regning*\n");
printf("\n\ta. for ny til gammel");
printf("\tb. for gammel til ny\n");
printf("\n\tc.for Exit\n");
scanf("%s", &menu);
while ( true ) // just exit when number 3 is pressed
{
//***********************************************//
if( menu=='a'||menu=='A')
{
fp1 = fopen("inddata1.txt","r");
fp2 = fopen("uddata.txt", "w");
for (i=0; fscanf(fp1,"%lf",&nytimer[i])!=EOF; i++)
{
counter = i;
}
counter++ ; // counter is one more
// counter means number of data read divided by 3
nytilgammel( nytimer, gtime, gmin, gsek,counter);
fprintf(fp2,"Resultatet af convert til gammel tider er: \n\n");
for (i=0; i<counter; i++)
{
fprintf(fp2,"%02d %02d %02d\n",gtime[i],gmin[i],gsek[i]);
}
fprintf(fp2,"\nResultatet af sorteringen: \n\n");
if (gtime[i]<=12)
{
bubbleSort1( gtime, gmin, gsek,counter);
for (i=0;i<counter;i++)
{
fprintf(fp2,"%02d %02d %02d\n",gtime[i],gmin[i],gsek[i]);
}
}
else
{
bubbleSort2( gtime, gmin, gsek,counter);
fprintf(fp2,"\nResultatet af sorteringen: \n\n");
for (i=0;i<counter;i++)
{
fprintf(fp2,"%02d %02d %02d\n",gtime[i],gmin[i],gsek[i]);
}
}
fprintf(fp2, "\nDet sorterede array er: %d",counter);
}
//**************************************//
else if(menu=='b'||menu=='B')
{
fp3 = fopen("ind.txt","r");
fp4 = fopen("ud.txt", "w");
for (i=0; fscanf(fp3,"%d%d%d",&time[i],&min[i],&sek[i])!=EOF; i++)
{
counter = i;
}
counter++ ; // counter + 1, because for the first loop get i=0
gammeltilny ( time, min ,sek, nytid, counter);
for (i=0; i<counter; i++)
{
fprintf(fp4,"Ny tid: %07.4lf\n\n\n",nytid[i]);
}
fprintf(fp4, "\n\n\n\nDet sorterede array er: %d",counter);
}
else if(menu=='c'||menu=='C')
{
exit(0);
}
else
{
printf("Wrong number Entered, try it again\n");
}
scanf("%s", &menu);
}
}