sábado, 2 de novembro de 2013

Fatorial em Vetor Dinâmico

Este Programa faz uso de uma alocação dinâmica, para reservar memórias para um vetor.
Más se o usuário digitar um número negativo, ou zero, ou maior que 9 será reprovado.
O Programa é muito simples e fácil de entender, feito especialmente a iniciantes de Linguagem C
que estão começando a estudar alocação dinâmica.
Vale lembrar que o número é sequencial, portanto sem teclar enter a cada dígito.
Criado no eclipse, e rodando sem nenhum warnings por aqui., na versão do MinGw que uso.

Eis Algumas imagens do Programa abaixo:



Eis o Código Abaixo:


#include <stdio.h>
#include <conio.h>
#include <string.h>
int tam;
void Janela5 ( ) {
     int lin, col;
     col = 0;
     for ( lin = 2; lin <= 24 ; lin++ )
         for ( col = 2; col <= 78 ; col++ ) {
              gotoxy ( col , lin );
              textbackground ( WHITE );
              printf ( " " );
         }
}
int main ( ) {
     system ( "title FATORIAL EM VETOR DINAMICO" );
     int *vet;
     vet = ( int* ) malloc ( tam * sizeof(int) );
     char *numStr = "-1";
     free ( vet );
     int i, num, aux, ord;
     int CONTADOR = 1;
     int FATORIAL = 1;
     system ( "cls" );
     Janela5 ( );
     textcolor ( VERMELHOCLARO );
     gotoxy ( 29 , 3 );
     printf ( "FATORIAL EM VETOR DINAMICO" );
     textcolor ( PRETO );
     gotoxy ( 24 , 5 );
     printf ( "Programa desenvolvido por:" );
     textcolor ( CINZAESCURO );
     gotoxy ( 51 , 5 );
     printf ( "Samuel Lima" );
     textcolor ( VERDECLARO );
     gotoxy ( 34 , 7 );
     printf ( "sa_sp10@hotmail.com" );
     textcolor ( AZULCLARO );
     gotoxy ( 27 , 9 );
     printf ( "Informe o tamanho do Vetor: " );
     textcolor ( VERMELHOCLARO );
     scanf ( "%d" , &tam );
     fflush ( stdin );
     while ( tam < 1 || tam > 9 ) {
         textcolor ( VERMELHOCLARO );
         gotoxy ( 25 , 11 );
         printf ( "\aNem Zero, Nem Numeros Negativos" );
         textcolor ( VERMELHOCLARO );
         gotoxy ( 25 , 12 );
         printf ( "Nem Maior que 9 Sao Aceitos" );
         Sleep ( 2800 );
         main ( );
     }
     textcolor ( AZULCLARO );
     gotoxy ( 14 , 11 );
     printf ( "Digite um numero inteiro de %d algarismo: " , tam );
     textcolor ( VERMELHOCLARO );
     for ( i = 0; i < tam ; i++ ) {
         scanf ( "%d" , &num );
         fflush ( stdin );
         if ( num == atoi ( numStr ) ) {
              break;
         }
         textcolor ( AZULCLARO );
         gotoxy ( 14 , 13 );
         printf ( "Numeros Digitados: " );
         textcolor ( VERMELHOCLARO );
         for ( i = 0; i < tam ; i++ ) {
              aux = num % 10;
              num = num / 10;
              vet [ i ] = aux;
              vet [ i ] = aux;
              printf ( " %d " , vet [ i ] );
         }
         getche ( );
         textcolor ( AZULCLARO );
         gotoxy ( 14 , 15 );
         printf ( "Numeros Armazenadosdos Num Vetor: " );
         textcolor ( VERMELHOCLARO );
         for ( i = 0; i < tam ; i++ ) {
              printf ( "  %d" , vet [ i ] );
         }
     }
     getche ( );
     textcolor ( AZULCLARO );
     gotoxy ( 14 , 17 );
     printf ( "Numeros Ordenados: " );
     textcolor ( VERMELHOCLARO );
     ord = 0;
     while ( ord == 0 ) {
         ord = 1;
         for ( i = 0; i < tam ; i++ ) {
              if ( vet [ i ] > vet [ ( i + 1 ) ] ) {
                   aux = vet [ i ];
                   vet [ i ] = vet [ ( i + 1 ) ];
                   vet [ ( i + 1 ) ] = aux;
                   ord = 0;
              }
         }
     }
     for ( i = 1; i < tam + 1 ; i++ )
         printf ( " %d " , vet [ i - 1 ] );
     textcolor ( PRETO );
     gotoxy ( 33 , 23 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     system ( "cls" );
     Janela5 ( );
     textcolor ( VERMELHOCLARO );
     gotoxy ( 29 , 3 );
     printf ( "FATORIAL EM VETOR DINAMICO" );
     for ( i = 0; i < tam ; i++ ) {
         while ( CONTADOR <= vet [ i ] ) {
              FATORIAL *= CONTADOR;
              CONTADOR += 1;
         }
         textcolor ( AZULCLARO );
         printf ( "\n\n\t Fatorial de " );
         Sleep ( 500 );
         textcolor ( VERMELHOCLARO );
         printf ( " %d " , vet [ i ] );
         Sleep ( 500 );
         textcolor ( AZULCLARO );
         printf ( " Equivale a " );
         Sleep ( 500 );
         textcolor ( VERMELHOCLARO );
         printf ( " %d " , FATORIAL );
         Sleep ( 500 );
     }
     textcolor ( PRETO );
     gotoxy ( 33 , 23 );
     printf ( "O ROCCO AGRADECE" );
     getche ( );
     exit ( 0 );
}

Nenhum comentário:

Postar um comentário

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