|
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
#include <stdio.h> #include <stdlib.h>
struct orszag { char *nev; int terulet, nepesseg; };
char **orszagok(struct orszag *, int, int, double);
int main() { struct orszag t[3][2] = {{{"Magyarorszag", 93030, 9893899}, {"Amerikai Egyesult Allamok", 9826630, 318697314}}, {{"Nemetország", 357023, 80500000}, {"Kanada", 9984670, 35702707}}, {{"Egyesult Kiralysag", 244820, 63705000}, {"Franciaorszag", 547030, 65939866}}}; char **p = orszagok((struct orszag *)t, 3, 2, 115); int i; for (i = 0; p[i] != NULL; ++i) { puts(p[i]); free(p[i]); } free(p); return EXIT_SUCCESS; }
letöltés szöveges állományként
Makefile
SRCS = main.c orszagok.c OBJS = $(SRCS:%.c=%.o) TARGETS = main
.PHONY: clean
all: $(TARGETS)
main: $(OBJS) $(CC) $(OBJS) -o main
%.o: %.c $(CC) -Wall -c $< -o $@
clean: rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként
A fenti program kimenete
MAGYARORSZAG FRANCIAORSZAG
letöltés szöveges állományként
|
|