Vissza

Struktúrák


Kitűzött feladatok

1. Hozzunk létre egy egydimenziós tömböt, ahol a tömb típusa legyen a következő struktúrájú:

struct diak{
   char nev[20];
   char tel[6];
   float jegy;
};
majd végezzük  el a következőket:
  • olvassuk ki egy szövegállományból  az adatokat, majd írassuk ki táblázatos formában, ABC sorrendben a beolvasott adatokat ( Forráskód )
  • írassuk ki egy adott személy adatait
  • határozzuk meg a diákok átlagjegyét
  • írassuk ki az összes olyan diákot, akiknek maximális jegye van
  • rendezzük a diákokat, jegyek alapján csökkenő sorrendbe

2. Hozzunk létre egy egydimenziós tömböt, ahol a tömb típusa legyen a következő struktúrájú:

struct auto{
   char marka[20];
   char kod[6];
   char megye[3];
   int ar;
};
majd végezzük  el a következőket
  • olvassuk ki egy szövegállományból  az adatokat, majd írassuk ki táblázatos formában, ABC sorrendben (a márka alapján) a beolvasott adatokat
  • írassuk ki a maros megyei autók adatait
  • határozzuk meg egy adott értéknél olcsóbb autók adatait
  • határozzuk, meg hogy hány autó van nyilvántartva
3. Egy szövegállomány minden egyes sora egy vezetéknevet, egy keresztnevet, egy dátumot (év, hónap, nap) tartalmaz. Olvassuk ki ezeket az adatokat egy struct típusú tömbbe és határozzuk meg minden esetben, hogy az adott személy :
     a. az év hányadik napján született,
     b. a hét melyik napján született (vasárnap, hétfő, stb...),
     c. mikor van a névnapja, melyhez használjuk ezt az állományt.
    Pl:
    Varga Katalin 2004 4 16 -> 76, Kedd, November 25
    Székely János 2000 9 7 -> 251, Csütörtök, December 27

Megjegyzés: Egy év akkor szökőév, ha
osztható 4-gyel és nem osztható 100-zal. Ha viszont 400-zal osztható, akkor mindenképpen szökőév.


Feladat 1. (forráskód)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct diak{
   char nev[40];
   char tel[10];
   float jegy;
};

typedef struct diak DIAK;

int hasonlit(const void *a1, const void *a2);
void kiir(DIAK* A, int n);

int main()
{
   DIAK *d;
   int i,n;
   FILE * input;
   input = fopen ("adatok.txt", "r");
   fscanf (input, "%i", &n);
   d = (DIAK*) malloc( n*sizeof(DIAK) );
   for( i = 0; i < n; i++)
   {
       fscanf(input, "%s", d[i].nev);
       fscanf(input, "%s", d[i].tel);
       fscanf(input, "%f", &d[i].jegy);
   }
   fclose (input);
   printf ("Rendezetlenul:\n");
   kiir (d, n);
   qsort (d, n, sizeof(DIAK), hasonlit);
   printf ("Rendezve:\n");
   kiir (d, n);
   free (d);
   return 1;
}

void kiir(DIAK* A,int n){
   int i;
   printf("%10s","nev");
   printf("%15s","tel");
   printf("%20s\n","jegy");
  
   for( i=0; i<n; i++)
   {
       printf("%15s", A[i].nev);
       printf("%15s", A[i].tel);
       printf("%15.2f\n", A[i].jegy);
   }
}

int hasonlit(const void *a1, const void *a2)
{
    DIAK fa1,fa2;
   fa1 = *((DIAK*)a1);
   fa2 = *((DIAK*)a2);
   return strcmp(fa1.nev,fa2.nev);
}