Programozó versenyek

Levelező Magas szintű programozási nyelvek 1 beugró, 2017. május 27.

2017. május 27. 13:10 – 2017. május 27. 16:10

Megfelelő tantárgyak

Adott az alábbi struktúra:

  1. struct tantargy
  2. {
  3.   char kod[16], *nev;
  4.   int kredit, oraszam; /* mindketto 0 es 100 koze esik */
  5. };
letöltés szöveges állományként

Írjon függvényt, amely paraméterként megkapja egy struct tantargy típusú elemeket tartalmazó kétdimenziós tömb kezdőcímét, sorainak és oszlopainak számát, valamint egy dupla pontosságú valós számot (s)! A függvény az eredeti tömb megváltoztatása nélkül hozzon létre egy új egydimenziós tömböt, amely azoknak a tantárgyaknak a nevét tartalmazza csupa nagybetűssé alakítva, amelyeknél az óraszám és a kreditszám hányadosa s – 1 és s + 1 közé esik! A tantárgynevek az eredeti tömb sorfolytonos bejárásának sorrendjében szerepeljenek az új tömbben! A tömb utolsó elemében NULL pointer szerepeljen, ezzel jelezve a tömb végét! A függvény visszatérési értéke az új tömb kezdőcíme legyen! Ügyeljen arra, hogy C-ben két egész szám hányadosa egész! (Segítség: egy karakter nagybetűssé történő konvertálásához lásd a toupper() függvényt.)

A függvény specifikációja

char **targyak(struct tantargy *, int, int, double);

Megjegyzés

A függvényt helyezze a targyak.c nevű állományba, és ezt az állományt küldje be megoldásként a kiértékelő rendszernek! Megoldását a példa bemenetben szereplő adatokkal az alábbi két állomány segítségével tesztelheti. Megoldásának kiértékelését a tesztelő rendszer nem feltétlenül ezeknek az állományoknak a felhasználásával végzi!

main.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct tantargy
  4. {
  5.   char kod[16], *nev;
  6.   int kredit, oraszam;
  7. };
  8. char **targyak(struct tantargy *, int, int, double);
  9. int main()
  10. {
  11.   struct tantargy tomb[2][2] = {
  12.     {{"ILBK301", "Magas szintu programozasi nyelvek 1", 5, 40},
  13.      {"ILDK301", "Magas szintu programozasi nyelvek 1", 5, 40}},
  14.     {{"ILCK411", "Adatszerkezetek es algoritmusok", 4, 16},
  15.      {"ILCKA11", "Mikrookonomia", 5, 16}}
  16.   };
  17.   char **uj = targyak(&tomb[0][0], 2, 2, 3.5);
  18.   char **p;
  19.   for (p = uj; *p != NULL; ++p)
  20.   {
  21.     puts(*p);
  22.     free(*p);
  23.   }
  24.   free(uj);
  25.   return EXIT_SUCCESS;
  26. }
letöltés szöveges állományként

Makefile

  1. SRCS = main.c targyak.c
  2. OBJS = $(SRCS:%.c=%.o)
  3. TARGETS = main
  4. .PHONY: clean
  5. all: $(TARGETS)
  6. main: $(OBJS)
  7. $(CC) $(OBJS) -o main
  8. %.o: %.c
  9. $(CC) -Wall -c $< -o $@
  10. clean:
  11. rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként

A példa tesztprogram kimenete

  1. ADATSZERKEZETEK ES ALGORITMUSOK
  2. MIKROOKONOMIA
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.