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 ...




/************************************************************************
* UNIVAP - UNIVERSIDADE DO VALE DO PARAIBA                              *
* FCC - FACULDADE DE CIENCIA DA COMPUTACAO                              *
* PROGRAMACAO ORIENTADA A PROCEDIMENTOS II                              *
* PROF¦ SILENE DE FREITAS FERNANDES                                     *
* ENGENHARIA DA COMPUTACAO - 39U2A                                      *
*                                                                       *
* NOME: JOSE EDUARDO SANTOS PEREIRA MATRICULA: 39020207			*
*       RAFAEL OLIVEIRA DE SOUZA               39020086                 *
************************************************************************/

#include 
#include 
#include 
#include 
#include 
#include 

void menu1() //CRIANDO MENU PRINCIPAL
{
 clrscr();
 for(int x=24;x<=50;x++)
	 {
	  gotoxy(x,10); printf("*");
	  gotoxy(x,17); printf("*");
	 }
 for(x=11;x<=17;x++)
	 {
	  gotoxy(24,x); printf("*");
	  gotoxy(50,x); printf("*");
	 }
 gotoxy(29,11); printf("TIPO DO ARQUIVO");
 gotoxy(26,13); printf("1-Texto");
 gotoxy(26,14); printf("2-Bin rio");
 gotoxy(26,15); printf("ESC - Sair");
}

void menu2() //CRIANDO SUB-MENU
{
 clrscr();
 for(int x=24;x<=50;x++)
	 {
	  gotoxy(x,10); printf("*");
	  gotoxy(x,17); printf("*");
	 }
 for(x=11;x<=17;x++)
	 {
	  gotoxy(24,x); printf("*");
	  gotoxy(50,x); printf("*");
	 }
 gotoxy(31,11); printf("APLICA€OES");
 gotoxy(26,13); printf("1-Criar arquivo");
 gotoxy(26,14); printf("2-Cadastrar dados");
 gotoxy(26,15); printf("3-Visualizar dados");
 gotoxy(26,16); printf("ESC - Voltar");
}

int testadirarq(char dirtest[14],char tipo, char narq[14]) //TESTES
{
 char resp;
 clrscr();
 if (chdir(dirtest)!=0)  //TESTANDO DIRETORIO
	 {
	  printf("\nDiretorio inexistente.");
	  do{
		  printf("\nDeseja criar o Diretorio(S/N): ");
		  resp=getche();
		  if((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'))
		  {
		 printf("Opcao Invalida!!!\n");
		 delay(2000);
		}
	if((resp=='s')||(resp=='S'))
	  {
		if(mkdir(dirtest)!=0)
		  {
			printf("\nNao foi possivel Criar Diretorio.");
			delay(2000);
			return 0;
		  }
		else
		  {
			chdir(dirtest);
			printf("\nDiretorio criado com sucesso.");
			fflush(stdin);
			getch();
		  }
	  }
	if((resp=='n')||(resp=='N'))
	  {
		clrscr();
		printf("\nO diretorio indicado nao e valido e nao foi criado.");
		printf("\nTente novamente.");
		delay(3000);
		return 0;
	  }
		 }while((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'));
	 }
 clrscr();
 if(tipo=='b')  //TESTE PARA ARQUIVO BINARIO
	{
	 FILE *arqb;
	 if ((arqb = fopen(&narq[0], "rb"))== NULL)
		 {
	 fprintf(stderr, "\nArquivo binario de dados nao encontrado.\n");
	 do{
		 printf("\nDeseja criar o Arquivo Binario (S/N): ");
		 resp=getche();
		 if((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'))
			{
			 printf("\nOpcao Invalida!!!\n");
			 delay(2000);
			}
		 if((resp=='s')||(resp=='S'))
			{
			 if ((arqb = fopen(&narq[0], "wb"))== NULL)
		  {
			fprintf(stderr, "\nNao foi possivel criar arquivo binario.\n");
			delay(2000);
			return 0;
		  }
			 else
		  {
			printf ("\nArquivo binario criado com sucesso.");
			fflush(stdin);
			getch();
			fclose (arqb);
			return 1;
		  }
			}
		 if((resp=='n')||(resp=='N'))
			{
			 printf("\nArquivo binario nao encontrado.Tente novamente.\n");
			 delay(2000);
			 return 0;
			}
		}while((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'));
		 }
	 else
		 {
	fclose(arqb);
	do{
		 printf("\nDeseja criar(C) novo Arquivo ou atualizar(A) o existente(C/A): ");
		 resp=getche();
		 if((resp!='c')&&(resp!='C')&&(resp!='a')&&(resp!='A'))
			{
			 printf("\nOpcao Invalida!!!\n");
			 delay(2000);
			}
		 if((resp=='c')||(resp=='C'))
			{
			 if ((arqb = fopen(&narq[0], "wb"))== NULL)
		  {
			fprintf(stderr, "\nNao foi possivel criar novo arquivo binario.\n");
			delay(2000);
			return 0;
		  }
			 else
		  {
			printf("\nNovo arquivo binario criado com sucesso.");
			fflush(stdin);
			getch();
			fclose(arqb);
			return 1;
		  }
			}
		 if((resp=='a')||(resp=='A'))
			{
			 printf("\nArquivo sera atualizado.");
			 fflush(stdin);
			 getch();
			 return 1;
			}
		}while((resp!='a')&&(resp!='A')&&(resp!='c')&&(resp!='C'));
		 }
	}
 if(tipo=='t')  //TESTE PARA ARQUIVO TEXTO
	{
	 FILE *arqt;
	 if ((arqt = fopen(&narq[0], "rt"))== NULL)
		 {
	 fprintf(stderr, "\nArquivo texto de dados nao encontrado.\n");
	 do{
		 printf("\nDeseja criar o Arquivo Texto (S/N): ");
		 resp=getche();
		 if((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'))
			{
			 printf("\nOpcao Invalida!!!\n");
			 delay(2000);
			}
		 if((resp=='s')||(resp=='S'))
			{
			 if ((arqt = fopen(&narq[0], "wt"))== NULL)
		  {
			fprintf(stderr, "\nNao foi possivel criar arquivo texto.\n");
			delay(2000);
			return 0;
		  }
			 else
		  {
			printf ("\nArquivo texto criado com sucesso.");
			fflush(stdin);
			getch();
			fclose(arqt);
			return 1;
		  }
			}
		 if((resp=='n')||(resp=='N'))
			{
			 printf("\nArquivo texto nao encontrado. Tente novamente.");
			 delay(2000);
			 return 0;
			}
		}while((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'));
		 }
	 else
		 {
	fclose(arqt);
	do{
		 printf("\nDeseja criar(C) novo Arquivo ou atualizar(A) o existente(C/A): ");
		 resp=getche();
		 if((resp!='c')&&(resp!='C')&&(resp!='a')&&(resp!='A'))
			{
			 printf("\nOpcao Invalida!!!\n");
			 delay(2000);
			}
		 if((resp=='c')||(resp=='C'))
			{
			 if ((arqt = fopen(&narq[0], "wt"))== NULL)
		  {
			fprintf(stderr, "\nNao foi possivel criar novo arquivo texto.\n");
			delay(2000);
			return 0;
		  }
			 else
		  {
			printf("\nNovo arquivo texto criado com sucesso.");
			fflush(stdin);
			getch();
			fclose(arqt);
			return 1;
		  }
			}
		 if((resp=='a')||(resp=='A'))
			{
			 printf("\nArquivo sera atualizado.");
			 fflush(stdin);
			 getch();
			 return 1;
			}
		}while((resp!='a')&&(resp!='A')&&(resp!='c')&&(resp!='C'));
		 }
	}
 return 0;
}

void grava_dados(char tipo,char narq[14], char dire[14])
{
 char nome [100];
 int idade;
 clrscr();
 chdir(dire);
 printf ("Digite seu nome: ");
 fflush(stdin);
 gets(nome);
 printf ("Digite sua idade: ");
 scanf("%d",&idade);
 if (tipo=='b')
	 {
	  FILE *arqb;
	  if ((arqb = fopen(&narq[0], "ab"))== NULL) //Aberto como apend, pois a opcao 1
	{                           //determina se vai ser atualizado ou criado novo.
	 fprintf(stderr, "\nOcorreu um erro, retorne a Opcao de Criar arquivo.\n");
	 delay(2000);
	}
	  fprintf(arqb,"%s\n%d\n",nome,idade);
	  fclose(arqb);
	 }
 if (tipo=='t')
	 {
	  FILE *arqt;
	  if ((arqt = fopen(&narq[0], "at"))== NULL) //Aberto como apend, pois a opcao 1
	{                                       //determina se vai ser atualizado ou criado novo.
	 fprintf(stderr, "\nOcorreu um erro, retorne a Opcao de Criar arquivo.\n");
	 delay(2000);
	}
	  fprintf(arqt,"%s\n%d\n",nome,idade);
	  fclose(arqt);
	 }
}

void imprime_dados(char tipo,char narq[14], char dire[14])
{
 char nome[100],aux[3];
 int idade;
 clrscr();
 chdir(dire);
 if (tipo=='b') //imprimindo dados para arquivos binarios
	 {
	  FILE *arqb;
	  if ((arqb = fopen(&narq[0], "rb"))== NULL)
	{
	 fprintf(stderr, "\nOcorreu um erro, retorne a Opcao de Criar arquivo.\n");
	 delay(2000);
	}
	  while(!feof(arqb))
	  {
		fgets(nome,sizeof(nome),arqb);
		fscanf(arqb,"%d",&idade);
		fgets(aux,sizeof(nome),arqb);
		if(!feof(arqb))
		  printf("Nome: %sIdade: %d\n",nome,idade);
	  }
	  fflush(stdin);
	  getch();
	  fclose(arqb);
	 }
 if (tipo=='t') //imprimindo dados para arquivos de texto
	 {
	  FILE *arqt;
	  if ((arqt = fopen(&narq[0], "rt"))== NULL)
	{
	 fprintf(stderr, "\nOcorreu um erro, retorne a Opcao de Criar arquivo.\n");
	 delay(2000);
	}
	  while(!feof(arqt))
	  {
		fgets(nome,sizeof(nome),arqt);
		fscanf(arqt,"%d",&idade);
		fgets(aux,sizeof(aux),arqt);
		if(!feof(arqt))
		  printf("Nome: %sIdade: %d\n",nome,idade);
	  }
	  fflush(stdin);
	  getch();
	  fclose(arqt);
	 }
}

void main ()
{
 char narqv[14],ndir[14],cdir[MAXDIR],aux;
 int op=0,op2=0,verif=0;
 clrscr();
 getcwd(cdir,MAXDIR); //Guardando diretorio corrente
 do{              //Selecao do Menu Principal
	 menu1();
	 fflush(stdin);
	 switch (op=getch())
	  {
		case 49:{      //Selecionado Arquivo de texto
			 do{
				 menu2(); //Selecao do Sub-Menu
				 fflush(stdin);
				 switch (op2=getch())
				  {
					case 49:{
						 clrscr();
						 printf("Digite o nome do Diretorio (Ex: C:\dir): ");
						 gets(ndir);
						 printf("\nDigite o nome do Arquivo (Ex:Arquivo.ext): ");
						 gets (narqv);
						 if((testadirarq(&ndir[0],'t',&narqv[0]))==0)
					  printf("Ocorreu um erro. Tente novamente.");
						 verif=1;
						}
						break;
					case 50:{
						 if(verif!=1)
					 {
					  clrscr();
					  printf("Deve-se executar a opcao 1 para setagem de arquivo.");
					  delay(2000);
					  break;
					 }
						 do{
					  grava_dados('t',&narqv[0],&ndir[0]);
					  do{
						  printf("Deseja Cadastrar novamente (S/N): ");
						  fflush(stdin);
						  aux=getche();
						  if((aux!='s')&&(aux!='S')&&(aux!='n')&&(aux!='N'))
							 {
						printf("\nOpcao Invalida!!!\n");
						delay(2000);
							 }
						 }while((aux!='s')&&(aux!='S')&&(aux!='n')&&(aux!='N'));
					 }while((aux!='n')&&(aux!='N'));
						}
						break;
					case 51:{
						 if(verif!=1)
					 {
					  clrscr();
					  printf("Deve-se executar a opcao 1 para setagem de arquivo.");
					  delay(2000);
					  break;
					 }
						 imprime_dados('t',&narqv[0],&ndir[0]);
						}
						break;
					case 27:break;
					default: if((op2!=49)&&(op2!=50)&&(op2!=51)&&(op2!=27))
					 {
					  clrscr();
					  printf("Opcao Invalida!!!\n");
					  delay(2000);
					 }
				  }
				}while(op2!=27);
			 break;
			}
		case 50:{   //Selecao do Arquivo Binario
			 do{
				 menu2();  //Selecao do Sub-Menu
				 fflush(stdin);
				 switch (op2=getch())
				  {
					case 49:{
						 clrscr();
						 printf("Digite o nome do Diretorio (Ex: C:\dir): ");
						 gets(ndir);
						 printf("\nDigite o nome do Arquivo (Ex:Arquivo.ext): ");
						 gets (narqv);
						 if((testadirarq(&ndir[0],'b',&narqv[0]))==0)
					 printf("Ocorreu um erro. Tente novamente.");
						 verif=1;
						}
						 break;
					case 50:{
						 if(verif!=1)
					 {
					  clrscr();
					  printf("Deve-se executar a opcao 1 para setagem de arquivo.");
					  delay(2000);
					  break;
					 }
						 do{
					  grava_dados('b',&narqv[0],&ndir[0]);
					  do{
						  printf("Deseja Cadastrar novamente (S/N): ");
						  fflush(stdin);
						  aux=getche();
						  if((aux!='s')&&(aux!='S')&&(aux!='n')&&(aux!='N'))
							 {
						printf("\nOpcao Invalida!!!\n");
						delay(2000);
							 }
						 }while((aux!='s')&&(aux!='S')&&(aux!='n')&&(aux!='N'));
					 }while((aux!='n')&&(aux!='N'));
						}
						break;
					case 51:{
						 if(verif!=1)
					 {
					  clrscr();
					  printf("Deve-se executar a opcao 1 para setagem de arquivo.");
					  delay(2000);
					  break;
					 }
						 imprime_dados('b',&narqv[0],&ndir[0]);
						}
						break;
					case 27:break;
					default: if((op2!=49)&&(op2!=50)&&(op2!=51)&&(op2!=27))
					 {
					  clrscr();
					  printf("Opcao Invalida!!!\n");
					  delay(2000);
					 }
				  }
				}while(op2!=27);
			}
		case 27: break;
		default: if((op2!=49)&&(op2!=50)&&(op2!=51)&&(op2!=27))
				{
				 clrscr();
				 printf("Opcao Invalida!!!\n");
				 delay(2000);
				}
	  }
	}while(op!=27);
 chdir(cdir); //Retornando ao diretorio corrente
 clrscr();
}