Programozó versenyek

Magas szintű programozási nyelvek 1, 2014. május 21., Sz14 ZH

2014. május 21. 14:05 – 2014. május 21. 15:50

Leülhetsz, fiam: egyes!

Írjon függvényt, amely paraméterként megkapja egy egészeket tartalmazó kvadratikus mátrix (négyzet alakú kétdimenziós tömb) kezdőcímét, valamint egy pozitív n értéket, amely a tömb oszlopainak számát jelöli! A mátrix az első n2 pozitív egész számot tartalmazza. A függvény az eredeti tömb megváltoztatása nélkül hozzon létre egy új, egészeket tartalmazó egydimenziós tömböt, töltse föl azt az eredeti mátrix azon sorának az elemeivel, amelyben az 1-es érték szerepel, és adja vissza e tömb kezdőcímét!

A függvény specifikációja

int *sitdown( int *, int );

Megjegyzés

A függvényt helyezze a sitdown.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. int *sitdown( 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 5
  5.  
  6. int main()
  7. {
  8.   int t[ N ][ N ] =
  9.     { {  2,  5, 24, 15,  3 },
  10.       { 17, 10,  6, 18, 14 },
  11.       { 19,  8, 20, 22, 16 },
  12.       { 12,  7,  1,  4, 25 },
  13.       { 11, 13, 21,  9, 23 } };
  14.   int i, j, *p;
  15.   printf( "%d\n\n", N );
  16.   for ( i = 0; i < N; ++i )
  17.   {
  18.     for ( j = 0; j < N; ++j )
  19.     {
  20.       if ( j > 0 )
  21.         putchar( ' ' );
  22.       printf( "%d", t[ i ][ j ] );
  23.     }
  24.     putchar( '\n' );
  25.   }
  26.   putchar( '\n' );
  27.   p = sitdown( &t[ 0 ][ 0 ], N );
  28.   for ( i = 0; i < N; ++i )
  29.   {
  30.     for ( j = 0; j < N; ++j )
  31.     {
  32.       if ( j > 0 )
  33.         putchar( ' ' );
  34.       printf( "%d", t[ i ][ j ] );
  35.     }
  36.     putchar( '\n' );
  37.   }
  38.   putchar( '\n' );
  39.   for ( i = 0; i < N; ++i )
  40.   {
  41.     if ( i > 0 )
  42.       putchar( ' ' );
  43.     printf( "%d", p[ i ] );
  44.   }
  45.   putchar( '\n' );
  46.   free( p );
  47.   return EXIT_SUCCESS;
  48. }
letöltés szöveges állományként

Makefile

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

A fenti program kimenete

  1. 5
  2. 2 5 24 15 3
  3. 17 10 6 18 14
  4. 19 8 20 22 16
  5. 12 7 1 4 25
  6. 11 13 21 9 23
  7. 2 5 24 15 3
  8. 17 10 6 18 14
  9. 19 8 20 22 16
  10. 12 7 1 4 25
  11. 11 13 21 9 23
  12. 12 7 1 4 25
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.