segunda-feira, 27 de junho de 2016

Programação de Computadores - 27/06/2016

Programação de Computadores - 27/06/2016

Exercícios

Questão 1)
Suponha a existência de um programa que realiza o controle das vendas de passagens de um ônibus mapeando os acentos disponíveis e os acentos vendidos como no esquema, sendo que os acentos disponíveis possuem o valor 0 (zero), e os acentos ocupados a idade da pessoa que está ocupando o acento:



a) Faça uma função que carrega a matriz com os dados de ocupação do ônibus a partir de um arquivo preexistente.
b) Faça uma função que grave a matriz com os dados de ocupação do ônibus em um arquivo.
c) Faça uma função que realiza a reserva de um acento dados acento (linha), fila (coluna) e idade.
d) Faça uma função que retorne a posição (acento e fila) da pessoa mais velha no ônibus.
e) Faça uma função que retorne quanto acentos estão disponíveis na janela.
f) Faça uma função que retorne a média das idades das pessoas no ônibus.

Resposta minha (finalizada - funções 3, 4, 5 e 6 testadas no CodeBlocks):

#include <iostream>
#include <fstream>
#include <cstdlib>


using namespace std;

int assentos[4][21];
int i=0,j=0;
int funcao=0;
int fila=0;
int coluna=0;
int idade=0;
int assentoslivresjanelas=0;
int passageiros=0;
int idademedia=0;

// resposta da letra a: função que carrega a matriz com os dados de ocupacao do onibus a partir de um arquivo preexistente
void leitura(){

ifstream le_tabela("onibus.txt");
    for (i=0;i<4;i++){
        for (j=0;j<21;j++){
            le_tabela>>assentos[i][j];
        } // fechamento do for
    }// fechamento do for

le_tabela.close();

} // fechamento do void leitura

// resposta da letra b: função que grava a matriz com os dados de ocupacao do onibus em um arquivo
void gravacao(){

ofstream grava_matriz("dadosdoonibus.txt");
    for (i=0;i<4;i++){
        for (j=0;j<21;j++){
            grava_matriz<<assentos[i][j]<<endl;
        } // fechamento do for
    }// fechamento do for

grava_matriz.close();
cout<<"** Matriz gravada com sucesso. Arquivo: dadosdoonibus.txt **"<<endl<<endl;
cout<<"Retornando ao menu principal"<<endl<<endl;
} // fechamento do void gravacao


// resposta da letra c: função que realiza reserva
void reserva(){

    cout<<" || Reserva de Assentos || "<<endl<<endl;
    cout<<"** digite '-1' para sair da funcao**"<<endl<<endl;
    cout<<"Insira a linha (fila) desejada"<<endl<<endl;
    cin>>fila;
    cout<<"Insira a coluna desejada"<<endl<<endl;
    cin>>coluna;

    if (assentos[fila-1][coluna-1]==0){
        cout<<"Digite a idade do passageiro"<<endl<<endl;
        cin>>idade;
        assentos[fila-1][coluna-1]=idade;
        cout<<"** Assento reservado com sucesso **"<<endl<<endl;
    } // fechamento do if

    else if (assentos[fila-1][coluna-1]!=0){
        cout<<"** Assento ocupado **"<<endl<<endl;
        cout<<"** Se desejar tentar reservar outro assento, entre no menu reserva novamente **"<<endl<<endl;
    } // fechamento do if

} // fechamento do void reserva


void pessoamaisvelha(){

idade=0;

    for (i=0;i<4;i++){
        for (j=0;j<21;j++){
            if (idade<assentos[i][j]){
                idade=assentos[i][j];
                fila=i;
                coluna=j;
            }
        } // fechamento do for
    }// fechamento do for
    cout<<"A pessoa mais velha no onibus tem "<<idade<<" anos e esta no assento posicionado na fila "<<fila<<" e na coluna "<<coluna<<" ."<<endl<<endl;

} // fechamento do void pessoamaisvelha


void janelaslivres(){

assentoslivresjanelas=0;

    // Para a lateral esquerda do onibus
    for (j=0;j<21;j++){
            if (assentos[0][j]==0){
                assentoslivresjanelas++;
            }
    }// fechamento do for

    // Para a lateral direita do onibus
    for (j=0;j<21;j++){
            if (assentos[3][j]==0){
                assentoslivresjanelas++;
            }
    }// fechamento do for

    cout<<"Existem "<<assentoslivresjanelas<<" assentos livres em janelas no onibus."<<endl<<endl;

} // fechamento do void janelaslivres


void mediaidades(){

idade=0;
passageiros=0;
idademedia=0;

    for (i=0;i<4;i++){
        for (j=0;j<21;j++){
            if (assentos[i][j]!=0){
                idade=idade+assentos[i][j];
                passageiros++;
            }
        } // fechamento do for
    }// fechamento do for
    idademedia=idade/passageiros;
    cout<<"A idade media dos passageiros e: "<<idademedia<<" anos."<<endl<<endl;

} // fechamento do void mediaidades


int main()
{
    funcao=0;
    cout << "|| Controle de vendas de passagens ||" << endl<<endl;
    while (funcao!=-1){
        cout<<"|| Menu principal ||"<<endl<<endl;
        cout<<"Digite o numero da funcao desejada ou '-1' para encerrar"<<endl<<endl;
        cout<<"|| Funcao 1: carrega a matriz com os dados de ocupacao do onibus a partir de um arquivo preexistente ||"<<endl<<endl;
        cout<<"|| Funcao 2: grava a matriz com os dados de ocupacao do onibus em um arquivo ||"<<endl<<endl;
        cout<<"|| Funcao 3: realiza reserva ||"<<endl<<endl;
        cout<<"|| Funcao 4: retornar a posicao do assento (fila e coluna) da pessoa mais velha no ônibus ||"<<endl<<endl;
        cout<<"|| Funcao 5: retorna o numero de assentos disponiveis nas janelas ||"<<endl<<endl;
        cout<<"|| Funcao 6: retorna a media das idades das pessoas no onibus ||"<<endl<<endl;
        cin>>funcao;
        if (funcao==1){
            leitura();
        } // fechamento do if
        if (funcao==2){
            gravacao();
        } // fechamento do if
        if (funcao==3){
            reserva();
        } // fechamento do if
        if (funcao==4){
            pessoamaisvelha();
        } // fechamento do if
        if (funcao==5){
            janelaslivres();
        } // fechamento do if
        if (funcao==6){
            mediaidades();
        } // fechamento do if
    } // fechamento do while
    return 0;
}


Questão 2)
O que o programa a seguir mostra na tela após ser executado?

#include<cstdlib>
#include<iostream>
using namespace std;
int selecao (intx,inty){
 int M[10][10],i,j;
 for(i=0;i<5;i++){
  for(j=0;j<5;j++){
   M[i][j]=i+j;
  }
 }
 return M[x][y];
}
int main{
 int P;
 P=selecao(5,6);
 cout<<P;
 return 0;
}

Resposta minha:

Como a matriz só é preenchida até a posição [4][4], o ponto P receberá o valor de vazio, caso a matriz esteja limpa na posição [5][6] antes da execução do programa.

Lucas T R Freitas

Nenhum comentário: