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.

// Elaborado por : Lucas Jackson
// 1o. Eng da Computação A

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

int main(void)
{
  FILE *NOMEND, *VETBIN, *verifica;
  char nome[40],end[40],diretorio1[40],diretorio2[40];
  char arquivo1[10],arquivo2[10],drive,dir1[40],dir2[40];
  int  i,diretorio,diretoriob,vet[1],sair=0;
  char nome2[40],end2[40];
  randomize();

  clrscr();
  do{
  clrscr();
  printf("Os arquivos serao gravados no drive c: ou d: ou a: ?\n");
  scanf("%c",&drive);
  }while((drive!='c')&&(drive!='d')&&(drive!='a'));

  if(drive=='c')
  {
  strcpy(dir1,"c:/");
  strcpy(dir2,"c:/");
  }
  if(drive=='d')
  {
  strcpy(dir1,"d:/");
  strcpy(dir2,"d:/");
  }
  if(drive=='a')
  {
  strcpy(dir1,"a:/");
  strcpy(dir2,"a:/");
  }

  printf("Digite o diretorio do arquivo txt:");
  printf("\nCaso queira salvar na raiz apenas aperte enter:\n");
  if(drive=='c')
  printf("C:/");
  else if(drive=='d')
  printf("D:/");
  else
  printf("A:/");
  fflush(stdin);
  gets(diretorio1);
  strcat(dir1,diretorio1);
  diretorio = mkdir(dir1);
  if (diretorio==0)
  printf("Diretorio criado com sucesso!\n");
  else
  printf("OK! Diretorio existente\n");
  printf("Digite o nome do arquivo txt:");
  fflush(stdin);
  gets(arquivo1);
  strcat(arquivo1,".txt");
  strcat(dir1,"/");
  strcat(dir1,arquivo1);

  printf("Digite o diretorio do arquivo binario:");
  printf("\nCaso queira salvar na raiz apenas aperte enter:\n");
  if(drive=='c')
  printf("C:/");
  else if(drive=='d')
  printf("D:/");
  else
  printf("A:/");
  fflush(stdin);
  gets(diretorio2);
  strcat(dir2,diretorio2);
  diretoriob = mkdir(dir2);
  if (diretoriob==0)
  printf("Diretorio criado com sucesso!\n");
  else
  printf("OK! Diretorio existente\n");
  printf("Digite o nome do arquivo binario:");
  fflush(stdin);
  gets(arquivo2);
  strcat(arquivo2,".dbc");
  strcat(dir2,"/");
  strcat(dir2,arquivo2);

  NOMEND = fopen (dir1,"w");
  VETBIN = fopen (dir2,"wb");
  if ((verifica = fopen(dir1, "w")) == NULL)
  return 1;
  if ((verifica = fopen(dir2, "w")) == NULL)
  return 1;
  clrscr();
  printf("Digite o nome: ");
  fflush(stdin);
  gets(nome);
  printf("Digite o endereco: ");
  fflush(stdin);
  gets(end);
  fprintf(NOMEND,"%s",nome);
  fprintf(NOMEND,"%s",end);
  for(i=0; i<10; i++)
  {
  vet[i]=rand()%51;
  fprintf(NOMEND,"%d",vet[i]);
  if(i<5)
  fprintf(VETBIN,"%d",vet[i]);
  }
  fclose (NOMEND);
  fclose (VETBIN);

  clrscr();
  if ((verifica = fopen(dir1, "r")) == NULL)
  return 1;
  if ((verifica = fopen(dir2, "rb")) == NULL)
  return 1;
  NOMEND = fopen (dir1,"r");
  VETBIN = fopen (dir2,"rb");
  printf("Dados do arquivo texto:\n");
  fgets(nome2,strlen(nome)+1,NOMEND);
  puts(nome2);
  printf("\n");
  fgets(end2,strlen(end)+1,NOMEND);
  puts(end2);
  printf("\n\n");
  for(i=0;i<10;i++)
  {
  fscanf(NOMEND,"%d",vet[i]);
  printf("%d ",vet[i]);
  }
  printf("\n\n");
  printf("Numeros do arquivo binario:\n\n");
  for(i=0;i<5;i++)
  {
  fscanf(VETBIN,"%d",vet[i]);
  printf("%d ",vet[i]);
  }
  fclose (NOMEND);
  fclose (VETBIN);
  getch();
  return 0;
}