Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marlos Leles

Problema em algoritmo com vetores.

Recommended Posts

A questão é:

Faça um programa que leia um vetor A de dez posições contendo números inteiros. Determine e mostre, a seguir, quais elementos de A estão repetidos e quantas vezes cada um se repete.

 

O que eu fiz (não está certo):

 

#include <stdio.h>
#include <stdlib.h>
int main(){
int A[10],z=0;
printf("Informe 10 valores: ");
for(int i=0;i<=9;i++){
scanf("%d",&A);
}
for(int i=0;i<=9;i++){
for(int j=0;j<=9;j++){
if(i != j){
if(A == A[j]){
z++;
}
}
}
if(z > 1){
printf("O valor %d se repete %d vezes.\n",A,z);
z = 0;
}
}
system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Determine e mostre, a seguir, quais elementos de A estão repetidos e quantas vezes cada um se repete.

 

Já pensou em como vc vai evitar contar cada repetição do mesmo elemento por causa do laço aninhado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o índice vai impedir que vc conte novamente um elemento que já foi visto?

Ex: A = [5,5,5,5,5,5,5,5,5,5]

Vc vai imprimir 10 vezes que o elemento 5 se repete 9 vezes. Provavelmente não é esse o comportamento esperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E mesmo eu dando a dica de usar algo p/ ver quais elementos já foram processados, nada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou com o mesmo problema, fiz um pouco diferente e nao consigo achar o erro....

 

 

#include <stdio.h>
#define N 20
int main ()
{
int a[N], cont, i, j, aux;
printf("Entre com os elementos do vetor: ");
for (i=0; i<N; i++)
scanf("%d", &a);
for (i=0; i<=N; i++)
for (j=i; j<=N; j++)
aux = a[0];
cont = 0;
for (i=0; i<=N; i++)
if (a != aux)
{
if (cont > 1)
printf("\n%d - %d", aux, cont);
aux = a;
cont = 0;
}
else
cont++;
{
if (cont > 1)
printf("\n%d - %d", aux, cont++);
return 0;
}
}
se der pra dar uma ajuda ;x

Compartilhar este post


Link para o post
Compartilhar em outros sites
for (i=0; i<=N; i++)        for (j=i; j<=N; j++)    aux = a[0];    cont = 0;    for (i=0; i<=N; i++)        if (a[i] != aux)        {            if (cont > 1)                printf("\n%d - %d", aux, cont);            aux = a[i];            cont = 0;        }        else            cont++;

 

Se vcs quiserem usar varias linhas aninhadas nos loops, usem chaves.

 

O aux não serve p/ casos como [1,2,1,1,3] (vc perde o histórico na 2a iteração). Usem um array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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