Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
Postado (editado)

@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

Editado por giu_d
Corrigir a resposta

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






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

×