Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ricardoo de Almeidaa

Prova de Lógica de Programação, vocês conseguem resolver?

Recommended Posts

Boa noite galera, :)

Queria saber a opinião de vocês a respeito dessa prova, se acham difícil ou fácil e se conseguiriam resolver rápido.

(obs: está em C++). :rolleyes:

// Programa Escola de Natação - Prova B1 - 17/09/2016 - Turma da Tarde
//
#include "Escola.h"
//	Entry point do programa
//
void main(void)
{
	int nPeriodo,								// periodo da aula de natação
		nRaia,									// raia da piscina
		nQtdeRaiasDaPiscina,					// quantidade de raias da piscina
		nQtdeTotalDeRaias,						// qtde total de raias nos três períodos
		i, j;									// índices genéricos
	char cOpcao,								// opcao do operador
		cNomeAluno[] = "Preencher com seu nome",
		cRA_Aluno[] = "Preencher com seu RA",
		cWork[200];								// para sprintf_s
	SYSTEMTIME stTime;							// para data e hora do sistema
	// vetores dos periodos e raias das piscinas
	bool vetRaiasLivres[QTDE_RAIAS_DA_PISCINA * QTDE_PERIODOS];	// vetor que indica se raia livre ou ocupada
												// true - indica ocupada e false indica livre
	char vetSobrenomes[QTDE_RAIAS_DA_PISCINA * QTDE_PERIODOS][TAMANHO_SOBRENOME];	// vetor de sobrenomes
	double vetMensalidades[QTDE_RAIAS_DA_PISCINA * QTDE_PERIODOS];	// vetor mensalidades
	// para duas casas decimais nos valores
	setlocale(LC_ALL, "portuguese_brazil");		// para acentuação brasileira
	// <<<1>>> - Preencher as variáveis com seu nome e RA
	// <<<2>>> - Fazer um loop indicando que todas as raias de todos os períodos estão desocupadas
	//			 
	//			 Não se esquecer do seguinte:
	//				No período da manhã temos a raia 1 até Qtde de Raias da Piscina, no período da tarde de
	//				1 até a Qtde de Raias da Piscina, idem no período da noite.
	//
	//
	//	Loop Infinito
	while(true)
	{
		LIMPAR_TELA;
		GetLocalTime(&stTime);						// data e hora do sistema
		sprintf(cWork, 
			"\tFATEC-Escola de Natação %02d/%02d/%04d às %02d:%02d:%02d\n\tOperador: %s Matrícula: %s",
			stTime.wDay, stTime.wMonth, stTime.wYear, 
			stTime.wHour, stTime.wMinute, stTime.wSecond,
			cNomeAluno, cRA_Aluno);
		cout << cWork << endl;
		// exibir o menu
		cout << MATRICULAR_ALUNO << " - Matricular aluno em um período desejado" << endl
			<< CANCELAR_MATRICULA << " - Cancelar a matrícula de um aluno" << endl
			<< LANCAR_DESPESA << " - Lançar despesas em um aluno matriculado" << endl
			<< LISTAR_PERIODO << " - Listar os alunos de um dado período" << endl
			<< SAIR_DO_PROGRAMA << " - Sair do programa" << endl
			<< "\tSelecione: ";
		cin  >> cOpcao;
		cOpcao = toupper(cOpcao);					// converte para maiúscula
		switch(cOpcao)								// avalia a opção escolhida
		{
			case MATRICULAR_ALUNO:
				// <<<5>>> - pedir um período válido (desejado pelo aluno) através da função 
				//				BuscarPeriodo
				// <<<6>>> - chamar a função que verifica se tem uma raia livre no
				//			 período desejado e se não houver uma livre, esta função, devolve zero e
				//			 caso contrário, devolve o número da raia livre no período desejado
				//			 Se não houver uma raia livre cancelar esta ação de matricular aluno
				//				(volta ao menu principal)
				// <<<7>>> - pedir o sobrenome do aluno sendo matriculado.
				//			 verificar se existe o mesmo sobrenome nas raias ocupadas. Para
				//			 cada parente encontrado será dado um desconto de 10% limitado ao
				//			 máximo de 40%.
				//			 Assim: Se houver um só ou o primeiro aluno a mensalidade é cheia (100%); 
				//			  se houver mais um 10% de desconto, se houver
				//				mais um 20%; mais um 30% e apartir quarto todos terão 40% de desconto
				// <<<8>>>	Associar este aluno ao período e à raia desejada (ocupar a raia com a bool true
				//			no vetor de livre/ocupada, sobrenome que está nesta raia, valor da mensalidade
				//			Indicar a raia e o período onde o aluno foi matriculado
				//			Dar uma pausa e
				//			Voltar ao menu 
				//
				break;								// cai fora do switch
			case CANCELAR_MATRICULA:				
				// <<<9>>>  Chamar a função que pede o periodo e a raia indicando que a ação é
				//			Cancelamento de Matrícula
				// <<<10>>> Verificar se a raia está ocupada e se estiver livre avisar ao operador e
				//			cancelar está ação voltando ao menu
				//			Se a raia estiver ocupada exibir o sobrenome, valor da matrícula
				// <<<11>>> Pedir a confirmação do cancelamento da matrícula e havendo a confirmação
				//			apenas indicar que está raia deste periodo está livre. Caso contrário
				//			voltar ao menu principal
				break;								// cai fora do switch
			case LANCAR_DESPESA:
				// <<<12>>> Chamar a função que pede o periodo e a raia indicando que a ação é
				//			Lançamento de Despesa
				// <<<13>>> Verificar se a raia está ocupada e se estiver livre avisar ao operador e
				//			cancelar está ação voltando ao menu
				// <<<14>>> Se a raia estiver ocupada exibir o Sobrenome e as despesas até o momento
				//			Pedir o valor da despesa
				//			Somar o valor informado às despesas anteriores deste aluno
				//			Voltar ao menu
				break;								// cai fora do switch
			case LISTAR_PERIODO:				
				// <<<15>>> Pedir um período válido ou zero para cancelar a ação de listar
				//			Se foi informado um período válido listar todos as raias ocupadas
				//			no seguinte formato:
				//				Listagem das raias do periodo: ppppppp
				//			Raia Sobrenome  Mensalidade 
				//			 RR  SSSSSSSSS  MMMMMM,MM	
				//			.....
				//			.....
				//					       Total Mensalidades: TTTTTT,TT
				//			Onde: PPPPPPP - periodo: "Manhã", "Tarde" ou "Noite"
				//				  RR - raia ocupada ( 1 a Qtde de Raias da Piscina)
				//				  SSSSSSSSS - sobrenome do aluno
				//				  MMMMM - valor da mensalidade
				//				  TTTTTT,TT - valor total de todas as mensalidades
				//	<<<16>>> Pausa para visualização e voltar ao menu
				break;								// cai fora do switch
			case SAIR_DO_PROGRAMA:					
				cout << "Vai sair realmente? (S ou N): ";
				cin >> cOpcao;
				if(cOpcao == 's' || cOpcao == 'S')	// sair realmente?
					return;			
				break;								// cai fora do switch
			default:
				cout << "Opção inválida!" << endl;
				PAUSA;
		} // switch
	} // while
} // main
// 
// Funções do Programa
//
// Função que pede um período válido e uma raia da piscina válida
// Parâmetros:
//	Entrada: int *ptrPeriodo - ponteiro para receber o período desejado
//			 int *ptrRaia - ponteiro para receber a raia da piscina desejada
//			 int nQtdePeriodos - quantidade de períodos da Escola de Natação
//			 int nQtRaiasPiscina - quantidade de raias que tem a piscina da Escola de Natação
//			 char *ptrAcao - ponteiro de um string que contém a ação que está sendo executada
//	Retorno: bool - true - indica que foi informado um período e uma raia válidos
//					false - indica que o operador desistiu da ação que iria executar
//							digitando periodo zero
bool PedirPeriodoRaia(int *ptrPeriodo, int *ptrRaia, 
					  int nQtdePeriodos, int nQtRaiasPiscina, char *ptrAcao)
{
	return true;							// ???? para não dar erro de compilação
}
//
// Função que verifica se tem uma raia livre no período desejado
//	Parâmetros:
//		Entrada: bool *ptrVetLivreOcup - ponteiro do vetor de bool que indica se a raia está 
//										 livre ou ocupada
//				 int nPeriodo - período desejado
//				 int nQtRaiasPiscina - quantidade de raia que a piscina te´m
//		Retorno: int - Número da raia que está livre ou zero se não existir nenhuma
//						raia livre no período desejado
int BuscarRaiaLivreNoPeriodo(bool *ptrVetLivreOcup, int nPeriodo, int nQtRaiasPiscina)
{
	return 0;							// ???? para não dar erro de compilação
}
// Parâmetros:
//	Entrada: int *ptrPeriodo - endereço de uma inteira que receberá o periodo desejado
//			 int nQtdePeriodos - quantidade de periodos
//			 char *ptrAcao - ponteiro de um string que contém a ação em execução
//	Retorno: bool - true - foi indicado um período válido
//					false - foi indicado um periodo zero que indica cancelar a ação desejada
bool BuscarPeriodo(int *ptrPeriodo, int nQtdePeriodos, char *ptrAcao)
{
	return true;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então essa prova tem 80% de reprovação aqui, o professor diz que o mais difícil são duas equações que devem ser "descobertas" para que o programa funcione sem nenhuma muleta, você sabe quais seriam?

(observação: essa prova é do ano passado, é só uma curiosidade minha: saber se a prova que é complicada ou aqui somos burros mesmo... :D )

Compartilhar este post


Link para o post
Compartilhar em outros sites

O segredo é ir fazendo parte por parte, sem se preocupar com os outros pontos do programa. Com certeza ela reprova muito porque o pessoal olha como um todo, e não como um conjunto de pedaços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por alexdyna
      Prezados,
      Amigos tenho que fazer um trabalho da faculdade onde o professor me da um arquivo que vou colocar anexo e tenho que fazer um algoritmo que leia o arquivo e monte uma tabela com as informações.
      pelo que vejo ele tem na primeira linha 8 barra e nas demais linha 10 barras
      ate a ultima que seria sua parada onde temos 2 barras seguidas.
       
      ficaria muito grato com a ajuda de todos.
       
      No arquivo anexo esta o texto:
      Nome/telefone/nascimento/Horas Curso/vendas T1/vendas T2/vendas T3/vendas T4/
       Luiz Ranza Neo/99934-5255/05/12/1989/200/107099,072578621/76915,8996218681/100922,271239691/76372,9971916498/
      Richard de Barrissaia/99326-4689/18/03/1990/150/55123,0080621828/68062,2200055909/67233,9928593779/45236,5928531083/
      Rodrigo Abalâminos/99911-7413/09/08/1987/168/71697,3866071191/58063,5644108225/88183,6230762134/48160,3116315664/
      José Gigfrid/99658-7874/15/04/1997/135/48816,199086596/50086,3689415844/52916,3066872779/55232,0663463164/
      Luiza Celly Silva/99659-1214/01/02/2000/90/29208,8223591438/39361,8088384592/45062,056112236/38913,7237126574/
      Maria Kunlun/99686-7845/21/04/1984/182/92076,1053757689/80440,5339844205/87575,0546657182/79220,9398178354/
      //
       
    • Por 4Unknow
      Bom dia comunidade Imasters.

      Venho aqui tratar de um problema dúvida que estou tendo com um layout que estou tentando usar o formulário php dele.
      Quando clico em enviar ele me enviar para um arquivo .php  (assets/vendor/simple-forms/sendmail.php)

      Ele não envia o e-mail, acredito que deveria aparecer uma mensagem que o contato foi enviado corretamente.
      Vou deixar os arquivos aqui em anexo quem puder me ajudar nessa, ficaria muito grato.
       
      Link Website (wetransfer.com)
    • Por credson
      Elabore um algoritmo que possa descobrir, através de perguntas e respostas, qual meio de transporte o usuário está pensando.
      O usuário deverá escolher uma das seguintes opções:
      - Trator
      - Moto
      - Bicicleta
      - Trem
      - Carro
      - Caminhão
      - Ônibus
      - Paraquedas
      - Balão
      - Avião
      - Helicóptero
      - Submarino
      - Barco
      - Navio
      - Lancha
      Para chegar ao resultado, só devem ser usadas perguntas que retornem "Sim" ou "Não".
      Exemplo:
      É terrestre? Sim.
      Cabe apenas uma pessoa? Sim.
      É pesado? Não.
      Tem pedal? Sim.
       
       
       
      alguem sabveria pode ser  qualquer linguagem
    • Por andersonseifert
      boa tarde, podem me ajudar em uma logica ?
      tenho um numero exemplo 300 , quero aumentar ele sempre +1 , tipo usuario digitou que precisa de 50 numeros depois dos 300 exemplo : 301,302,303... ate 305.
       O que me recomendam fazer ? um array ou for somando +1 ?
       
       
       

    • Por Rafael da Silveira
      Bom dia Pessoal, tudo bem?
      O problema aqui está mais para matematica do que para programação. Mas como sei que aqui só tem fera e pode ser que alguem tenha passado por algo semelhante...

      Tenho um cliente que precisa de uma página, onde ele coloca o valor do produto a vista, e ele joga o valor com as taxas da maquinha de cartão dele...
      A principio é tranquilo, pega o valor, soma taxa, multiplica taxa e pronto...
       
      O problema é que essas taxas são cobradas em cima do valor final, o que depois dos descontos acaba saindo abaixo do valor a vista.
      E ele que receber o valor á vista, deixando para o cliente pagar essa diferença...

      Como resolver essa questão? Alguém poderia me ajudar?
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.