Programozó versenyek

Levelező Magas szintű programozási nyelvek 1 beugró, 2016. május 25.

2016. május 25. 13:10 – 2016. május 25. 16:10

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

  1. #ifndef _MYHEADER_H
  2. #define _MYHEADER_H 1
  3. double *average( double [], int, int );
  4. #endif /* myheader.h */
letöltés szöveges állományként

main.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "myheader.h"
  4. #define N 4
  5. #define M 5
  6.  
  7. int main()
  8. {
  9.   double t[ N ][ M ] =
  10.     { {  2.25, -4.5,   8.0,   5.75, -13.25 },
  11.       {  6.75,  1.5,   2.25,  3.75,   8.0 },
  12.       { -3.5,   7.0,  -1.75, -6.25,  -3.75 },
  13.       { 12.0,  -6.25, 10.25,  0.0,   10.5 } };
  14.   int i, j;
  15.   double *p;
  16.   printf( "%d %d\n\n", N, M );
  17.   for ( i = 0; i < N; ++i )
  18.   {
  19.     for ( j = 0; j < M; ++j )
  20.     {
  21.       if ( j > 0 )
  22.         putchar( ' ' );
  23.       printf( "%.3f", t[ i ][ j ] );
  24.     }
  25.     putchar( '\n' );
  26.   }
  27.   putchar( '\n' );
  28.   p = average( &t[0][0], N, M );
  29.   for ( i = 0; i < N; ++i )
  30.   {
  31.     for ( j = 0; j < M; ++j )
  32.     {
  33.       if ( j > 0 )
  34.         putchar( ' ' );
  35.       printf( "%.3f", t[ i ][ j ] );
  36.     }
  37.     putchar( '\n' );
  38.   }
  39.   putchar( '\n' );
  40.   for ( j = 0; j < M; ++j )
  41.   {
  42.     if ( j > 0 )
  43.       putchar( ' ' );
  44.     printf( "%.4f", p[ j ] );
  45.   }
  46.   putchar( '\n' );
  47.   free( p );
  48.   return EXIT_SUCCESS;
  49. }
letöltés szöveges állományként

Makefile

  1. CC = gcc
  2. OBJS = main.o average.o
  3. TARGETS = main
  4. all: $(TARGETS)
  5. main: main.o average.o
  6. $(CC) main.o average.o -o main
  7. main.o: main.c
  8. $(CC) -c main.c
  9. average.o: average.c
  10. $(CC) -c average.c
  11. clean:
  12. rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként

A fenti program kimenete

  1. 4 5
  2. 2.250 -4.500 8.000 5.750 -13.250
  3. 6.750 1.500 2.250 3.750 8.000
  4. -3.500 7.000 -1.750 -6.250 -3.750
  5. 12.000 -6.250 10.250 0.000 10.500
  6. 2.250 -4.500 8.000 5.750 -13.250
  7. 6.750 1.500 2.250 3.750 8.000
  8. -3.500 7.000 -1.750 -6.250 -3.750
  9. 12.000 -6.250 10.250 0.000 10.500
  10. 4.3750 -0.5625 4.6875 0.8125 0.3750
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.