Programozó versenyek

Levelező Magas szintű programozási nyelvek 1 beugró, 2015. június 13.

2015. június 13. 13:10 – 2015. június 13. 16:10

Adott sűrűségű országok

Adott az alábbi struktúra:

struct orszag
{
  char *nev;
  int terulet, nepesseg;
};

Írjon függvényt, amely paraméterként megkapja egy struct orszag 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 az országoknak a nevét tartalmazza csupa nagybetűssé alakítva, amelyek népsűrűsége (a népesség és a terület hányadosa) s – 10 és s + 10 közé esik! Az országnevek 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! (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 **orszagok(struct orszag *, int, int, double);

Megjegyzés

A függvényt helyezze az orszagok.c nevű állományba, és ezt az állományt küldje be megoldásként a kiértékelő rendszernek! Megoldását az alábbi állományok 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 orszag
  4. {
  5.   char *nev;
  6.   int terulet, nepesseg;
  7. };
  8. char **orszagok(struct orszag *, int, int, double);
  9. int main()
  10. {
  11.   struct orszag t[3][2] =
  12.     {{{"Magyarorszag",        93030,  9893899}, {"Amerikai Egyesult Allamok", 9826630, 318697314}},
  13.      {{"Nemetország",        357023, 80500000}, {"Kanada",                    9984670,  35702707}},
  14.      {{"Egyesult Kiralysag", 244820, 63705000}, {"Franciaorszag",              547030,  65939866}}};
  15.   char **p = orszagok((struct orszag *)t, 3, 2, 115);
  16.   int i;
  17.   for (i = 0; p[i] != NULL; ++i)
  18.   {
  19.     puts(p[i]);
  20.     free(p[i]);
  21.   }
  22.   free(p);
  23.   return EXIT_SUCCESS;
  24. }
letöltés szöveges állományként

Makefile

  1. SRCS = main.c orszagok.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 fenti program kimenete

  1. MAGYARORSZAG
  2. FRANCIAORSZAG
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.