Programozó versenyek

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

2015. május 29. 13:10 – 2015. május 29. 17:10

Ez logikus

Írjon függvényt, amely paraméterként megkapja egy sztringeket tartalmazó kétdimenziós tömb kezdőcímét, sorainak és oszlopainak számát, valamint egy sztringet! A függvény az eredeti tömb módosítása nélkül hozzon létre egy új, egészeket tartalmazó egydimenziós tömböt, amelynek annyi eleme van, ahány oszlopa az eredeti tömbnek volt! A függvény az új tömböt attól függően töltse föl logikailag igaz vagy hamis értékekkel, hogy a paraméterként megkapott sztring megtalálható-e az eredeti kétdimenziós tömb adott oszlopában, majd adja vissza az új tömb kezdőcímét!

A függvény specifikációja

int *logical( char *[], int, int, char * );

Megjegyzés

A függvényt helyezze a logical.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 *logical( char *[], int, int, char * );
  4. #endif /* myheader.h */
letöltés szöveges állományként

main.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "myheader.h"
  5. #define N 3
  6. #define M 4
  7.  
  8. int main()
  9. {
  10.   char *t[ N ][ M ] =
  11.     { { "szaxofon", "szaxofon",    "szaxofon", "szaxofon"    },
  12.       { "szaxofon", "kakukktojas", "szaxofon", "szaxofon"    },
  13.       { "szaxofon", "szaxofon",    "szaxofon", "kakukktojas" } };
  14.   char str[ 100 ];
  15.   int i, j;
  16.   int *p;
  17.   strcpy( str, "kakukktojas" );
  18.   printf( "%d %d *%s*\n\n", N, M, str );
  19.   for ( i = 0; i < N; ++i )
  20.   {
  21.     for ( j = 0; j < M; ++j )
  22.     {
  23.       if ( j > 0 )
  24.         putchar( ' ' );
  25.       printf( "*%s*", t[ i ][ j ] );
  26.     }
  27.     putchar( '\n' );
  28.   }
  29.   putchar( '\n' );
  30.   p = logical( &t[ 0 ][ 0 ], N, M, str );
  31.   for ( i = 0; i < N; ++i )
  32.   {
  33.     for ( j = 0; j < M; ++j )
  34.     {
  35.       if ( j > 0 )
  36.         putchar( ' ' );
  37.       printf( "*%s*", t[ i ][ j ] );
  38.     }
  39.     putchar( '\n' );
  40.   }
  41.   putchar( '\n' );
  42.   for ( j = 0; j < M; ++j )
  43.   {
  44.     if ( j > 0 )
  45.       putchar( ' ' );
  46.     printf( "%d", p[ j ] );
  47.   }
  48.   putchar( '\n' );
  49.   free( p );
  50.   return EXIT_SUCCESS;
  51. }
letöltés szöveges állományként

Makefile

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

A fenti program kimenete

  1. 3 4 *kakukktojas*
  2. *szaxofon* *szaxofon* *szaxofon* *szaxofon*
  3. *szaxofon* *kakukktojas* *szaxofon* *szaxofon*
  4. *szaxofon* *szaxofon* *szaxofon* *kakukktojas*
  5. *szaxofon* *szaxofon* *szaxofon* *szaxofon*
  6. *szaxofon* *kakukktojas* *szaxofon* *szaxofon*
  7. *szaxofon* *szaxofon* *szaxofon* *kakukktojas*
  8. 0 1 0 1
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.