Ir para conteúdo
Fórum Script Brasil
  • 0

vetores com estruturas de repetição encadeadas


Ramon Perez

Pergunta

olá. desde já agradeço por compartilhar comigo sua experiencia!

quero preencher um vetor a partir do teclado, sem permitir que valores já adicionados sejam novamente inseridos....

meu problema está justamente na condição que testa se já existe algum numero dentro do vetor que seja igual a entrada atual....

meu raciocínio foi o seguinte: criar um for principal; armazenar a entrada vinda do usuário na variável 'var', e então usar um outro for encadeado varrendo todo o vetor até então preenchido pra ver se tem outro número igual. se ele encontra, teste =1, que é a restrição do do-while e ele sai do loop, voltando pro primeiro scanf pra repetir o processo; se ele não encontra nenhum numero igual, ele guarda o conteúdo da variavel var dentro do vetor v1;

 

Desculpem. não achei outra forma de colocar aqui, então vou postar o código inteiro, mas comentado, e com o problema em questão também identificado.....

o codigo não tá funcionando. a execução tá meio aleatória....

#include<stdio.h>
int main (void)

{
	int v1[10], i, teste, cont, a, var;       //            DECLARAÇÃO DAS VARIÁVEIS
	
	cont = 0;
	i = 0;
	
	printf("DIGITE O VETOR:\n");	
	for(i=0; i<10;i++)                        //           PREENCHIMENTO DO VETOR COM LIMITE DE 10 POSIÇÕES....
	{
		scanf("%d", &var);
		teste = 0;
		if(i == 0)
		{
		//	i = i + 1;	                       //ADICIONEI UMA RESTRIÇÃO PRO PRIMEIRO PREENCHIMENTO NÃO ENTRAR NA CONDIÇÃO PRINCIPAL;
			v1[i] = var;
		}
		else
		{
			do    							//	ESTE 'DO' FOI A MANEIRA QUE ENCONTREI DE FAZER O PROGRAMA SAIR DO LOOP CASO ENCONTRE UM REPETIDO
			{
				for(a=0; a<i;)
				{
					if(var == v1[a])
					{
						printf("numero repetido não pode!\n");
						teste = 1;
					}
				else
				{
					a++;
				}
				v1[i] = var;
				}
			}while(teste != 1);  
		}
	}
	printf("o vetor sem repeticoes é ");
	for(i=0; i<10; i++)
	printf("%d, ", v1[9-i]);
}

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
#include <stdio.h>
#include <locale.h>
#define DIM 10

//definição do tipo bool para simular variáveis booleanas.
typedef enum{
	false, true
}bool;

//protótipo da função que irá verificar se o número gerado já está armazenado no vetor.
bool repetido(int*, int, int);

int main(int argc, char* argv[]){
	int vetor[DIM];
	int temp;
	int i;

	setlocale(LC_ALL, "portuguese");

	//armazena o primeiro valor no vetor.
	printf("Digite um número: ");
	scanf("%d", &vetor[0]);

	while(getchar() != '\n');

	for(i = 1; i < DIM; i++){
		//looping que irá gerar um número enquanto o número gerado for repetido.
		do{
			printf("Digite um número: ");

			scanf("%d", &temp);

			while(getchar() != '\n');
		}while(repetido(vetor, DIM, temp));
		
		//armazena o valor não repetido no vetor.
		vetor[i] = temp;

		printf("Número armazenado com sucesso!\n");
	}

	return 0;
}


bool repetido(int *vetor, int tam, int temp){
	bool resp = false;
	int i;

	for(i = 0; i < tam; i++){
		if(vetor[i] == temp){
			resp = true;

			break;
		}
	}

	return resp;
}

Boa tarde, Ramon.

Estudei seu algoritmo e encontrei uma solução. Coloquei alguns comentários nos pontos que considerei mais importantes.

Não esqueça de editar seu tópico e colocar [resolvido] se o problema foi resolvido.

Segue o código:

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...