Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DE SANTA CATARINA Lista Exercícios Binários N 1. Programação de Computadores II Carlos Eduardo Vilarinho 12202304 1) Um determinado instituto de pesquisa realizou uma pesquisa a nível nacional, na qual foram entrevistadas uma certa quantia de pessoas. Cada pessoa respondeu ao seguinte questionário: Sexo: ( )M ( )F Idade: ____ anos Fumante: ( )S ( )N Considere um arquivo binário de registros (denominado “resposta.bin”) que contém as respostas de todas as pessoas entrevistadas. Cada registro armazena a resposta de uma pessoa entrevistada através dos seguintes campos: sexo (um caractere, podendo ser ‘M’ ou ‘F’), idade (valor inteiro), fumante (um caractere, podendo ser ‘S’ ou ‘N’). Faça um programa que leia este arquivo binário e responda as seguintes perguntas: • Qual é o percentual de fumantes em relação ao número total de pessoas entrevistadas? • Qual é o percentual de homens não fumantes abaixo de 40 anos em relação ao número total de homens entrevistados? • Qual é o percentual de mulheres fumantes acima de 40 anos em relação ao número total de mulheres entrevistadas? #include <stdio.h> void limpaBuffer(){ setbuf(stdin,NULL); } //definicao da struct typedef struct { int numero; char sexo; int idade; char fuma; } search; //programa principal main() { FILE *bancoPesquisa; search pes; int i=1, upSexo, upFuma; char sair='\0'; float percentFuma=0, percentMan=0, percentWman=0, fum=0, hnf=0, mf=0, man=0, wman=0; bancoPesquisa = fopen("bancoPesquisa.dat","wb+"); //gravar os dados digitados while (sair!='n'){ printf("Qual seu Sexo?\n"); limpaBuffer(); pes.sexo = getchar(); limpaBuffer(); pes.numero = i; printf("Qual sua Idade?\n"); limpaBuffer(); scanf("%d",&pes.idade); printf("Voce eh fumante?\n"); limpaBuffer(); pes.fuma = getchar(); fwrite(&pes, sizeof(search), 1, bancoPesquisa); i++; if(pes.fuma=='s'){ fum = fum +1; } if(pes.sexo=='f'){ wman = wman +1; } if(pes.sexo=='m'){ man = man +1; } if( (pes.fuma=='n') && (pes.sexo=='m') && (pes.idade<40) ) { hnf = hnf+1; } if( (pes.fuma=='s') && (pes.sexo=='f') && (pes.idade>40) ) { mf = mf+1; } printf("Digite n Para Encerrar Pesquisa...\n"); limpaBuffer(); scanf("%c", &sair); } fclose(bancoPesquisa); // Abrir para a leitura do que esta no arquivo bancoPesquisa = fopen("bancoPesquisa.dat","rb+"); if (bancoPesquisa != NULL) { fread(&pes, sizeof(search), 1, bancoPesquisa); if (ferror(bancoPesquisa)) { printf("\nOcorreu um erro na leitura."); } while (!feof(bancoPesquisa)) { limpaBuffer(); printf("\nIndice Pesquisa: %d | Sexo: %c | Idade: %2d | Fumante: %c |",pes.numero, upSexo = toupper(pes.sexo), pes.idade, upFuma = toupper(pes.fuma) ); fread(&pes, sizeof(search), 1, bancoPesquisa); } } fclose(bancoPesquisa); // Resultado da Pesquisa.. printf("\n\nTotal de Pessoas Entrevistadas: %d",pes.numero); percentFuma = ( fum / pes.numero) * 100 ; printf("\nPercentual de Fumantes: %.2f ",percentFuma); percentMan = ( hnf / man) * 100 ; printf("\nPercentual de Homens nao Fumantes Abaixo dos 40 Anos: %.2f ",percentMan); percentWman = ( mf / wman)* 100 ; printf("\nPercentual de Mulheres Fumantes Acima dos 40 Anos: %.2f ",percentWman); } 2) Considere um arquivo binário de registros (denominado “alunos.bin”) onde cada registro armazena as seguintes informações sobre um aluno qualquer de uma turma de, no máximo, 50 alunos: matrícula (cadeia de 3 caracteres), nome (cadeia de 30 caracteres) e três notas referentes às avaliações feitas pelo aluno (valores reais entre 0 e 10). Faça um programa que leia este arquivo e apresente a matrícula, o nome, a nota média (a soma das três notas dividida por três) e o conceito (“excelente” se a média for maior ou igual a 8.5, “bom” se a média for maior ou igual a 7.0 e menor que 8.5, e “preocupante” se a média for menor que 7.0) de cada aluno da turma. #include <stdio.h> #include <string.h> void limpaBuffer(){ setbuf(stdin,NULL); } //definicao da struct typedef struct { int codigo; float nota1,nota2,nota3, mediaNotas; char mat[4]; char nome[30]; char status[15]; } turma; //programa principal main() { FILE *bancoPesquisa; turma aluno; int i=48; char sair='\0'; bancoPesquisa = fopen("alunos.dat","wb+"); //gravar os dados digitados while (sair!='n'){ aluno.codigo = i; printf("Qual sua Matricula ?\n"); limpaBuffer(); scanf("%s",&aluno.mat); strupr(aluno.mat); printf("Qual seu Nome ?\n"); limpaBuffer(); scanf("%s",&aluno.nome); strupr(aluno.nome); printf("Qual sua Nota_1 ?\n"); limpaBuffer(); scanf("%f",&aluno.nota1); printf("Qual sua Nota_2 ?\n"); limpaBuffer(); scanf("%f",&aluno.nota2); printf("Qual sua Nota_3 ?\n"); limpaBuffer(); scanf("%f",&aluno.nota3); aluno.mediaNotas = (aluno.nota1 + aluno.nota2 + aluno.nota3) / 3; if(aluno.mediaNotas >= 8.5){ strcpy(aluno.status , "Excelente"); } if( (aluno.mediaNotas >= 7.0) && ( aluno.mediaNotas <8.5) ){ strcpy(aluno.status , "Bom"); } if(aluno.mediaNotas < 7.0){ strcpy(aluno.status , "Preocupante"); } fwrite(&aluno, sizeof(turma), 1, bancoPesquisa); i++; printf("Digite n Para Encerrar Pesquisa...\n"); limpaBuffer(); scanf("%c", &sair); if(i>50){ printf("A Ficha dos Alunos ultrapassou de 50 Registros.\n"); sair='n'; } } fclose(bancoPesquisa); // Abrir para a leitura do que esta no arquivo bancoPesquisa = fopen("alunos.dat","rb+"); if (bancoPesquisa != NULL) { fread(&aluno, sizeof(turma), 1, bancoPesquisa); if (ferror(bancoPesquisa)) { printf("\nOcorreu um erro na leitura."); } while (!feof(bancoPesquisa)) { limpaBuffer(); printf("\n\nCodigo: %d|Matricula: %s|Nome: %s|Nota_1: %.2f|Nota_2: %.2f|Nota_3: %.2f|Media: %.2f|Status: %s|", aluno.codigo, aluno.mat, aluno.nome, aluno.nota1, aluno.nota2, aluno.nota3, aluno.mediaNotas, aluno.status); fread(&aluno, sizeof(turma), 1, bancoPesquisa); } } fclose(bancoPesquisa); }
Compartilhar