Kezdőoldal » Számítástechnika » Programozás » Egy érettségi utolsó feladatát...

Egy érettségi utolsó feladatát nem tudom megoldani. Hogyan kellene?

Figyelt kérdés

Code Blocks-ot használok.

Így szól a feladat :


Melyik volt az az autó, melynek egy napon belüli két tankolása között a legrövidebb idő telt el? Írja ki a képernyőre az autó rendszámát, a két időpont és a közöttük eltelt percek számát!


Eddig jutottam a programban: (több feladat is van benne)


#include <stdio.h>

#include <stdlib.h>


typedef struct{

int tip;

int lit;

char rsz[8];

int e,h,n,o,p;


} tankolas;


tankolas tank[1000], s;


int main()

{

FILE *be;

int dbmax;

int i;

long int ossz[5];

char r[8];

int szlo;

int j;

FILE *ki;


//1. Feladat

be=fopen("tankolas.txt", "r");


dbmax=0;

while(!feof(be)){

fscanf(be, "%i", &tank[dbmax].tip);

if(!feof(be)){

fscanf(be, "%i", &tank[dbmax].lit);

fscanf(be, "%s", &tank[dbmax].rsz);

fscanf(be, "%i.%d.%d", &tank[dbmax].e,

&tank[dbmax].h,

&tank[dbmax].n);

fscanf(be, "%d:%d", &tank[dbmax].o,

&tank[dbmax].p);

dbmax++;

}

}


fclose(be);


//1. Feladat Teszt

/*

for(i=0; i<dbmax; i++){

printf("%i %i %s %i.%i.%i %i:%i\n",

tank[i].tip,

tank[i].lit,

tank[i].rsz,

tank[i].e,

tank[i].h,

tank[i].n,

tank[i].o,

tank[i].p);

}

printf("DBMAX: %i\n", dbmax);

*/


//2. Feladat

printf("2. Feladat\n\n");

printf("Tankolasok szama: %i\n", dbmax);



//3. Feladat

printf("3. Feladat\n\n");

for(i=0; i<5; i++) ossz[i]=0;


for(i=0; i<dbmax; i++){

ossz[tank[i].tip-1]=ossz[tank[i].tip-1]+tank[i].lit;

}


for(i=0; i<5; i++)

printf("tip-%i: %i\n", i+1, ossz[i]);


//4. Feladat

printf("4. Feladat\n\n");

printf("Kerek egy rendszamot:");

scanf("%s", &r);


szlo=0;

for(i=0; i<dbmax; i++){

if(strcmp(r,tank[i].rsz)==0){

printf("%i %i %i.%i.%i %i:%i\n",

tank[i].tip,

tank[i].lit,

tank[i].e,

tank[i].h,

tank[i].n,

tank[i].o,

tank[i].p);

szlo++;

}

}

if(szlo==0) printf("Ez az auto nem tankolt a kutnal. \n");


//6. Feladat

printf("6. Feladat\n\n");

for(j=0; j<dbmax-1; j++)

for(i=0; i<dbmax-1; i++)

if(strcmp(tank[i].rsz,tank[i+1].rsz)>0){

s=tank[i];

tank[i]=tank[i+1];

tank[i+1]=s;

}

ki=fopen("stats.txt", "w");

szlo=1; s=tank[0];

for(i=1; i<dbmax; i++){

if(strcmp(tank[i].rsz, s.rsz)!=0){

fprintf(ki, "%s %i tankolas\n",

s.rsz, szlo);

s=tank[i];

szlo=1;

}

else szlo++;


}

fclose(ki);

return 0;

}



Forrás link : data(pont)hu/get/6334227/tankolas.txt



2013. márc. 19. 14:55
 1/5 anonim ***** válasza:

Először is: melyik évi feladat?

Másodszor: én bele nem ásom magam egy ilyen ömlesztett, behúzások nélküli kódba, de nem is az a lényeg, hanem az algoritmus. Amennyire kiderül ebből a részletből a feladat, veszed az első autó rendszámát, megnézed, hogy mennyi volt az eltelt idő, aztán i=2-től N-ig kezded összehasonlítgatni, és ha találsz kisebbet, akkor azt jegyzed meg helyette, klasszikus minimumkiválasztási tétel.

2013. márc. 19. 21:35
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
Köszönöm. Ezer bocsánat a béna beillesztésért.
2013. márc. 19. 22:38
 3/5 A kérdező kommentje:
Jah ez csak ilyen gyakorló feladat, próba érettségi nem tudom igazából, hogy honnan lett szermányolva.
2013. márc. 19. 22:40
 4/5 anonim ***** válasza:

[link]

Ez nem csonkítja meg a programkódokat.

2013. márc. 19. 22:41
Hasznos számodra ez a válasz?
 5/5 Ivan Iljics válasza:

Esetleg nézz utána, van olyan hogy <time.h>.

Azt hiszem megkönnyítené az életed.

2013. márc. 25. 13:20
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!