terça-feira, 29 de janeiro de 2013

Gerando Números Aleatórios em Matriz


Gerando Números Aleatórios em Matriz, O programa mostra como declarar e utilizar a função rand(); da biblioteca stdlib.h que é o coração do código, Declarei uma Matriz de 10 x 10, onde serão preenchidos os números para linhas e colunas, e um vetor VET [100]; de 100 posições que receberá os valores já gerados na Matriz a [10] [10]; Más os Números são gerados aleatoriamente, portanto printf imprimiu - os todos desordenados, então resolvi ordená-los previamente, e escolhi o método da bolha por ser mais simples de imprementar, tendo feito a ordenação, printf imprimiu os valores gerados na matriz, e que agora está num índice de vetor bem ordenados, más com muitas repetições, então porque não mostrar estes valores repetidos?, e foi isto que fiz o programa mostra todos os valores repetidos e se encerra com meu apelido como sempre.

Eis as saídas deste programa no cmd:








Eis o código abaixo:



#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
int main ( ) {
     system ( "title GERANDO NUMEROS ALEATORIOS EM MATRIZ" );
     srand ( time ( NULL ) );
     int a [ 10 ] [ 10 ], n, m, i, j, x = 0, y = 0;
     int ord = 0, aux;
     int VET [ 100 ];
     system ( "cls" );
     textcolor ( LIGHTRED );
     gotoxy ( 25 , 3 );
     printf ( "GERANDO NUMEROS ALEATORIOS EM MATRIZ" );
     textcolor ( YELLOW );
     gotoxy ( 24 , 5 );
     printf ( "Programa desenvolvido por:" );
     textcolor ( LIGHTCYAN );
     gotoxy ( 52 , 5 );
     printf ( "Samuel Lima" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 35 , 7 );
     printf ( "sa_sp10@hotmail.com" );
     textcolor ( WHITE );
     gotoxy ( 30 , 9 );
     printf ( "DIGITE O NUMEROS DE LINHAS:  " );
     textcolor ( LIGHTRED );
     scanf ( "%d" , &n );
     fflush ( stdin );
     textcolor ( WHITE );
     gotoxy ( 30 , 11 );
     printf ( "DIGITE O NUMERO DE COLUNAS:  " );
     textcolor ( LIGHTRED );
     scanf ( "%d" , &m );
     fflush ( stdin );
     system ( "cls" );
     textcolor ( LIGHTRED );
     gotoxy ( 25 , 3 );
     printf ( "GERANDO NUMEROS ALEATORIOS EM MATRIZ" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 36 , 5 );
     printf ( "GERANDO A MATRIZ..." );
     gotoxy ( 20 , 6 );
     textcolor ( YELLOW );
     for ( i = 1; i <= n ; i++ ) {
         printf ( "\n\t\t" );
         for ( j = 1; j <= m ; j++ ) {
              a [ i ] [ j ] = rand ( ) % 10;
              Sleep ( 50 );
              VET [ y ] = a [ i ] [ j ];
              y++;
              printf ( " %3d " , a [ i ] [ j ] );
         }
         printf ( "\n" );
     }
     textcolor ( LIGHTRED );
     gotoxy ( 25 , 3 );
     printf ( "GERANDO NUMEROS ALEATORIOS EM MATRIZ" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 36 , 5 );
     printf ( "MATRIZ  BEM  GERADA" );
     textcolor ( LIGHTGRAY );
     gotoxy ( 32 , 23 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     system ( "cls" );
     textcolor ( LIGHTRED );
     gotoxy ( 25 , 3 );
     printf ( "GERANDO NUMEROS ALEATORIOS EM MATRIZ" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 22 , 5 );
     printf ( "MOSTRANDO OS NUMEROS GERADOS DESORDENADOS" );
     gotoxy ( 2 , 7 );
     textcolor ( YELLOW );
     for ( int x = 0 ; x < y ; x++ ) {
         printf ( " %d " , VET [ x ] );
         Sleep ( 20 );
     }
     Sleep ( 800 );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25 , 11 );
     printf ( "MOSTRANDO EM ORDEM OS NUMEROS GERADOS " );
     ord = 0;
     while ( ord == 0 ) {
         ord = 1;
         for ( x = 0; x <= y ; x++ ) {

              if ( VET [ x ] > VET [ ( x + 1 ) ] ) {
                   aux = VET [ x ];
                   VET [ x ] = VET [ ( x + 1 ) ];
                   VET [ ( x + 1 ) ] = aux;
                   ord = 0;
              }
         }
     }
     textcolor ( YELLOW );
     gotoxy ( 25 , 13 );
     for ( x = 0; x < y ; x++ ) {
         printf ( " %d " , VET [ x ] );
     }
     textcolor ( LIGHTGRAY );
     gotoxy ( 32 , 17 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     system ( "cls" );
     textcolor ( LIGHTRED );
     gotoxy ( 25 , 3 );
     printf ( "GERANDO NUMEROS ALEATORIOS EM MATRIZ" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25 , 5 );
     printf ( "MOSTRANDO EM ORDEM OS NUMEROS GERADOS " );
     textcolor ( YELLOW );
     gotoxy ( 3 , 7 );
     for ( x = 0; x < y ; x++ ) {
         printf ( " %d " , VET [ x ] );
     }
     textcolor ( LIGHTGREEN );
     gotoxy ( 22 , 10 );
     printf ( "MOSTRANDO OS NUMEROS GERADOS REPETIDAMENTE" );
     aux = VET [ 0 ];
     gotoxy ( 22 , 12 );
     for ( x = 1; x < y + 1 ; x++ )
         if ( VET [ x ] == aux )
              ord++;
         else {
              if ( ord > 1 ) {
                   textcolor ( LIGHTBLUE );
                   printf ( "\n\t\t\tO VALOR %i ESTA REPETIDO %i VEZES" , aux ,
                            ord );
                   Sleep ( 800 );
                   ord = 1;
              }
              aux = VET [ x ];
         }
     textcolor ( LIGHTRED );
     gotoxy ( 35 , 24 );
     printf ( "\aO ROCCO AGRADECE" );
     getche ( );
}