Народ. Идет экзамен, Вот задание
выручайте, у нас тут целая группа
Идет Экзамен
Started By PressSetter, мая 21 2007 13:21
5 ответов в этой теме
#2
Отправлено 21 мая 2007 - 14:31
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char hw[500];
int beg;
int end;
int time;
double len;
} rem;
double dl(char *,char *);
int cmp(const void *,const void *);
int npaev(char*);
int paevad(char *);
int main(void)
{
char ar[1001],*p,*p2;
FILE *fin;
int i,n;
rem *mas[1000];
if((fin=fopen("TeeRemont.txt","r"))==NULL)
{
fprintf(stderr,"No input file found.\n");
getchar();
return 1;
}
for(n=0;fgets(ar,1000,fin)!=NULL&&ar[0]!='\n';n++)
{
mas[n]=new(rem);
strcpy(mas[n]->hw,strtok(ar,"\t"));
p=strtok(NULL,"\t");
p2=strchr(p,'-')+1;
mas[n]->beg=paevad(p);
mas[n]->end=paevad(p2);
mas[n]->time=npaev(p2)-npaev(p);
p=strtok(NULL,"\t");
p2=strchr(p,'-')+1;
mas[n]->len=dl(p,p2);
}
qsort(mas,n,sizeof(rem*),cmp);
for(i=0;i<n;i++)
{
printf("%s, alates %02d/%02d/%04d, %d paeva, %.2lf\n",
mas[i]->hw,mas[i]->beg%100,(mas[i]->beg/100)%100,
mas[i]->beg/10000,mas[i]->time,mas[i]->len);
}
/*
printf("%d\n",npaev("29/06/2007")-npaev("11/04/2007"));
*/
getchar();
return 0;
}
int npaev(char *str)
{
static const int ar[]={31,28,31,30,31,30,31,31,30,31,30,31};
int i,d,m,y;
char *p,*p2;
d=strtol(str,&p,10);
m=strtol(p+1,&p2,10);
//y=strtol(p2+1,&p,10);
for(i=0;i<m-1;i++)
d+=ar[i];
return d;
}
int paevad(char *
{
int beg;
char *p,*p2;
beg=strtol(b,&p,10);
beg+=strtol(p+1,&p2,10)*100;
beg+=strtol(p2+1,&p,10)*10000;
return beg;
}
int cmp(const void *a,const void *
{
return ((*(rem**)a)->beg)-((*(rem**)->beg);
}
double dl(char *b,char *e)
{
return strtod(e,NULL)-strtod(b,NULL);
}
помогите разобраться с данной прогой, это на 4, что где что означает в кратце
#include <stdlib.h>
#include <string.h>
typedef struct{
char hw[500];
int beg;
int end;
int time;
double len;
} rem;
double dl(char *,char *);
int cmp(const void *,const void *);
int npaev(char*);
int paevad(char *);
int main(void)
{
char ar[1001],*p,*p2;
FILE *fin;
int i,n;
rem *mas[1000];
if((fin=fopen("TeeRemont.txt","r"))==NULL)
{
fprintf(stderr,"No input file found.\n");
getchar();
return 1;
}
for(n=0;fgets(ar,1000,fin)!=NULL&&ar[0]!='\n';n++)
{
mas[n]=new(rem);
strcpy(mas[n]->hw,strtok(ar,"\t"));
p=strtok(NULL,"\t");
p2=strchr(p,'-')+1;
mas[n]->beg=paevad(p);
mas[n]->end=paevad(p2);
mas[n]->time=npaev(p2)-npaev(p);
p=strtok(NULL,"\t");
p2=strchr(p,'-')+1;
mas[n]->len=dl(p,p2);
}
qsort(mas,n,sizeof(rem*),cmp);
for(i=0;i<n;i++)
{
printf("%s, alates %02d/%02d/%04d, %d paeva, %.2lf\n",
mas[i]->hw,mas[i]->beg%100,(mas[i]->beg/100)%100,
mas[i]->beg/10000,mas[i]->time,mas[i]->len);
}
/*
printf("%d\n",npaev("29/06/2007")-npaev("11/04/2007"));
*/
getchar();
return 0;
}
int npaev(char *str)
{
static const int ar[]={31,28,31,30,31,30,31,31,30,31,30,31};
int i,d,m,y;
char *p,*p2;
d=strtol(str,&p,10);
m=strtol(p+1,&p2,10);
//y=strtol(p2+1,&p,10);
for(i=0;i<m-1;i++)
d+=ar[i];
return d;
}
int paevad(char *
{
int beg;
char *p,*p2;
beg=strtol(b,&p,10);
beg+=strtol(p+1,&p2,10)*100;
beg+=strtol(p2+1,&p,10)*10000;
return beg;
}
int cmp(const void *a,const void *
{
return ((*(rem**)a)->beg)-((*(rem**)->beg);
}
double dl(char *b,char *e)
{
return strtod(e,NULL)-strtod(b,NULL);
}
помогите разобраться с данной прогой, это на 4, что где что означает в кратце
#3
Отправлено 21 мая 2007 - 14:51
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int npaev(char*);
int main(void){
char fail[14]="Teeremont.txt"; // nazvanije faila
char rida[200],*mantee,*kuup1,*kuup2,*kaug1,*kaug2,*kuupcpy; //strka faila i ejo kuski
float kaugus1, kaugus2,kaugus;
int kestvus=0;
FILE *fp;
fp=fopen(fail,"r");
if(!fp){printf ("Faili avamine ebaonnestus\n");
getch();return 1;}
while(1){ //4tenije stroki faila i ee obrabotka(nahozdenije datq na4ala, konca, etc...)
fgets(rida,sizeof(rida), fp);
mantee=strtok(rida," ");
kuup1=strtok(NULL," - ");
kuup2=strtok(NULL," ");
kaug1=strtok(NULL," - ");
kaug2=strtok(NULL,"\n");
kuup1=strtok(kuup1," ");
strcpy(kuupcpy,kuup1);
kuup2=strtok(kuup2," -");
kaug1=strtok(kaug1," ");
kaug2=strtok(kaug2," - ");
kaugus1=atof(kaug1);
kaugus2=atof(kaug2);
kaugus=kaugus2-kaugus1;
kestvus=npaev(kuup2)-npaev(kuup1); //vqzov funkcii npaev, kotoraja vqdajot koli4estvo dnej s na4ala goda
printf("Mantee: %s, alates %s, %d paeva, %2.2f kilometrit\n", mantee,kuupcpy,kestvus,kaugus); // vqvod vsej informacii
if(feof(fp))break;
}
fclose(fp);
printf("\nVajuta suvalisele klahvile...");
getch();
return 0;
}
int npaev(char *kuup1){
int aasta1,kuu1,paev1;
int kuud[]={31,28,31,30,31,30,31,31,30,31,30,31}; //dlinnq mesjacev
int kuupPaevas=0;
int i=0, kestvus=0;
paev1=atoi(strtok(kuup1,"/")); //obrabotka datq(otrezanije dnja, mesjaca, goda)
kuu1=atoi(strtok(NULL,"/"));
aasta1=atoi(strtok(NULL,""));
for(i=0;i<kuu1-1;i++){ //pods4et koli4estva dnej
kuupPaevas=kuupPaevas+kuud[i];
}
kuupPaevas=kuupPaevas+paev1;
return kuupPaevas; // vozvdashjajet koli4estvo dnej
}
вот еще одна чето не пашет, найдите ошибку)
спасибо хоть за внимание
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int npaev(char*);
int main(void){
char fail[14]="Teeremont.txt"; // nazvanije faila
char rida[200],*mantee,*kuup1,*kuup2,*kaug1,*kaug2,*kuupcpy; //strka faila i ejo kuski
float kaugus1, kaugus2,kaugus;
int kestvus=0;
FILE *fp;
fp=fopen(fail,"r");
if(!fp){printf ("Faili avamine ebaonnestus\n");
getch();return 1;}
while(1){ //4tenije stroki faila i ee obrabotka(nahozdenije datq na4ala, konca, etc...)
fgets(rida,sizeof(rida), fp);
mantee=strtok(rida," ");
kuup1=strtok(NULL," - ");
kuup2=strtok(NULL," ");
kaug1=strtok(NULL," - ");
kaug2=strtok(NULL,"\n");
kuup1=strtok(kuup1," ");
strcpy(kuupcpy,kuup1);
kuup2=strtok(kuup2," -");
kaug1=strtok(kaug1," ");
kaug2=strtok(kaug2," - ");
kaugus1=atof(kaug1);
kaugus2=atof(kaug2);
kaugus=kaugus2-kaugus1;
kestvus=npaev(kuup2)-npaev(kuup1); //vqzov funkcii npaev, kotoraja vqdajot koli4estvo dnej s na4ala goda
printf("Mantee: %s, alates %s, %d paeva, %2.2f kilometrit\n", mantee,kuupcpy,kestvus,kaugus); // vqvod vsej informacii
if(feof(fp))break;
}
fclose(fp);
printf("\nVajuta suvalisele klahvile...");
getch();
return 0;
}
int npaev(char *kuup1){
int aasta1,kuu1,paev1;
int kuud[]={31,28,31,30,31,30,31,31,30,31,30,31}; //dlinnq mesjacev
int kuupPaevas=0;
int i=0, kestvus=0;
paev1=atoi(strtok(kuup1,"/")); //obrabotka datq(otrezanije dnja, mesjaca, goda)
kuu1=atoi(strtok(NULL,"/"));
aasta1=atoi(strtok(NULL,""));
for(i=0;i<kuu1-1;i++){ //pods4et koli4estva dnej
kuupPaevas=kuupPaevas+kuud[i];
}
kuupPaevas=kuupPaevas+paev1;
return kuupPaevas; // vozvdashjajet koli4estvo dnej
}
вот еще одна чето не пашет, найдите ошибку)
спасибо хоть за внимание