terça-feira, 12 de julho de 2016

Matriz transposta de caracteres

A função int gera_caractere ( ); é a responsável 
de gerar todos os caracteres que são
inseridos na matriz de char M [ ] [ ];
A matriz de char  N [ ] [ ]; recebe uma cópia fiel de M [ ] [ ];
Porém ela recebe em suas colunas as linhas de M [ ] [ ];
e nas suas linhas as colunas de M [ ] [ ];
Isto nada mais é, que uma transposição de matriz,
onde é denominado de matriz transposta.

Veja abaixo uma imagem do programa em execução:


Veja abaixo o código do programa:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define tam 20
void got_color ( int tam_lin_ini, int tam_lin_fim, int tam_ini_col,
         int tam_fim_col, int a, int b ) {
     int i, c;
     if ( a >= 1 && a <= 16 ) {
         textcolor ( a );
     }
     if ( b >= 1 && b <= 16 ) {
         textbackground ( b );
     }
     for ( i = tam_lin_ini; i < tam_lin_fim; i++ ) {
         for ( c = tam_ini_col; c < tam_fim_col; c++ ) {
              gotoxy ( c, i );
              printf ( " " );
         }
     }
}
int gera_caractere ( ) {
     return ( rand ( ) % 26 ) + 65;
     getche ( );
     return ( 0 );
}
int main ( ) {
     system ( "title MATRIZ TRANSPOSTA DE CARACTERES" );
     system ( "Color 80" );
     got_color ( 2, 34, 3, 109, 2, 0 );
     int i, j, r = 0, y = 0;
     char M [ tam ] [ tam ], N [ tam ] [ tam ];
     for ( i = 0; i < tam; i++ ) {
         for ( j = 0; j < tam; j++ ) {
              M [ i ] [ j ] = gera_caractere ( );
         }
     }
     textcolor ( LIGHTRED );
     gotoxy ( 44, 3 );
     printf ( "MATRIZ TRANSPOSTA DE CARACTERES" );
     textcolor ( WHITE );
     for ( i = 0; i < tam; i++ ) {
         gotoxy ( 12, i + 7 );
         for ( j = 0; j < tam; j++ ) {
              printf ( "%2c", M [ i ] [ j ] );
         }
     }
     getche ( );
     for ( r = 0; r < tam; r++ ) {
         for ( y = 0; y < tam; y++ ) {
              N [ r ] [ y ] = M [ y ] [ r ];
         }
     }
     textcolor ( LIGHTBLUE );
     for ( r = 0; r < tam; r++ ) {
         gotoxy ( 62, r + 7 );
         for ( y = 0; y < tam; y++ ) {
              printf ( "%2c", N [ r ] [ y ] );
         }
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 22, 30 );
     printf ( "Por: " );
     textcolor ( LIGHTMAGENTA );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 22, 31 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 50, 32 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     exit ( 0 );

}