- Home
- Programação & Desenvolvimento
- C, C++
- Comparação de Vetores em C
- Home
- Programação & Desenvolvimento
- C, C++
- Comparação de Vetores em C
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