Tenho dois vetores, exemplo:
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] 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] 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; } |