|
Mellékátló
Í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 sorainak számát! 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, amely
az eredeti mátrix mellékátlójában lévő elemeket tartalmazza a sorindexek növekvő
sorrendjében, és adja vissza e tömb kezdőcímét! Egy kvadratikus mátrix mellékátlója azokat az
elemeket tartalmazza, amelyek sor- és oszlopindexeinek összege eggyel kevesebb a mátrix
sorainak (oszlopainak) számánál.
A függvény specifikációja
int *antidiagonal( int *, int );
Megjegyzés
A függvényt helyezze az antidiagonal.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 1int *antidiagonal( 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 5int main(){ int t[ N ][ N ] = { { 3, 2, 10, -14, -7 }, { -6, -3, -4, -19, 20 }, { -5, 6, 1, 18, -8 }, { 15, 17, -4, 15, -19 }, { 20, 1, 17, -7, -4 } }; int i, j, *p; printf( "%d\n\n", N ); for ( i = 0; i < N; ++i ) { for ( j = 0; j < N; ++j ) { if ( j > 0 ) putchar( ' ' ); printf( "%d", t[ i ][ j ] ); } putchar( '\n' ); } putchar( '\n' ); p = antidiagonal( &t[0][0], N ); for ( i = 0; i < N; ++i ) { for ( j = 0; j < N; ++j ) { if ( j > 0 ) putchar( ' ' ); printf( "%d", t[ i ][ j ] ); } putchar( '\n' ); } putchar( '\n' ); for ( i = 0; i < N; ++i ) { if ( i > 0 ) putchar( ' ' ); printf( "%d", p[ i ] ); } putchar( '\n' ); free( p ); return EXIT_SUCCESS;}
letöltés szöveges állományként
Makefile
CC = gccOBJS = main.o antidiagonal.oTARGETS = mainall: $(TARGETS)main: main.o antidiagonal.o $(CC) main.o antidiagonal.o -o mainmain.o: main.c $(CC) -c main.cantidiagonal.o: antidiagonal.c $(CC) -c antidiagonal.cclean: rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként
A fenti program kimenete
53 2 10 -14 -7-6 -3 -4 -19 20-5 6 1 18 -815 17 -4 15 -1920 1 17 -7 -43 2 10 -14 -7-6 -3 -4 -19 20-5 6 1 18 -815 17 -4 15 -1920 1 17 -7 -4-7 -19 1 17 20
letöltés szöveges állományként
|
|