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);
}
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.