sexta-feira, 12 de abril de 2019

Matriz - multiplicando a diagonal principal

Entre os três blogs que posuo,
que são: Java/JavaFX, C/C++ e C++ builder,
C/C++ domina nas visualizações e procura,
então ainda vale a pena escrever códigos em C/C++.
Aqui posto um exemplo de como obter a diagonal
de uma matriz multiplicada por um número inserido
pela entrada de dados com teclado.
A diagonal é imprimida em destaque,
e o código é indicado aos interessados por linguagem C,
mas que ainda não sabe como fazer isto.


Veja abaixo imagens do programa em execução:



Veja abaixo o código do programa:


#include <stdio.h>
#include <conio.h>
#define tam 3
void Moldura ( int a , int c , int b , int d , int e , int f ) {
     system ( "Color 10" );
     for ( a = e; a < c ; a++ ) {
         for ( b = f; b < d ; b++ ) {
              gotoxy ( b , a );
              textbackground ( WHITE );
              printf ( " " );
         }
     }
}
void Tabela ( ) {
     textbackground ( WHITE );
     int c, i = 0;
     textbackground ( BLACK );
     textcolor ( 12 );
     //Abaixo as rotinas pras colunas
     for ( i = 2; i <= 16 ; i++ ) {
         gotoxy ( 56 , i + 5 ); //colunaa da direita
         printf ( " " );
     }
     for ( i = 2; i <= 16 ; i++ ) {
         gotoxy ( 46 , i + 5 ); //coluna do meio mais a direita
         printf ( " " );
     }
     for ( i = 2; i <= 16 ; i++ ) {
         gotoxy ( 36 , i + 5 ); //coluna do meio ainda mais pro meio direita
         printf ( " " );
     }
     for ( i = 2; i <= 16 ; i++ ) {
         gotoxy ( 26 , i + 5 ); //coluna da esquerda
         printf ( " " );
     }
     //Abaixo as rotinas pras linhas
     gotoxy ( 26 , 7 );
     for ( c = 26; c < 56 ; c++ ) {
         printf ( " " );
     }
     gotoxy ( 26 , 12 );
     for ( c = 26; c < 56 ; c++ ) {
         printf ( " " );
     }
     gotoxy ( 26 , 17 );
     for ( c = 26; c < 56 ; c++ ) {
         printf ( " " );
     }
     gotoxy ( 26 , 22 );
     for ( c = 26; c <= 56 ; c++ ) {
         printf ( " " );
     }
}
int main ( ) {
     system ( "title MATRIZ - MULTIPLICANDO A DIAGONAL PRINCIPAL" );
     Moldura ( 2 , 25 , 2 , 79 , 2 , 3 );
     int l, c, d;
     bool x = false;
     int matriz [ tam ] [ tam ], dl = 0, dc = 0;
     textcolor ( LIGHTRED );
     gotoxy ( 20 , 3 );
     printf ( "MATRIZ - MULTIPLICANDO A DIAGONAL PRINCIPAL" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 21 , 5 );
     printf ( "Digite " );
     textcolor ( LIGHTRED );
     printf ( "9" );
     textcolor ( LIGHTBLUE );
     printf ( " valores para inserir na matriz" );
     Tabela ( );
     for ( l = 1; l <= tam ; l++ ) {
         dc = 0;
         for ( c = 1; c <= tam ; c++ ) {
              if ( l == c ) {
                   textcolor ( LIGHTRED );
                   textbackground ( WHITE );
                   x = true;
              } else textbackground ( WHITE );
              gotoxy ( 31 + dc , 9 + dl );
              scanf ( "%d" , &matriz [ l ] [ c ] );
              textcolor ( LIGHTBLUE );
              dc = dc + 10;
         }
         dl = dl + 5;
     }
     if ( x == true ) {
         textcolor ( LIGHTBLUE );
         gotoxy ( 20 , 24 );
         printf ( "Multiplicar a diagonal principal por: " );
         textcolor ( LIGHTRED );
         scanf ( "%d" , &d );
     }
     system ("cls");
     Moldura ( 2 , 25 , 2 , 79 , 2 , 3 );
     textcolor ( LIGHTRED );
     gotoxy ( 20 , 3 );
     printf ( "MATRIZ - MULTIPLICANDO A DIAGONAL PRINCIPAL" );
     gotoxy ( 23 , 5 );
     textcolor ( LIGHTBLUE );
     printf ( "Abaixo a diagonal multiplicada por: ");
     textcolor ( LIGHTRED );
     gotoxy ( 59 , 5 );
     printf ( "%d", d );
     Tabela ( );
     for ( l = 1; l <= tam ; l++ ) {
         dc = 0;
         for ( c = 1; c <= tam ; c++ ) {
              if ( l == c ) {
                   matriz [ l ] [ c ] = matriz [ l ] [ c ] * d;
                   textcolor ( LIGHTRED );
                   textbackground ( WHITE );
              } else textbackground ( WHITE );
              gotoxy ( 30 + dc , -6 + dl );
              printf ( "%3d", matriz [ l ] [ c ] );
              textcolor ( LIGHTBLUE );
              dc = dc + 10;
         }
         dl = dl + 5;
     }
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 35 , 24 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
}