Como comparar elementos de um vetor em c

  • Todas as Novidades
  • Regras
  • Equipe
  • Líderes
  • Todas as Novidades
  • Regras
  • Equipe
  • Líderes

Tenho dois vetores, exemplo:

A = [ABCDEFGHIJKLMNOPQ]
B = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]

Preciso compara elemento por elemento do vetor A de forma que quando ache o mesmo elemento no vetor B ele ande 9 posições para trás. Exemplo: Pego elemento ‘L’ do vetor A e encontro no vetor B, quando encontrar ele andará 9 casas para trás e passará a valer então ‘C’ pois é o valor encontrado 9 posições para trás no vetor B.

Os vetores são do tipo CHAR.

vc sabe usar um laço for? se sim, qual a dificuldade?

o que acontece se vc procurar A ou B ?

1 curtida

for (char i=0; i<a.length; i++) { for (char j=0; j<b.length; j++) { if (a.equals(b)); } }

Fiz dessa forma, consegui listar os elementos iguais dos dois vetores. Agora preciso que quando encontre o elemento igual no Vetor B ele ande 9 posiçoes para trás, e me mostre a letra encontrada 9 posições atrás.

if a.equals b?

cara iso não faz o menor sentido.

vc tem a[i] e b[j]

Tem alguma ideia como eu faria para comparar os elementos de um vetor e exibir os iguaias para o usuário?

amigo é o ‘enunciado’ do problema que eu não entendi.

por exemplo se vc encontrar algo no começo do array como vc andaria 9 casas pra traz?

me da um exemplo melhor do que vc quer. de repente com arrays menores. vc colocou 2 arrays com praticamente os mesmos dados na mesma ordem então eu não consigo ver como isso seria dificil.

isso é tipo uma cifra/codificação?

1 curtida

Sim é uma codificação. Como no exemplo acima:

O vetor A seria um código interceptado do inimigo. O vetor B seria o alfabeto utilizado para codificar que também foi interceptado do inimigo.

Através de um exemplo mais simples:

Então temos o vetor A contendo L e o programa tem q buscar a mesma letra no L no Vetor B, assim que achar a letra L no vetor B ele apresentaria para o usuário a letra que está 9 casas para trás do alfabeto do vetor B:

A = [L]
B = [_A_BCDEFGHL]

Ou seja, se ele está procurando L no vetor B e encontrou então ele andaria para trás nos elementos: LHGFEDCBA assim ele apresentaria a letra A para o usuário, conforme ordem dos vetores do exemplo.

1 curtida

for(int i =0; i < tamanho_A; i++){ for(int j =0; j < tamanho_B; j++){ if ( A[i] == B[j]) { /* ACHEI A[i] na posicao j */ aqui ó: B[j -9]; } } }

agora me explica se for assim

A = [a,b ] B = [a,b,c,d,e,f,g,h,i,j]

a esta em B[0]

subtrai 9 e da negativo

comofas?

2 curtidas

Isso é cifra de cesar… Logo, se o numero chegar ao negativo, ele vai para a ultima letra e continua voltando até o ponto final.

exemplo:

A = [ABCDEFGHIJKLMNOPQ]
B = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]

Ai se for B[0], voltando 9 casas daria ‘R’.

Talvez não seja a melhor solução, mas voce pode pegar uma condição

int k = 9; for(int i =0; i < tamanho_A; i++){ for(int j =0; j < tamanho_B; j++){ if ( A[i] == B[j]) { /* ACHEI A[i] na posicao j */ if (j < 9){ j = 25; /* 25 é o total de letras do alfabeto -1 (por começar do 0 */ k = 9 - j; } aqui ó: B[j -k]; } } }

2 curtidas

Humm agora faz sentido

Nesse exemplo eu nao alteraria k

Deixa k sendo 9 pra sempre

Se o índice for negativo ai faz a matematica no indice de B

K = 9 … Indice = j - K if ( Indice negativo ) Indice += numero_letras;

B[ Indice ]

1 curtida

É isso mesmo Sérgio. Poderia ajudar em como eu faria se no vetor A tivesse alguns caracteres especias.

Ex: A = [AB#CD%E&]

No caso esses valores nao obedeceriam a regra aplicada aos caracteres Alfabéticos, pois eles ja teriam um valor pré-definido.

Ex: # = V % = U

& = B

em vez de fazer o mesmo processo que os demais , esses caracteres apenas iriam apresentar o valor pré-definido para o usuário.

Pensei em fazer usando switch case mas não consegui aplicar a sua lógica.

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

Fiz meu código do seguinte modo, como colocado abaixo. Porém, se eu coloco 2 número repetidos ele diz que tem somente 1 numero repetido, se eu coloco 4 números repetidos, ele diz que tem 6 números repetidos.Já não sei como fazer isso, queria somente comparar valores dentro de um único vetor.

main(){ int numeros[5],contador,numerosIguais,contador2; numerosIguais=0; for(contador=0; contador<5; contador++){ printf("Digite aqui o numero n%c %i\n",248,contador+1); scanf("%i",&numeros[contador]); } for(contador=0; contador<5; contador++) { for(contador2=contador+1; contador2<5; contador2++){ if(numeros[contador]==numeros[contador2]){ numerosIguais=numerosIguais+1; } } } printf("A quantidade de numeros iguais e %i\n",numerosIguais); return 0; }