Ir para conteúdo
Entre para seguir isso  
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.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por Ivana_Silva
      Olá a todos que estão lendo!
       
      Preciso de uma função PHP que filtre 2 padrões de campos a partir do caractere barra(|), preservando a linha.
       
      Em uma caixa de texto vou colar valores assim:
      0001|qwerty
      0002|091234
      0003|09164867
      0004|ab12312
      ...
      A caixa de texto:
      <form id="form" name="form" method="post" action=""> <textarea name="lista" type="text" id="lista" cols="48" rows="5" size="600" /></textarea> <br /> <br /> <button type="submit">Separar</button> </form> <?php ?> Quando eu clicar no botão Separar, preciso que o código filtre e mostre apenas as linhas que, após barra " | " possuam números inteiros de 6 e 8 dígitos(sem letras, símbolos ou pontos).
       
      Exemplo:
      Dados colados na caixa de texto:
      0001|qwerty
      0002|091234
      0003|09164867
      0004|ab12312
       
      Dados filtrados após clicar no botão Separar:
      0002|091234
      0003|09164867
       
      Filtrou apenas os campos que após a barra "|" possuem 6 e 8 dígitos(Nem mais nem menos), não é pra filtrar campos com letras ou números e letras, se tiver letra após a barra já descarta... É pra Filtrar e mostrar apenas as linhas que possuem 6 e 8 dígitos após a barra.
      Agradecida se alguém puder ajudar!
       
    • Por Bruno Goedert Dalmolin
      Não consigo apresentar as palavras equivalentes conseguem me ajudar???
      O código é o seguinte: 
       
      #include <stdio.h>
      char equivale(int ddd){
          switch(ddd){
              case 61:
                  return "Brasilia";
                  break;
              case 71:
                  return "Salvador";
                  break;
              case 11:
                  return "Sao Palo";
                  break;
              case 21:
                  return "Rio de Janeiro";
                  break;
              case 32:
                  return "Juiz de Fora";
                  break;
              case 19:
                  return "Campinas";
                  break;
              case 27:
                  return "Vitoria";
                  break;
              case 31:
                  return "Belo Horizonte";
                  break;
          }
      }
      int main(){
          int ddd;
          scanf("%d",&ddd);
          equivale(ddd);
          printf("%d",equivale(ddd));
      }
    • Por Fábio.info7
      Olá pessoal, estou precisando de uma grande ajuda, tenho duas tabelas no postgres, são elas: PESSOA e a outra é  ENDERECOS, elas estão relacionadas, oq acontece é que no php eu preciso recuperar o valor do id através da função nextval('nome_da_sequnce'), e não estou sabendo fazer, preciso recuperar o ultimo id e depois realizar o insert nas tabelas relacionadas, poderiam me dar um exemplo de como implementar isso? abaixo deixo o meu codigo php, acredito que esteja errado pois não esta gravando no banco.
       
      Minhas tabelas do banco: CREATE TABLE public.pessoa ( codigo_aluno integer NOT NULL DEFAULT nextval('pessoa_codigo_aluno_seq'::regclass), cpf character varying(11) COLLATE pg_catalog."default" NOT NULL, nome character varying(30) COLLATE pg_catalog."default" NOT NULL, sexo character varying(30) COLLATE pg_catalog."default" NOT NULL, nascimentodata date NOT NULL, email character varying(50) COLLATE pg_catalog."default" NOT NULL, endereco integer, CONSTRAINT pessoa_pkey PRIMARY KEY (codigo_aluno), CONSTRAINT pessoa_endereco_fkey FOREIGN KEY (endereco) REFERENCES public.enderecos (codigo_endereco) ) CREATE TABLE public.enderecos ( codigo_endereco integer NOT NULL DEFAULT nextval('enderecos_codigo_endereco_seq'::regclass), logradouro character varying(200) COLLATE pg_catalog."default" NOT NULL, bairro character varying(80) COLLATE pg_catalog."default" NOT NULL, cidade character varying(100) COLLATE pg_catalog."default" NOT NULL, uf character varying(2) COLLATE pg_catalog."default" NOT NULL, cep character varying(20) COLLATE pg_catalog."default" NOT NULL, CONSTRAINT enderecos_pkey PRIMARY KEY (codigo_endereco) ) ****** ABAIXO O PHP *************************************** <?php try { require_once "conexao.php"; $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); $sql = "select nextval('pessoa_codigo_aluno_seq')"; $seq = $conn->prepare($sql); $id = $seq->execute(); $id = $seq->fetchAll(PDO::FETCH_ASSOC); $sql = "insert into pessoa (cpf, nome, sexo, nascimentodata, email, endereco ) values (:cpf, :nome, :sexo, :nascimentodata, :email, :fk_endereco )"; $inserir = $conn->prepare($sql); $inserir->bindParam(":cpf", $dados["cpf"]); $inserir->bindParam(":nome", $dados["nome"]); $inserir->bindParam(":sexo", $dados["sexo"]); $inserir->bindParam(":nascimentodata", $dados["nascimentodata"]); $inserir->bindParam(":email", $dados["email"]); $inserir->bindParam(":fk_endereco", $id['codigo_endereco']); $inserir->execute(); // Gravando dados de endereço $sql_end = "insert into enderecos (codigo_endereco, logradouro, bairro, cidade, uf, cep, pessoa )values(:codigo_endereco, :logradouro,:bairro,:cidade,:uf,:cep, :pessoa)"; $end = $conn->prepare($sql_end); $end->bindParam(":codigo_endereco", $id['codigo_endereco']); $end->bindParam(":logradouro", $dados["logradouro"]); $end->bindParam(":bairro", $dados["bairro"]); $end->bindParam(":cidade", $dados["cidade"]); $end->bindParam(":uf", $dados["uf"]); $end->bindParam(":cep", $dados["cep"]); $end->execute(); echo "Dados gravados com sucesso!"; } catch (Exception $e) { echo "Mensagem: " . $e->getMessage() . "<br/>"; echo "Linha do Erro: " . $e->getLine() . "<br/>"; } PRECISO CONSEGUIR INSERIR OS DADOS NAS DUAS TABELAS INSERINDO OS IDS RECUPERADOS PELO NEXTVAL()
    • Por Caio Mekacheski
      Beleza galera, nesse meu primeiro post, quero compartilhar esse video onde inicio um tutorial básico pra aprender a programar em c++, só que de maneira prática. Um programa simples que eu escrevi pra fazer o cálculo da metragem cúbica de peças de madeira que eu beneficio aqui na minha pequena marcenaria. Um programa simples que me ajuda a executar uma tarefa tediosa, e que apresenta um conhecimento básico na programação em c++. Então resolvi fazer dele um tutorial prático para iniciantes. Nesse primeiro video eu apresento um esboço inicial pra entender o que o programa vai fazer. Conforme for desenvolvendo o programa, vou apresentando novos conceitos gradativamente. Espero que gostem. 
       
      https://www.youtube.com/watch?v=Obr8Jrp7LGQ
×

Informação importante

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