|
Egy átlagos feladat
Írjon függvényt, amely paraméterként megkapja egy dupla pontosságú valósakat tartalmazó
kétdimenziós tömb kezdőcímét, valamint sorainak és oszlopainak számát! A függvény az eredeti
tömb módosítása nélkül hozzon létre egy új, dupla pontosságú valósakat tartalmazó
egydimenziós tömböt, amely az eredeti tömb oszlopaiban található számok átlagát tartalmazza,
és adja vissza e tömb kezdőcímét!
A függvény specifikációja
double *average( double [], int, int );
Megjegyzés
A függvényt helyezze az average.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 három á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!
myheader.h
#ifndef _MYHEADER_H#define _MYHEADER_H 1double *average( double [], int, int );#endif /* myheader.h */
letöltés szöveges állományként
main.c
#include <stdio.h>#include <stdlib.h>#include "myheader.h"#define N 4#define M 5 int main(){ double t[ N ][ M ] = { { 2.25, -4.5, 8.0, 5.75, -13.25 }, { 6.75, 1.5, 2.25, 3.75, 8.0 }, { -3.5, 7.0, -1.75, -6.25, -3.75 }, { 12.0, -6.25, 10.25, 0.0, 10.5 } }; int i, j; double *p; printf( "%d %d\n\n", N, M ); for ( i = 0; i < N; ++i ) { for ( j = 0; j < M; ++j ) { if ( j > 0 ) putchar( ' ' ); printf( "%.3f", t[ i ][ j ] ); } putchar( '\n' ); } putchar( '\n' ); p = average( &t[0][0], N, M ); for ( i = 0; i < N; ++i ) { for ( j = 0; j < M; ++j ) { if ( j > 0 ) putchar( ' ' ); printf( "%.3f", t[ i ][ j ] ); } putchar( '\n' ); } putchar( '\n' ); for ( j = 0; j < M; ++j ) { if ( j > 0 ) putchar( ' ' ); printf( "%.4f", p[ j ] ); } putchar( '\n' ); free( p ); return EXIT_SUCCESS;}
letöltés szöveges állományként
Makefile
CC = gccOBJS = main.o average.oTARGETS = mainall: $(TARGETS)main: main.o average.o $(CC) main.o average.o -o mainmain.o: main.c $(CC) -c main.caverage.o: average.c $(CC) -c average.cclean: rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként
A fenti program kimenete
4 52.250 -4.500 8.000 5.750 -13.2506.750 1.500 2.250 3.750 8.000-3.500 7.000 -1.750 -6.250 -3.75012.000 -6.250 10.250 0.000 10.5002.250 -4.500 8.000 5.750 -13.2506.750 1.500 2.250 3.750 8.000-3.500 7.000 -1.750 -6.250 -3.75012.000 -6.250 10.250 0.000 10.5004.3750 -0.5625 4.6875 0.8125 0.3750
letöltés szöveges állományként
|
|