Ir ao conteúdo
  • Cadastre-se

Matheus F. Fonseca

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Eu estava tentando remover os arquivos de forma lógica por uma variavel flag mas o professor nao aceitou como executar do modo em que tenho que passar o valor pra um arquivo auxiliar. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <locale.h> struct controleNota{ float nota1, nota2; float media; int status; char disc[50]; char prof[50]; char sigla[25]; }aluno; FILE *tnt; FILE *aux; int verificaDisciplinaAlt(); int verificaExclusao(); void excluir(); void alterar(); void mostrarTudo(); void cadastro(); int local (); void pesquisa(); int achou = 0, locByte, loc; char nome[50]; int main(){ setlocale(LC_ALL, "Portuguese"); int op; do { system("cls"); printf("\t-----------------------------------------------------------------\n"); printf("\t-\t Membros:Matheus Freitas e Daniel\t\t\t-\n\t-----------------------------------------------------------------\n"); printf("\t\t\t----------MENU---------\n\t\t\t1)Cadastrar Disciplinas\n"); printf("\t\t\t2)Pesquisar Discipinas\n\t\t\t3)Excluir Disciplinas\n\t\t\t4)Mostrar Todos\n"); printf("\t\t\t5)Alterar Programa\n\t\t\t6)Encerrar Programa\n"); printf("\nDigite sua opção: "); scanf("%d",&op); fflush(stdin); switch(op){ case 1: system("cls"); cadastro(); break; case 2: system("cls"); pesquisa(); break; case 3: system("cls"); excluir(); break; case 4: system("cls"); mostrarTudo(); break; case 5: system("cls"); alterar(); break; case 6: system("cls"); printf("Programa Encerrado Com Sucesso\nGOKU WINS!!!!!"); exit(0); default: printf("NÚMERO INCORRETO!\n"); printf("DIGITE QUALQUER TECLA PRA CONTINUAR\n"); getch(); fflush(stdin); system("cls"); } }while(op != 6); fclose(tnt); } int verificaDisciplina(char disciplina[50]){ tnt = fopen("controleNotas.txt", "ab+"); int existe = 0; rewind(tnt); while(!feof(tnt)){ fread(&aluno, sizeof(struct controleNota), 1, tnt); if(strcmp(aluno.disc,disciplina)==0){ if(aluno.status == 0){ existe = 1; break; } else{ existe = 0; break; } } else{ existe = 1; } } return existe; } void cadastro(){ int existe; char disciplina[50]; do{ printf("Digite o nome da Disciplina ou s para sair \n"); fflush(stdin); gets(disciplina); existe = verificaDisciplina(disciplina); tnt = fopen("controleNotas.txt", "ab+"); fseek(tnt,0L,SEEK_END); if(existe !=0){ if((strcmp(disciplina,"s")!=0)&&(strcmp(disciplina,"S")!=0)){ strcpy(aluno.disc,disciplina); printf("Digite o nome do Professor\n"); gets(aluno.prof); fflush(stdin); printf("Digite a sigla da disciplina\n"); gets(aluno.sigla); fflush(stdin); printf("Digite a nota do primeiro bimestre do cidadão[use virgula para separar decimais]\n "); scanf("%f",&aluno.nota1); printf("Digite a nota do segundo bimestre do cidadão[use virgula para separar decimais]\n "); scanf("%f",&aluno.nota2); aluno.status=1; if(fwrite(&aluno,sizeof(struct controleNota),1,tnt)){ printf("\n\tDISCIPLINA ADICIONADA-----------\n"); system("cls"); fclose(tnt); } else{ printf("\n\tOCORREU ERRO NO CADASTRO\n"); } } } else{ printf("\nDisciplina ja cadastrada"); printf("\nDigite qualquer tecla pra voltar\n"); getch(); system("cls"); } }while((strcmp(disciplina,"s")!=0)&&(strcmp(disciplina,"S")!=0)); printf("\nTecle <ENTER> para voltar."); getch(); system("cls"); fclose(tnt); } void pesquisa(){ int posi; posi = local(); if(posi<0){ printf("\tDISCIPLINA NÃO ENCONTRADA\n"); } else{ tnt = fopen("controleNotas.txt", "rb"); fseek(tnt,posi*sizeof(struct controleNota),SEEK_SET); fread(&aluno,sizeof(struct controleNota),1,tnt); printf("\tNome do Professor %s\n",aluno.prof); printf("\tNome da Disciplina %s\n",aluno.disc); printf("\tSigla da Discilina %s\n",aluno.sigla); printf("\t---1 NOTA---\t---2 NOTA---\n\t---%.2f---\t---%.2f---\n",aluno.nota1,aluno.nota2); aluno.media=(aluno.nota1+aluno.nota2)/2; if(aluno.media>=7){ printf("\tA MEDIA é: %.2f\n",aluno.media); printf("\t------MATERIA COM ÓTIMOS RESULTADOS------\n"); } else { printf("\tA MEDIA é: %.2f\n",aluno.media); printf("\t------ALUNO COM BAIXO RENDIMENTO------\n"); } } printf("\nTecle <ENTER> para voltar."); getch(); system("cls"); fclose(tnt); } /*void excluir(){ int posi; posi = local(); if(posi <0){ printf("\tDISCIPLINA NÃO ENCONTRADA\n"); } else{ tnt = fopen("controleNotas.txt","rb+"); fseek(tnt,posi*sizeof(struct controleNota), SEEK_SET); fread(&aluno,sizeof(struct controleNota),1,tnt); printf("\nEssa Disciplina sera excluída...\n"); printf("\tNome do Professor %s\n",aluno.prof); printf("\tNome da Disciplina %s\n",aluno.disc); printf("\tSigla da Discilina %s\n",aluno.sigla); printf("\t---1 NOTA---\t---2 NOTA---\n\t---%.2f---\t---%.2f---\n",aluno.nota1,aluno.nota2); fflush(stdin); getch(); aluno.status = 0; fseek(tnt,posi*sizeof(struct controleNota), SEEK_SET); if(fwrite(&aluno,sizeof(struct controleNota),1,tnt)){ printf("\nDISCIPLINA EXCLUÍDA\n"); } else{ printf("\nFALHOU"); } } printf("\nTecle <ENTER> para voltar."); getch(); system("CLS"); fclose(tnt); } */ void excluir(){ achou = 0; system("cls"); aux = fopen("auxiliar.txt", "wb"); tnt = fopen("controleNotas.txt", "rb"); int kk; if(tnt == NULL){ tnt = fopen("controleNotas.txt", "wb"); fclose(tnt); tnt = fopen("controleNotas.txt", "rb"); } printf("Digite o nome da disciplina que deseja excluir: "); gets(nome); fflush(stdin); while(!feof(tnt)){ fread(&aluno, sizeof(struct controleNota), 1, tnt); if(strcmp(aluno.disc, nome) == 0){ achou = 1; locByte = ftell(tnt); loc = locByte / sizeof(struct controleNota); break; } } fclose(tnt); tnt = fopen("controleNotas.txt", "rb"); if(achou == 1){ char resp; printf("Deja excluir %s? [S/N]", nome); scanf("%c", &resp); fflush(stdin); if(resp == 'S' || resp == 's'){ rewind(tnt); rewind(aux); kk = 1; while(!feof(tnt)){ fread(&aluno, sizeof(struct controleNota), 1, tnt); if(loc != kk){ fwrite(&aluno, sizeof(struct controleNota), 1, aux); } kk = kk + 1; } system("pause"); fclose(tnt); remove("controleNotas.txt"); tnt = fopen("controleNotas.txt", "wb"); fclose(aux); aux = fopen("auxiliar.txt", "rb"); while(!feof(aux)){ fread(&aluno, sizeof(struct controleNota), 1, aux); fwrite(&aluno, sizeof(struct controleNota), 1, tnt); } fclose(aux); remove("auxiliar.txt"); }else{ fclose(tnt); fclose(aux); system("pause"); } }else{ printf("Tarefa nao encontrada!!\n\n"); system("pause"); } } int local (){ if((tnt = fopen("controleNotas.txt", "rb"))==NULL){ printf("\n\tNÃO POSSUI NOTAS E DISCIPLINAS CADASTRADAS\n"); printf("\n\tDigite qualquer tecla pra voltar\n"); getch(); fflush(stdin); system("cls"); main(); } if(verificaExclusao()==1){ printf("\n\tNÃO POSSUI NOTAS E DISCIPLINAS CADASTRADAS\n"); printf("\n\tDigite qualquer tecla pra voltar\n"); getch(); fflush(stdin); system("cls"); main(); } rewind(tnt); char cadedisc[70]; int cont = 0; fflush(stdin); printf("\n\tNome da Disciplina:"); gets(cadedisc); while(!feof(tnt)){ fread(&aluno, sizeof(struct controleNota), 1, tnt); if(strcmp(aluno.disc,cadedisc)==0){ if(aluno.status == 0){ cont = -1; break; } break; } cont++; } if(strcmp(cadedisc,aluno.disc)!=0){ cont = -1; } fclose(tnt); return cont; } void mostrarTudo(){ int x=0; if((tnt = fopen("controleNotas.txt", "rb"))==NULL){ printf("\n\tNÃO POSSUI NOTAS E DISCIPLINAS CADASTRADAS\n"); printf("\n\tDigite qualquer tecla pra voltar\n"); getch(); fflush(stdin); system("cls"); main(); } if(verificaExclusao()==1){ printf("\n\tNÃO POSSUI NOTAS E DISCIPLINAS CADASTRADAS\n"); printf("\n\tDigite qualquer tecla pra voltar\n"); getch(); fflush(stdin); system("cls"); main(); } fseek(tnt, 0L, SEEK_SET); fread(&aluno, sizeof(struct controleNota),1, tnt); do{ if(aluno.status!=0){ printf("\n\tNome do Professor %s\n",aluno.prof); printf("\tNome da Disciplina %s\n",aluno.disc); printf("\tSigla da Discilina %s\n",aluno.sigla); printf("\t---1 NOTA---\t---2 NOTA---\n\t---%.2f---\t---%.2f---\n",aluno.nota1,aluno.nota2); aluno.media=(aluno.nota1+aluno.nota2)/2; if(aluno.media>=7){ printf("\tA MEDIA é: %.2f\n",aluno.media); printf("\t------MATERIA COM ÓTIMOS RESULTADOS------\n"); } else { printf("\tA MEDIA é: %.2f\n",aluno.media); printf("\t------ALUNO COM BAIXO RENDIMENTO------\n"); } x++; } fread(&aluno, sizeof(struct controleNota),1, tnt); }while(!feof(tnt)); printf("\n\n\tTOTAL DE MATERIAS CADASTRADAS %d\n\n",x); printf("\nTecle <ENTER> para voltar."); getch();//Para até que tecle algo do teclado; system("CLS");//Limpa tela fclose(tnt); } void alterar(){ int x,z,existe; char disciplina[50]; char disciplinaAtual[50]; x=local(); if(x<0){ printf("\tDISCIPLINA NÃO ENCONTRADA\n"); } else{ tnt = fopen("controleNotas.txt", "rb+"); fseek(tnt,x*sizeof(struct controleNota),SEEK_CUR); fread(&aluno,sizeof(struct controleNota),1,tnt); printf("\nDeseja alterar a seguinte disciplina...\n"); printf("\tNome do Professor %s\n",aluno.prof); printf("\tNome da Disciplina %s\n",aluno.disc); strcpy(disciplinaAtual,aluno.disc); printf("\tSigla da Discilina %s\n",aluno.sigla); printf("\t---1 NOTA---\t---2 NOTA---\n\t---%.2f---\t---%.2f---\n",aluno.nota1,aluno.nota2); fflush(stdin); printf("\t\t##############MENU MUDANÇAS##############"); printf("\n\n\nNome da Disciplina \n"); gets(disciplina); existe = verificaDisciplinaAlt(tnt,disciplina,disciplinaAtual); if(existe !=0){ fseek(tnt,x*sizeof(struct controleNota),SEEK_CUR); strcpy(aluno.disc,disciplina); printf("Digite o nome do Professor\n"); gets(aluno.prof); fflush(stdin); printf("Digite a sigla da disciplina\n"); gets(aluno.sigla); fflush(stdin); printf("Digite a nota do primeiro bimestre do cidadão\n"); scanf("%f",&aluno.nota1); printf("Digite a nota do segundo bimestre do cidadão\n"); scanf("%f",&aluno.nota2); aluno.status=1; fseek(tnt,x*sizeof(struct controleNota),SEEK_SET); if(fwrite(&aluno,sizeof(struct controleNota),1,tnt)){ printf("\n\tALTERADO COM SUCESSO-----------\n"); } else{ printf("\n\tERRO NA ATUALIZAÇÃO\n"); } } else{ printf("\nDisciplina com esse nome ja cadastrada"); printf("\nDigite qualquer tecla pra voltar\n"); getch(); system("cls"); } } printf("\nTecle <ENTER> para voltar."); getch();//Para até que tecle algo do teclado; system("CLS");//Limpa tela fclose(tnt); } int verificaExclusao(){ tnt=fopen("controleNotas.txt","rb"); rewind(tnt); fread(&aluno,sizeof(struct controleNota),1,tnt); do{ if(aluno.status != 0){ return 0; } fread(&aluno,sizeof(struct controleNota),1,tnt); }while(!feof(tnt)); fclose(tnt); return 1; } int verificaDisciplinaAlt(FILE *tnt2,char disciplina[50],char disciplinaAtual[50]){ int existe = 0; rewind(tnt2); while(!feof(tnt2)){ fread(&aluno, sizeof(struct controleNota), 1, tnt2); if(strcmp(aluno.disc,disciplinaAtual)==0){ existe = 1; }else{ if(strcmp(aluno.disc,disciplina)==0){ if(aluno.status == 0){ existe = 1; break; } else{ existe = 0; break; } } else{ existe = 1; } } } return existe; }
  2. Pessoal preciso que me ajudem no desenvolvimento de um programa em c. O jogo freecell.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...