|
Méretezés
Adott a következő fejlécállomány:
myheader.h
#ifndef _MYHEADER_H #define _MYHEADER_H 1
int foo(const void *, const void *);
#endif /* myheader.h */
letöltés szöveges állományként
Írja meg a myheader.h állományban deklarált foo() függvényt, amely
sztringként megadott hosszúságadatok összehasonlítását végzi el! A hosszúságadatok alakja a
következő:
mennyiség mértékegység
A mennyiség egy pozitív egész szám. A mértékegységet, amely a „mm”,
„cm”, „dm”, „m” és „km” karaktersorozatok
egyike lehet, a mennyiségtől pontosan egy szóköz karakter választja el (például „1
km”, „999 m”, „10 cm”). A függvény által kezelendő legkisebb
hossz 1 mm, a legnagyobb 1000 km.
A foo() függvényt úgy írja meg, hogy ha az első paramétereként megkapott hossz
kisebb a második paramétereként megkapottnál, akkor negatív értéket, ha az első
paramétereként megkapott hossz nagyobb a második paramétereként megkapottnál, akkor pozitív
értéket, egyébként pedig 0-t adjon vissza! A függvény a paramétereként megkapott sztringek
tartalmát ne módosítsa! A feladat megoldása során tartsa szem előtt, hogy 1 cm = 10 mm, 1 dm
= 10 cm, 1 m = 10 dm, 1 km = 1000 m!
Megjegyzés
A függvényt helyezze a foo.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> #include "myheader.h"
int main() { char dist[][30] = {"1 km", "999 m", "10 cm"}; int i; qsort(&dist[0][0], 3, sizeof(char [30]), foo); for (i = 0; i < 3; ++i) puts(dist[i]); return EXIT_SUCCESS; }
letöltés szöveges állományként
Makefile
SRCS = main.c foo.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 példa tesztprogram kimenete
10 cm 999 m 1 km
letöltés szöveges állományként
|
|