Resolução de exercícios:
Questão única:
Você foi convidado pelo professor de programação para ajudar no controle dos registros acadêmicos e para isso deve fazr um programa em c++ (construindo uma função para cada item) que permita:
a) Ler a nota de 40 alunos e gravá-los em um arquivo externo.
b) Recuperar os dados do arquivo gravado inserindo em 2 vetores distintos, um primeiro contendo as notas maiores ou iguais a 5,0 e um segundo contendo as notas menores que 5,0.
c) Imprimir as notas armazenadas no primeiro vetor e as armazenadas no segundo vetor separadamente (sem "lixo").
d) Imprimir a quantidade de notas do segundo vetor que estão entre 4,0 e 5,0.
e) Imprimir uma mensagem dizendo se a quantidade de notas do primeiro vetor está acima ou abiaxo de 6,0.
Resposta minha (letra a pronto e testada no codeblocks):
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
// Declarando e zerando as variáveis
float notadoaluno=0;
int funcao=0;
int sairfuncao=0;
int i=0;
int contmaior5=0;
int contmenor5=0;
int notasentre4e5=0;
float notamaiorigual5[40];
float notamenor5[40];
// resposta da letra a: Ler a nota de 40 alunos e gravá-los em um arquivo externo.
void leitura(){
ofstream gravanotadoaluno("notas.txt");
sairfuncao=0;
cout<<endl<<endl<<"|| Bem vindo a funcao de gravacao das notas nos alunos ||"<<endl<<endl;
for (i=0;i<40;i++){
if (sairfuncao!=-1){
cout<<"**Informe a nota do aluno || "<<i+1<<" || ou digite '-1' para sair.**"<<endl;
cin>>sairfuncao;
if (sairfuncao!=-1){
notadoaluno=sairfuncao;
cout<<endl<<"A nota do aluno "<<i+1<<" e: "<<notadoaluno<<endl<<endl<<endl;
gravanotadoaluno<<notadoaluno<<endl;
} // fechamento do if
} // fechamento do if
} // fechamento do for
gravanotadoaluno.close();
cout<<endl<<endl;
cout<<"Retornando ao menu principal."<<endl;
cout<<endl<<endl<<endl;
} // fechamento do void leitura
// resposta da letra b: Separar as notas dos alunos em dois vetores: notas maiores ou iguais a 5 e notas menores que 5
void separanotas(){
ifstream separar("notas.txt");
sairfuncao=0;
contmaior5=0;
contmenor5=0;
cout<<endl<<endl<<"|| Separando as notas dos alunos em dois vetores: notas maiores ou iguais a 5 e notas menores que 5 ||"<<endl<<endl;
for (i=0;i<40;i++){
if (sairfuncao!=-1){
separar>>notadoaluno;
if (notadoaluno>=5){
notamaiorigual5[contmaior5]=notadoaluno;
contmaior5++;
} // fechamento do if
if (notadoaluno<5){
notamenor5[contmenor5]=notadoaluno;
contmenor5++;
} // fechamento do if
} // fechamento do if
} // fechamento do for
cout<<endl<<endl;
cout<<"Notas separadas."<<endl;
cout<<endl<<endl;
cout<<"Retornando ao menu principal."<<endl;
cout<<endl<<endl<<endl;
} // fechamento do void separanotas
// resposta da letra c: Imprimir as notas dos vetores
void imprimenotas(){
ifstream separar("notas.txt");
sairfuncao=0;
cout<<endl<<endl<<"|| Separando as notas dos alunos em dois vetores: notas maiores ou iguais a 5 e notas menores que 5 ||"<<endl<<endl;
cout<<"Notas maiores ou iguais a cinco: "<<contmaior5<<" notas."<<endl;
for (i=0;i<contmaior5;i++){
if (sairfuncao!=-1){
cout<<"A nota na posicao "<<i+1<<" e: "<<notamaiorigual5[i]<<endl;
} // fechamento do if
} // fechamento do for
cout<<endl<<endl<<endl;
cout<<"Notas menores que cinco: "<<contmenor5<<" notas."<<endl;
for (i=0;i<contmenor5;i++){
if (sairfuncao!=-1){
cout<<"A nota na posicao "<<i+1<<" e: "<<notamenor5[i]<<endl;
} // fechamento do if
} // fechamento do for
cout<<endl<<endl;
cout<<"Notas impressas."<<endl;
cout<<endl<<endl;
cout<<"Retornando ao menu principal."<<endl;
cout<<endl<<endl<<endl;
} // fechamento do void imprimenotas
// resposta da letra d: Imprimir as notas entre 4 e 5 do segundo vetores
void imprimenotasentre4e5(){
sairfuncao=0;
cout<<endl<<endl<<"|| Contando as notas entre 4 e 5 dos alunos entre as notas menores que 5 ||"<<endl<<endl;
for (i=0;i<contmenor5;i++){
if (notamenor5[i]>=4 && notamenor5[i]<5){
notasentre4e5++;
} // fechamento do if
} // fechamento do for
cout<<endl<<endl;
cout<<"A quantidade de notas entre 4 e 5 e: "<<notasentre4e5<<"."<<endl;
cout<<endl<<endl;
cout<<"Retornando ao menu principal."<<endl;
cout<<endl<<endl<<endl;
} // fechamento do void imprimenotasentre4e5
// resposta da letra e: Imprimir uma mensagem dizendo se a quantidade de notas do primeiro vetor está acima ou abaixo de 6,0
void imprimenotas6(){
sairfuncao=0;
if (contmaior5<6){
cout<<endl<<endl<<"|| A quantidade de notas do primeiro vetor esta abaixo de 6 ||"<<endl<<endl;
}
if (contmaior5>6){
cout<<endl<<endl<<"|| A quantidade de notas do primeiro vetor esta acima de 6 ||"<<endl<<endl;
}
cout<<endl<<endl;
cout<<"Retornando ao menu principal."<<endl;
cout<<endl<<endl<<endl;
} // fechamento do void imprimenotas6
int main()
{
cout<<endl<<endl << "-- Bem-vindo ao programa de registros academicos --" << endl<<endl;
cout<<endl;
funcao=100; // mudando o valor da variável sair
while (funcao!=-1){
cout<<"|| Menu de funcoes ||"<<endl;
cout<<endl;
cout<<endl;
cout<<"|| Registros Academicos - Funcoes ||"<<endl<<endl;
cout<<"|| Funcao (1): Ler as notas dos 40 alunos e gravar em um arquivo txt externo. ||"<<endl<<endl;
cout<<"|| Funcao (2): Separar as notas dos alunos em dois vetores: notas maiores ou iguais a 5 e notas menores que 5. ||"<<endl<<endl;
cout<<"|| Funcao (3): Imprimir as notas separadas em vetores: notas maiores ou iguais a 5 e notas menores que 5. ||"<<endl<<endl;
cout<<"|| Funcao (4): Imprimir a quantidade de notas que estao entre 4 e 5. ||"<<endl<<endl;
cout<<"|| Funcao (5): Imprimir as notas separadas em vetores: notas maiores ou iguais a 5 e notas menores que 5. ||"<<endl<<endl;
cout<<endl;
cout<<"Informe o numero da funcao desejada ou digite -1 para sair"<<endl<<endl;
cout<<endl<<endl<<endl;
cin>>funcao;
if (funcao==1){
leitura();
}// fechamento do if
if (funcao==2){
separanotas();
}// fechamento do if
if (funcao==3){
imprimenotas();
}// fechamento do if
if (funcao==4){
imprimenotasentre4e5();
}// fechamento do if
if (funcao==5){
imprimenotas6();
}// fechamento do if
} // fechamento do while
return 0;
}
Lucas T R Freitas
Nenhum comentário:
Postar um comentário