Programação Orientada à Procedimentos II Programação Orientada à Procedimentos I Processamento Paralelo Lógica de Programação Introdução à Computação Informática Básica

 

 

Informática Básica
Introdução à Computação
Lógica de Programação
Programação Orientada à Procedimentos I
Programação Orientada à Procedimentos II

Processamento Paralelo


Uma Possível Solução ...




2- Solicitar ao usuário seu nome e endereço. Gravar estas informações num arquivo de texto. Crie um vetor com 10 elementos do tipo inteiro e preencha-o com valores aleatório de 0 à 50. Armazene todo vetor no arquivo de texto. Armazene somente os 5 primeiros números num arquivo binário. Os arquivos, de texto e binário, deverão ser definido pelo usuário, o qual deverá informar o diretório e o nome do arquivo. Caso o diretório informado não exista, o programa deverá criá-lo. Verificar possíveis erros e imprimir elegantemente o conteúdo do arquivos.

/**************************************************
* UNIVAP- FCC - FACULDADE DE CIENCIA DA COMPUTACAO *
* 39U2A - ENGENHARIA DA COMPUTACAO                 *
* POP II - Professora Silene                       *
* Jose Eduardo S. Pereira                          *
* Matricula: 39020207                              *
****************************************************/

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
#include "dir.h"

void testadir(char []);
void grava_t(char [], char [], char []);
void grava_b(char [], char [], int );
void imp_tela(char [], char [], char []);

void main ()
{
 char narqtxt[14],narqbin[14],ndir[14],cdir[MAXDIR];
 char nome [100], endereco[100],va[100];
 int vet[10],i,auxb;
 randomize();
 clrscr();
 getcwd(cdir,MAXDIR);
 printf ("\nDigite Nome do diretorio onde serao gravados 
            os arquivos: ");
 fflush(stdin);
 gets(ndir);
 testadir(&ndir[0]);
 printf ("\nDigite o Nome do arquivo texto: ");
 fflush(stdin);
 gets(narqtxt);
 printf ("Digite o Nome do arquivo Binario: ");
 fflush(stdin);
 gets(narqbin);
 printf ("\nDigite seu Nome: ");
 fflush(stdin);
 gets(nome);
 grava_t(&narqtxt[0],&ndir[0],&nome[0]);
 printf ("\nDigite seu Endereco: ");
 fflush(stdin);
 gets(endereco);
 grava_t(&narqtxt[0],&ndir[0],&endereco[0]);
 for(i=0;i<10;i++)
	{
	  vet[i]=rand()%51;
	  auxb=vet[i];
	  if(i<5)
		 grava_b(&narqbin[0],&ndir[0],auxb);
	  itoa(vet[i],&va[i],10);
	  grava_t(&narqtxt[0],&ndir[0],&va[i]);
	 }
 imp_tela(&narqtxt[0],&narqbin[0],&ndir[0]);
 fflush(stdin);
 getch();
 chdir(cdir);
 clrscr();
}

void testadir(char dirtest[14])
{
	if (chdir(dirtest)!=0)
		 {
		  printf("\nDiretorio inexistente.");
		  printf("\nCriando Diretorio.");
		  if(mkdir(dirtest)!=0)
			 {
			  printf("\nNao foi possivel Criar Diretorio.");
			  fflush(stdin);
			  getch();
			  exit(0);
			 }
		  chdir(dirtest);
		 }
}

void grava_t (char narq[14],char dirg[14], char dado[100])
{
	FILE *out;
	chdir(dirg);
	if ((out = fopen(&narq[0], "at"))== NULL)
	{
	 fprintf(stderr, "\nNao foi possivel abrir arquivo 
	                   de Dados.\n");
	 fflush (stdin);
	 getch();
	 exit (0);
	}
	fputs(dado,out);
	fputs("\n",out);
	fclose(out);
}

void grava_b(char narq[14], char dirg[14], int vetg)
{
 FILE *outb;
 chdir(dirg);
 if ((outb = fopen(&narq[0], "ab"))== NULL)
	{
	 fprintf(stderr, "\nNao foi possivel abrir arquivo 
	                    de Dados.\n");
	 fflush (stdin);
	 getch();
	 exit (0);
	}
 fwrite(&vetg,sizeof(vetg),1,outb);
 fclose(outb);
}

void imp_tela(char narqt[14],char narqb[14],char ndir[14])
{
 char ip[100];
 int vp[5],i;
 FILE *in;
 FILE *inb;
 clrscr();
 chdir(ndir);
 if ((in = fopen(&narqt[0], "rt"))== NULL)
	{
	 fprintf(stderr, "\nNao foi possivel abrir arquivo 
	                    de Dados.\n");
	 fflush (stdin);
	 getch();
	 exit (0);
	}
 while (!feof(in))
	{
	  fgets(ip,strlen(ip)+1,in);
	  strcat(ip,"\0");
	  printf ("%s",ip);
	}
 if ((inb = fopen(&narqb[0], "rb"))== NULL)
	{
	 fprintf(stderr, "\nNao foi possivel abrir arquivo 
	                    de Numeros.\n");
	 fflush (stdin);
	 getch();
	 exit (0);
	}
 while (!feof(inb))
	  fread(&vp[0],sizeof(vp),1,inb);
 i=0;
 while(i<5)
		{
		  printf("%d\n",vp[i]);
		  i++;
		}
 fclose(in);
 fclose(inb);
}