|
Valódi osztók
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,
amelyet egy olyan tömb elemeinek az összehasonlítására szeretnénk felhasználni, amely
kizárólag egész számokat tartalmaz, és amely paraméterként megkapja az összehasonlítandó két
tömbelem címét (lásd a main.c függvény kódját)!
A függvény negatív értéket adjon vissza, ha az első paraméterével elért egész szám kevesebb
valódi osztóval rendelkezik, mint a második paraméterével elért egész szám, pozitívat, ha
több osztója lenne annál, és 0-t, ha a két szám valódi osztóinak a száma megegyezik
egymással! Egy a számnak b valódi osztója, ha b osztója
a-nak, de b nem egyenlő 1-gyel és nem egyenlő a-val sem.
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() { int t[] = {4, 6, 30, 2}; int i; qsort(t, 4, sizeof(int), foo); for (i = 0; i < 4; ++i) printf("%d\n", t[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
2 4 6 30
letöltés szöveges állományként
|
|