segunda-feira, 27 de junho de 2016

Programação de Computadores - 27 de Junho de 2016

Programação de Computadores - 27 de Junho de 2016

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: