Ir ao conteúdo
  • Cadastre-se

comparar valores dentro de um único vetor


ze_lelo

Posts recomendados

Olá pessoal, tudo bem?

 

Preciso fazer um programa em C no qual é necessário comparar valores dentro de um único vetor. Nesse programa eu peço para o usuário digitar os valores a serem armazenados dentro do vetor, porém, se o valor digitado for repetido, ou seja, já foi digitado anteriormente o programa deve pedir para o usuário digitar outro valor e não aceitar o valor repetido, além disso os valores devem ser armazenados na ordem em que são digitados. Cada valor digitado deve ser pesquisado no próprio vetor para verificar se esse número já existe entre os digitados. Eu consegui fazer a comparação entre dois números vizinhos, mas não consegui fazer a comparação geral.

Vou colocar o programa que eu fiz logo aqui abaixo e se alguém puder me ajudar eu vou ficar imensamente agradecido! Obrigado!

 

 

 

#include <stdio.h>
#include <stdlib.h>
#define max 500
 
int main(int argc, char *argv[])
{
  //Este programa compara os valores de um vetor, se forem iguais ele pede para digitar outro numero.//
  
  int i;
  int j;
  int k;
  int V[max];
  
  printf(">>UTILIZE APENAS NUMEROS INTEIROS!<< \n \n");
  
  printf("Digite o tamanho do vetor: "); scanf("%d", &j);
      while ((j < 1) || (j > 500)) {printf("Digite um numero entre 1 e 500: "); scanf("%d", &j);}
  
  for (i = 1; i <= j; i = i + 1) {
      printf("Digite um numero inteiro: "); scanf("%d", &V);
      while (V == V[i - 1]) {
      printf("Este numero é repetido! Digite um numero diferente desse: "); scanf("%d", &V);}
      }
  
  for (i = 1; i <= j; i = i + 1) {
      printf("Elemento %d = %d \n", i, V);}
  
  system("PAUSE");
  return 0;
}
 
Link para o comentário
Compartilhar em outros sites

Tente armazenar os valores, inicialmente, em um vetor auxiliar. A cada vez que você ler um valor, percorra todo esse vetor para ver quantas vezes esse número lido aparece nele. Obviamente, aparecerá pelo menos uma vez. Se for apenas uma vez, então ele não está repetido e, com isso, você armazena no vetor definitivo. Caso contrário, mostra pro usuário uma mensagem e diz que não vai armazenar.

 

O programa em C, apenas para esta parte, ficaria mais ou menos assim (não declarei as variáveis pois peguei um trecho de um algoritmo que eu fiz e que tinha isso):

 

printf("Entre com a quantidade de elementos do primeiro conjunto: \n");

scanf("%f",&seq1[0]);
 
n1=seq1[0];
 
printf("\n");
printf("- \n\n");
 
for(i1=1;i1<n1+1;i1++)
{
printf("---- \n");
printf("Elemento %d:  ",i1);
scanf("%f",&seq1f[i1]);
 
CONT1=0;
 
for(j1=1;j1<n1+1;j1++)
{
   if(seq1f[i1]==seq1f[j1])
     {
 CONT1=CONT1+1;
     }
   }
 
if(CONT1>1)
{
printf("O elemento inserido ja consta na lista e, portanto, nao sera lido. \n");
}
 
else
{
   seq1[i1]=seq1f[i1];
}
 
 
}
system("pause");
system("cls");
 
}
 
 
(nesse algoritmo, o valor inicial do vetor tinha que conter o seu número de elementos, mas essa parte não importa)
Link para o comentário
Compartilhar em outros sites

Está quase resolvido!

 

O programa que eu fiz funcionou, obrigado pela dica, Stewart! Porém, ele pega lixo da memória e falta resolver isso. Se eu digito um número repetido o programa pede para fornecer um número diferente, porém ele não armazena esse número no vetor e depois ele mostra um outro número, provavelmente lixo de memória. Se alguém puder dar uma dica, agradeço!

O programa que fiz é esse aqui:

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define max 100
 
int main(int argc, char *argv[])
{
  //Este programa compara os valores de um vetor, se forem iguais ele pede para digitar outro numero.//
  
  int i;
  int j;
  int k;
  int contador;
  int V1[max];
  int V[max];
    
  printf(">>UTILIZE APENAS NUMEROS INTEIROS!<< \n \n");
  
  printf("Digite o tamanho do vetor: "); scanf("%d", &k);
      while ((k < 1) || (k > max)) {printf("Digite um numero entre 1 e 100: "); scanf("%d", &k);}
  
  printf(" \n");
  
  for (i = 1; i <= k; i = i + 1) {
      printf("Digite um numero inteiro: "); scanf("%d", &V1);
      
      contador = 0;
            
      for (j = 1; j <= k; j = j + 1) { 
          if (V1 == V1[j]) {contador = contador + 1;}}
          
      if (contador > 1) {
      printf("Este numero é repetido! Digite um numero diferente desse: "); scanf("%d", &V1);}
      
      else {V = V1;}
      }
  
  printf(" \n");
  
  for (i = 1; i <= k; i = i + 1) {
      printf("Elemento %d = %d \n", i, V);}
      
  system("PAUSE");
  return 0;
}
 
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...