segunda-feira, 9 de março de 2015

Comparando dois vetores


Complicações ou funcionamento duvidoso podem ser reais se o comando return não for usado corretamente, Podemos evitar isto quando um programa possui funções mais complicadas. neste código limitei o comando return em um só na função
int Comp_Num ( int a, int b );
O comando return provoca um interrompimento imediato da função executada retornando um valor para a função onde foi chamado e prosseguindo com a execução.
O programa está ápto a comparar dois vetores dinâmicos que são preenchidos por entradas de dados com scanf(); desde o seu tamanho até as posições de cada um.

Veja abaixo imagens do programa em execução:




Veja abaixo o código do programa:


#include <stdio.h>
#include <conio.h>
#define tam 20
int Comp_Num ( int a, int b ) {
     int res = 0;
     if ( a == b )
         res = a;
     else if ( a > b ) {
         res = b;
     } else if ( a < b ) {
         res = a;
     }
     return res;
}
int main ( ) {
     system ( "title COMPARANDO DOIS VETORES" );
     int *A, *B, i, p, q, n = 0;
     A = ( int* ) malloc ( tam * sizeof(int) );
     B = ( int* ) malloc ( tam * sizeof(int) );
     do {
         clrscr ( );
         textcolor ( LIGHTRED );
         gotoxy ( 31, 3 );
         printf ( "COMPARANDO DOIS VETORES " );
         textcolor ( LIGHTBLUE );
         gotoxy ( 20, 5 );
         printf ( "Quantos números terá o vetor A ? " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &p );
         fflush ( stdin );
         textcolor ( LIGHTGREEN );
         gotoxy ( 20, 9 );
         if ( p < 0 || p > tam ) {
              printf ( "\aNúmero Acima de 0 e menor que %d ", tam );
              getche ( );
              system ( "cls" );
         }
     } while ( ( p < 0 ) || ( p > tam ) );
     for ( i = 0; i <= p; i++ ) {
         system ( "cls" );
         textcolor ( LIGHTRED );
         gotoxy ( 31, 3 );
         printf ( "COMPARANDO DOIS VETORES " );
         textcolor ( LIGHTBLUE );
         gotoxy ( 32, 5 );
         printf ( "Insira o " );
         textcolor ( LIGHTRED );
         gotoxy ( 40, 5 );
         printf ( " %do", i + 1 );
         textcolor ( LIGHTBLUE );
         gotoxy ( 44, 5 );
         printf ( "Número : " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &A [ i ] );
         fflush ( stdin );
     }
     do {
         clrscr ( );
         textcolor ( LIGHTRED );
         gotoxy ( 31, 3 );
         printf ( "COMPARANDO DOIS VETORES" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 20, 5 );
         printf ( "Quantos números terá o vetor B ? " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &q );
         fflush ( stdin );
         textcolor ( LIGHTGREEN );
         gotoxy ( 20, 9 );
         if ( q < 0 || q > tam ) {
              printf ( "\aNúmero Acima de 0 e menor que %d ", tam );
              getche ( );
              system ( "cls" );
         }
     } while ( ( q < 0 ) || ( q > tam ) );
     for ( i = 0; i <= q; i++ ) {
         system ( "cls" );
         textcolor ( LIGHTRED );
         gotoxy ( 31, 3 );
         printf ( "COMPARANDO DOIS VETORES " );
         textcolor ( LIGHTBLUE );
         gotoxy ( 32, 5 );
         printf ( "Insira o " );
         textcolor ( LIGHTRED );
         gotoxy ( 40, 5 );
         printf ( " %do", i + 1 );
         textcolor ( LIGHTBLUE );
         gotoxy ( 44, 5 );
         printf ( "Número : " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &B [ i ] );
         fflush ( stdin );
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 22, 7 );
     printf ( "Números inseridos no vetor A ==> " );
     textcolor ( LIGHTRED );
     printf ( "%d", p + 1 );
     textcolor ( LIGHTRED );
     gotoxy ( 22, 9 );
     for ( i = 0; i <= p; i++ ) {
         printf ( " %d ", A [ i ] );
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 22, 11 );
     printf ( "Números inseridos no vetor B ==> " );
     textcolor ( LIGHTRED );
     printf ( "%d", q + 1 );
     textcolor ( LIGHTRED );
     gotoxy ( 22, 13 );
     n = Comp_Num ( p, q );
     for ( i = 0; i <= q; i++ ) {
         printf ( " %d ", B [ i ] );
     }
     getche ( );
     textcolor ( LIGHTBLUE );
     gotoxy ( 22, 14 );
     for ( i = 0; i <= n; i++ ) {
         if ( A [ i ] > B [ i ] ) {
              printf ("\n\t\tO %d° elemento do vetor A é maior do que o %d° do vetor B",
                        ( i + 1 ), ( i + 1 ) );
         }
         if ( A [ i ] < B [ i ] ) {
              printf ("\n\t\tO %d° elemento do vetor A é menor do que o %d° do vetor B",
                        ( i + 1 ), ( i + 1 ) );
         } else {
              if ( A [ i ] == B [ i ] ) {
                   printf ("\n\t\tO %d° elemento do vetor B é igual ao %d° do vetor A",
                            ( i + 1 ), ( i + 1 ) );
              }
         }
     }
     printf ( "\n\t\tO vetor A tem %d elementos", p + 1 );
     printf ( "\n\t\tO vetor B tem %d elementos", q + 1 );
     if ( p > q ) {
         printf ( "\n\t\tO vetor A tem %d elementos a mais que o vetor B",
                   p - q );
     } else if ( q > p ) {
         printf ( "\n\t\tO vetor B tem %d elementos a mais que o vetor A",
                   q - p );
     } else if ( p == q ) {
         printf ( "\n\t\tO vetor A tem o mesmo número de elementos do vetor B" );
     }
     free ( A );
     free ( B );
     textcolor ( LIGHTRED );
     printf ( "\n\n\t\t\t\tMUITO OBRIGADO" );
     getche ( );
     exit ( 0 );
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.