|
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 1
double *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 = gcc OBJS = main.o average.o TARGETS = main
all: $(TARGETS)
main: main.o average.o $(CC) main.o average.o -o main
main.o: main.c $(CC) -c main.c
average.o: average.c $(CC) -c average.c
clean: rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként
A fenti program kimenete
4 5
2.250 -4.500 8.000 5.750 -13.250 6.750 1.500 2.250 3.750 8.000 -3.500 7.000 -1.750 -6.250 -3.750 12.000 -6.250 10.250 0.000 10.500
2.250 -4.500 8.000 5.750 -13.250 6.750 1.500 2.250 3.750 8.000 -3.500 7.000 -1.750 -6.250 -3.750 12.000 -6.250 10.250 0.000 10.500
4.3750 -0.5625 4.6875 0.8125 0.3750
letöltés szöveges állományként
|
|