sábado, 21 de dezembro de 2013

Matriz Dinâmica para Vetor Dinâmico

Algumas vêzes precisamos passar uma Matriz dinâmica para um Vetor dinâmico, e se você tem
dificuldade de fazer isto, mostro neste código como pode ser feito.
O programa imprime a Matriz dinâmica inicializada com limites de um a cem,
e depois imprime os mesmos números já no Vetor dinâmico. No bloco seguinte, cria um arquivo .txt e escreve o vetor dinâmico,
que foi inicializado na Matriz Dinâmica.
Usando um recurso do Dos, abre fisicamente o notepad.exe, contendo o vetor dinâmico imprimido e fecha.
Em seguida, mostra a leitura do arquivo .txt contendo imprimido nosso Vetor dinâmico.
E então o programa se encerra.
Veja algumas imagens do programa em execução:







Abaixo, o código do programa:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define tam 10
void Janela5(){
    int lin, col;
    for ( lin = 0; lin <= 25; lin++ ){
        for ( col = 0; col <= 80; col++ ){
            gotoxy( col, lin );
            if ( lin == 2 ){textbackground(LIGHTBLUE);printf( " ");}
            if ( col == 1 ){textbackground(LIGHTBLUE);printf(" ");}
            if ( lin == 25 ){textbackground(LIGHTBLUE);}
            if ( col == 80 ){textbackground(LIGHTBLUE);printf(" ");}
        }
    }textbackground( BLACK );
}
void Titulo(){int i = 0;Janela5();
system ("title MATRIZ DINAMICA PARA VETOR DINAMICO");
char *titulo = {"MATRIZ DINAMICA PARA VETOR DINAMICO"
        "CRIADO POR SAMUEL LIMA"
        "sa_sp10@hotmail.com"
        "PRESSIONE QUALQUER TECLA"};
textcolor(YELLOW);gotoxy(18,7);for ( i = 0; i < 26; i++){
    printf ("%c ",titulo [ i ]  );Sleep(50);
}
textcolor(LIGHTRED);gotoxy(34,9);for ( i = 26; i < 35; i++){
    printf ("%c ",titulo [ i ]  );Sleep(100);
}
textcolor(LIGHTGREEN);gotoxy(33,11);for ( i = 35; i < 45; i++){
    printf ("%c ",titulo [ i ]  );Sleep(100);
}
textcolor(LIGHTBLUE);gotoxy(29,13);for ( i = 45; i < 57; i++){
    printf ("%c ",titulo [ i ]  );Sleep(100);
}
textcolor(WHITE);gotoxy(23,15);for ( i = 57; i < 76; i++){
    printf ("%c ",titulo [ i ]  );Sleep(100);
}
textcolor(LIGHTCYAN);gotoxy(20,19);for ( i = 76; i < 100; i++){
    printf ("%c ",titulo [ i ]  );Sleep(100);
}
getche();
}
int main(){
    Titulo();
    int i, j; // Matriz dinamica bidimensional e inicializada 10 x 10 contagem ate 100
    int  cont = 0;int x = 0;clrscr();Janela5();
    textcolor(LIGHTRED);gotoxy(27,3);printf("MATRIZ DINAMICA PARA VETOR DINAMICO  ");
    textcolor(LIGHTBLUE);gotoxy(30,5);printf("IMPRIMINDO A MATRIZ ORIGINAL");
    textcolor(YELLOW);printf("\n\n");
    int **matrix;int *vetor, fim = 100;
    matrix = (int**) malloc ( tam * sizeof ( int** ) );
    vetor = ( int* ) malloc ( tam * sizeof ( int ) );
    for ( i = 0; i < tam; i++ ) {
        gotoxy(23, i + 8);
        matrix [ i ] = ( int* ) malloc( tam * sizeof(int* ) );
        for ( j = 0; j < tam; j++ ) {
            cont++;
            matrix [ i ] [ j ]  = cont;
            vetor  [ x ] = matrix [ i ] [ j ];
            x++;
            printf(" %d ",matrix [ i ] [ j ] );
        }
        printf("\n");
    }
    getche();clrscr();
    textcolor(LIGHTRED);gotoxy(27,3);printf("MATRIZ DINAMICA PARA VETOR DINAMICO  ");
    textcolor(LIGHTBLUE);gotoxy(30,5);printf("IMPRIMINDO O VETOR DINAMICO");
    textcolor(LIGHTGREEN);printf("\n\n");
    for( x = 0; x < fim; x++ ){
        printf(" %d ", vetor [ x ] ); // Agora temos um vetor simples e dinamico
    }
    getche();
    char Linha [ 100 ];int result = 0;
    char str [ 1 ] [ 47 ] = {"IMPRIMINDO O VETOR DINAMICO NUM ARQUIVO .TXT\n\n"};
    FILE *arq = fopen ("Serial.txt", "w");
    result = fprintf( arq, str [ 0 ] );
    for ( x = 0; x < fim; x++ ){
        fprintf( arq, " %d ", vetor [ x ] );
    }
    fclose( arq );
    textcolor(LIGHTBLUE);gotoxy(22,13);printf("Abrindo o arquivo .txt contendo o Vetor");getche();
    system("start Serial.txt");getche();
    textcolor(LIGHTBLUE);gotoxy(20,13);printf("Fechando agora o arquivo .txt contendo o Vetor");getche();
    system("taskkill.exe /IM notepad.exe");gotoxy(2,13);clreol (); // Usando a funcao clreol (); que junto com gotoxy, apaga uma linha
    textcolor(LIGHTBLUE);gotoxy(23,13);printf("Abaixo, a leitura do Vetor num arquivo .txt");
    gotoxy(22,15);
    arq = fopen("Serial.txt","rb");
    while (!feof(arq)){
        fgets(Linha, 100, arq);
        if (result) {
            textcolor(WHITE);printf("%s",Linha );
        }
    }
    getche();
    textcolor(LIGHTCYAN);gotoxy(33,23);printf("O ROCCO AGRADECE!");getche();free(vetor);
}

Nenhum comentário:

Postar um comentário

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