Ir ao conteúdo
  • Cadastre-se

ReplicantMachine

Membros Juniores
  • Total de itens

    1
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <locale.h> /* Síntese Objetivo: Acompanhar os teste dos aviões dos clientes, realizado pela Embraer, nas pistas de prova Entrada: Para cada avião, codigo de identificação, modelo, capacidade, nome do cliente, país de origem; para as pistas de teste, código sequencial,endereco, estado onde localiza-se a pista, tamanho do circuito, velocidade maxima obtida em todos os testes, identificação da avião que obteve maior velocidade Saída: Se teste realizado, identificação do avião, identificação do aviao, data do teste (com dia mes e ano) colhido diretamente do computador e velocidade máxima aferida. */ #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 #define COD_ID 7 #define MAX 100 //cria um sinônimo ou alias para para um tipo de dado existente typedef struct{ char codigoIdentificacao[COD_ID]; char modeloAviao[MAX]; int capacidade; char nomeCliente[MAX]; char nomePais[MAX]; }Aviao; typedef struct{ int codigoPista; char enderecoPista[MAX]; char estadoPista[MAX]; float tamanhoCircuito; float velocidadeMaxima; Aviao aviao; }PistaDeTeste; void leValidaFloat(char *msg, char *msgErro, float *circuito); int verifica(char nome[]); int leValidaCapacidade(char *msg, char *msgErro, int *cap); char *leValidaTexto(char *msg, char *msgErro); int verificaModelo(char modelo[]); int verificaCodigoAviao(char codigoAviao[]); int verificaCodigo(char nome[]); char *leValidaCodigoAviao(char *msg, char *msgErro); void cadastrarDadosPistas(); void cadastrarDadosAvioes(); void chamaMenuPrincipal(char *opcao); void chamaFuncoesMenuPrincipal(char *opcao); int main(int argc, char *argv[]) { setlocale(LC_ALL, "Portuguese"); char opcao=' '; do{ printf("CONTROLE DE TESTES DE AVIOES DA EMBRAER\n\n"); chamaMenuPrincipal(&opcao); chamaFuncoesMenuPrincipal(&opcao); }while(opcao!='s'); return 0; } //Chama as funcoes do menu principal //entrada: Opcao //Saida: Nenhuma void chamaMenuPrincipal(char *opcao){ int flag=1; do{ printf("(1)- CADASTRAR DADOS DO CLIENTE\n"); printf("(2)- CADASTRAR DADOS DA PISTA DE TESTE\n"); printf("(3)- CADASTRAR DADOS TESTE\n"); printf("(S)- ENCERRAR O PROGRAMA\n"); scanf(" %c", &*opcao); *opcao=tolower(*opcao); if((*opcao<49||*opcao>51)&&*opcao!='s'){ printf("\nOpcao invalida!\n"); flag=0; }else{ flag=1; } system("cls"); }while(!flag); } void chamaFuncoesMenuPrincipal(char *opcao){ switch(*opcao){ case '1': cadastrarDadosAvioes(); break; case '2': cadastrarDadosPistas(); break; case '3': break; case 's': exit(EXIT_SUCCESS); break; } } void cadastrarDadosAvioes(){ Aviao aviao; char opcaoEscolhida= ' '; int gravado=0, flag=1; FILE *arquivo; arquivo = fopen("avioes.txt", "ab"); if(!arquivo){ perror("\nErro na abertura do arquivo!\n"); exit(EXIT_FAILURE); }else{ do{ do{ strcpy(aviao.codigoIdentificacao, leValidaCodigoAviao("DIGITE O CODIGO DO AVIAO:", "\nCODIGO INVALIDO!\n")); //verifica se existe repeticao if(verificaCodigoAviao(aviao.codigoIdentificacao)==0){ flag=0; printf("\nESSE CODIGO JA EXISTE!\n"); }else{ flag=1; } }while(!flag); do{ strcpy(aviao.modeloAviao, leValidaTexto("DIGITE O MODELO DO AVIAO:", "\nMODELO NAO PODE SER VAZIO!\n")); if(verificaModelo(aviao.modeloAviao)==0){ flag=0; printf("\nESSE MODELO JA EXISTE\n"); }else{ flag=1; } }while(!flag); gravado = fwrite(&aviao, sizeof(Aviao), 1, arquivo); if(gravado==1){ printf("\nGravado com sucesso!\n"); } printf("(1)- CADASTRAR OUTRO AVIAO (Tecle S)\n"); printf("(2)- VOLTAR AO MENU (QUALQUER OUTRA TECLA)\n"); scanf(" %c", &opcaoEscolhida); opcaoEscolhida=tolower(opcaoEscolhida); system("cls"); getch(); }while(opcaoEscolhida=='s'); fclose(arquivo); } } void cadastrarDadosPistas(){ } char *leValidaCodigoAviao(char *msg, char *msgErro){ char *pNome=0, nome[MAX]; strcpy(nome, ""); int stringTam=0, flag=1, verificador=0; do{ printf("%s", msg); fflush(stdin); scanf("%[^\n]s", nome); if(strlen(nome)==0){ printf("%s", msgErro); flag=0; }else if(strlen(nome)<COD_ID || strlen(nome)>COD_ID){ flag=0; }else if(verificaCodigo(nome)==0){ flag=0; }else{ flag=1; } }while(!flag); system("cls"); getch(); return pNome = nome; } int verificaCodigo(char nome[]){ int i, flag=1; for(i=0;i<COD_ID;i++){ if(i<3){ if(!isalpha(nome[i])){ flag=0; } }else{ if(!isdigit(nome[i])){ flag=0; } } } return flag; } char *leValidaTexto(char *msg, char *msgErro){ char *pNome=0, aux[MAX]; strcpy(aux, ""); int i, flag=1, stringTam=0; do{ printf("%s", msg); fflush(stdin); scanf("%[^\n]s", &aux); if(strlen(aux)==0){ printf("%s", msgErro); flag=0; }else{ flag=1; } }while(!flag); system("cls"); getch(); return pNome = aux; } int leValidaCapacidade(char *msg, char *msgErro, int *cap){ int flag=1; do{ printf("%s", msg); scanf("%d", &*cap); if(*cap<=0){ printf("%s", msgErro); flag=0; }else{ flag=1; } }while(!flag); system("cls"); } int verifica(char nome[]){ FILE *paises; char aux[MAX]; paises = fopen("paises.txt", "rb"); if(!paises){ perror("Error: "); exit(EXIT_FAILURE); }else{ fflush(stdin); while(fgets(aux, sizeof(aux), paises)!=NULL){ if(aux[strlen(aux)-1]=='\n'){ aux[strlen(aux)-1]='\0'; } if(stricmp(nome, aux)==0){ return 1; } } } return 0; } void leValidaFloat(char *msg, char *msgErro, float *circuito){ int flag=1; do{ printf("%s", msg); scanf("%f", &*circuito); if(*circuito<=0){ flag=0; printf("%s", msgErro); }else{ flag=1; } }while(!flag); } int verificaCodigoAviao(char codigoAviao[]){ Aviao aviao; FILE *arquivo; arquivo = fopen("avioes.txt", "rb"); if(!arquivo){ perror("Error: "); exit(EXIT_FAILURE); }else{ fread(&aviao, sizeof(Aviao), 1, arquivo); while(!feof(arquivo)){ if(strcmp(aviao.codigoIdentificacao, codigoAviao)==0){ fseek(arquivo, -sizeof(Aviao), SEEK_CUR); return 0; } fread(&aviao, sizeof(Aviao), 1, arquivo); } return 1; } } int verificaModelo(char modelo[]){ Aviao aviao; FILE *arquivo; arquivo = fopen("avioes.txt", "rb"); if(!arquivo){ perror("\nNao foi possivel abertura do arquivo!\n"); exit(EXIT_FAILURE); }else{ fread(&aviao, sizeof(Aviao), 1, arquivo); while(!feof(arquivo)){ if(strcmp(aviao.modeloAviao, modelo)==0){ fseek(arquivo, -sizeof(Aviao), SEEK_CUR); return 0; } } return 1; } fclose(arquivo); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×