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:
Postar um comentário