Ir ao conteúdo
  • Cadastre-se
Igor Emanoel Junqueira

C++ Trabalho de Introdução aos algoritmos utilizando vetor

Recommended Posts

No trabalho pede pra fazer o seguinte.

O programa deverá apresentar um menu contendo as opções incluir (1), excluir (2), listar (3), alterar (4) e sair (5). Deverão ser criados n vetores (sendo n o número de informações). O vetor deverá possui um número limite sendo que a rotina de inclusão deverá respeitar esse limite, caso o usuário tente incluir um registro fora do tamanho especificado o sistema deverá apresentar a mensagem "cheio". A exclusão deverá ser do tipo lógica, ou seja, deverá existir um vetor do tipo booleano que define se o registro está ou não excluído. Para alteração e exclusão deverá ser utilizado o primeiro campo do registro para a busca, caso não seja encontrado o programa deverá apresentar a mensagem "nao existe". Parte-se do pressuposto que não deverão existir dois registros com o primeiro campo de busca igual. Durante a alteração o primeiro campo não poderá ser alterado. No início do programa sempre deverá ser lido a quantidade de registros.

 

fiz e enviei no site da minha faculdade que da a nota na hora ele deu nota 75.8 e deu a seguinte mensagem de erro. O programa pode realizar uma repetição sem fim de operações de escrita. A quantidade de dados escritos pelo programa é diferente da quantidade de dados esperados.

já testei tudo e não achei nada de errado, se poder ajudar a encontrar algo de errado vai ajudar muito segue o código.

#include <iostream>

using namespace std;

int main(){
	int limite, menu, j;
	
	cin >> limite;

	string nome[limite], marca[limite], ano[limite], descricao[limite], aux;
	bool registro[limite];

	for (int i = 0; i < limite; i++)
		registro[i] = true;

	bool vazio = true, auxBool;
	

	menu = 0;
	while (menu != 5) {
		cin >> menu;
		switch(menu) {
			case 1:
				//incluir
				vazio = false;
				j = 0;
				while (!vazio and j < limite) {
					//verificar se tem espaço no vetor
					if (registro[j]) {
						vazio = true;
					}
					j++;
				}
				//posição do vetor com espaço vazio está 1 posição na frente, então j--
				j--;
				if (!vazio) {
					cout << "cheio" << endl;
				} else {
					registro[j] = false;
					cin >> nome[j];
					cin >> marca[j];
					cin >> ano[j];
					cin >> descricao[j];
				}
				break;

			case 2:
				//excluir
				cin >> aux;
				j = 0;
				auxBool = true;
				while (j < limite and auxBool) {
					if (aux == nome[j] and registro[j] == false) {
						auxBool = false;
						registro[j] = true;
					}
					j++;
				}

				if (auxBool)
					cout << "nao existe" << endl;
				break;

			case 3:
				//listar
				for (int i = 0; i < limite; i++) {
					if (!registro[i]) {
						cout << nome[i] << endl;
						cout << marca[i] << endl;
						cout << ano[i] << endl;
						cout << descricao[i] << endl;
					}
				}
				break;

			case 4:
				//alterar
				cin >> aux;
				auxBool = true;
				j = 0;
				while (j < limite and auxBool) {
					if (nome[j] == aux and registro[j] == false) {
						cin >> marca[j];
						cin >> ano[j];
						cin >> descricao[j];
						auxBool = false;
					}
					j++;
				}

				if (auxBool)
					cout << "nao existe" << endl;
				break;
		}
	}
	return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Igor Emanoel Junqueira  Olá. Olhando para o código o primeiro ponto q chama a atenção é q o menu não aparece no mesmo em nenhum lugar, enquanto q na descrição do exercício diz claramente: "O programa deverá apresentar um menu contendo as opções incluir (1), excluir (2), listar (3), alterar (4) e sair (5)"  (!?)

Outro ponto, o seu "switch" só trata de 4 casos, q são os de 1 a 4. Não aparece nada para o caso do usuário digitar o valor 5 e tampouco aparece a condição "default", para o caso do usuário digitar uma opção errada, com o valor 7, por exemplo (!?)

Outra dica q eu daria para melhorar o código seria fazer uso do "do/while" ao invés do "while" na apresentação do menu, q é a abordagem mais comum para casos assim, pois garante q o menu será apresentado pelo menos 1 vez.

Talvez tenha ocorrido um erro na postagem do código (omitindo esses itens q citei) , mas, se o código é esse mesmo, aí seria interessante considerar os pontos q foram frisados aqui. 

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@giu_d Obrigado pelas dicas realmente não tinha colocado, na questão do menu não posso colocar pois o site não aceita,coloquei do jeito que você falou o do while, o case 5 , o default não tenho o que colocar nele pois não posso colocar qualquer mensagem no programa porque o site não aceita. mas enviei no site e continua com a mesmo nota.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Igor Emanoel Junqueira  Olá. Mesmo assim, sem poder imprimir nada, recomendo fazer uso do bloco default só com o comando break nele, para casos do usuário digitar um valor inválido.

Outro ponto q chamou a atenção é q se eu não insiro nenhum registro, inda assim, ao selecionar as opções  excluir e/ou alterar, é solicitado qual registro excluir ou alterar. Me parece um pouco sem lógica isso

Também está meio assim a questão de alterações. É falado q o primeiro campo não pode ser alterado. Nesse caso, não seria melhor solicitar, mesmo assim, o novo nome, q seria o primeiro campo,  e aí fazer uma validação para saber se o nome, q corresponde ao primeiro campo,  continua o mesmo? Me parece mais lógico fazer dessa forma

adicionado 19 minutos depois

Se alguém tiver alguma dica agradeço

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso alguém tenha uma sugestão para esse exercício ajudaria muito, pois devo confessar q está difícil para dar respostas objetivas para o autor do tópico. Deixo aberto esse ponto para q outros membros postem sugestões

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na parte que diz que o programa deveria criar n vetores, onde n indica o número de informações... O caso o usuário quem digitaria o valor de n, e o programa tem que requisitar todas esse número de informações? Ou tem outra parte do enunciado que quais as informações necessárias?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@isrnick  Me parece q a lógica q ele está seguindo está correta. Considere o enunciado: "O vetor deverá possui um número limite sendo que a rotina de inclusão deverá respeitar esse limite, caso o usuário tente incluir um registro fora do tamanho especificado... "

e no fim do enunciado:   "No início do programa sempre deverá ser lido a quantidade de registros"

adicionado 17 minutos depois

Em casos assim, onde o aluno envia o código para um corretor automático (pelo q pude entender) para ele ter alcançado essa nota significa q o problema se trata de alguns poucos ajustes

adicionado 22 minutos depois

Sendo sincero, estou em dúvida na questão de qtde de informações ser igual a qtde de registros ou não

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





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×