Como comparar todos os elementos de um vetor em c

Como comparar todos os elementos de um vetor em c

Em C você não pode comparar dois vetores apenas com seus nomes (desconsiderando uma biblioteca que tenha uma função que faça isso). Você não precisa chamar a main();. Ela será retornada sempre que a função termina.

Como comparar dados em C?

Na linguagem C, existem duas funções que permitem comparar strings. Ambas as funções fazem parte da biblioteca . strcmp() : Essa função compara duas strings e retorna a diferença no número de caracteres.

Como comparar elementos de um vetor em Java?

Com certeza tem: public static void main(String[] args) { Scanner scan = new Scanner(System.in); int[] valores = new int[5]; // vetor de 5 posições int maior = 0; int menor = 0; int soma; double media; for (int i = 0; i < 5; i++) { System. out.

Como faço para digitar valores dentro do 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.

Será que o vetor tem tamanhos diferentes?

Porém, em casos em que os vetores tenham tamanhos distintos, a resposta dada vai ser a comparação só da parte inicial do vetor maior, com a mesma quantidade de elementos do vetor menor. Por isso que lá no começo eu disse que essa comparação não faz sentido sempre.

Como armazenar os valores em um vetor auxiliar?

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.

Como faço para criar 2 vetores?

Tô iniciando C e já me dei de cara com uma braba. O programa consiste em criar 2 vetores, compará-los e mostrar na tela os valores dos vetores que estão REPETIDOS. Eu fiz toda a lógica mas de forma alguma funciona.

  • 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; iFiz 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

É possível fazer a comparação elemento a elemento entre dois vetores (na verdade entre duas sequências quaisquer especificadas por iterators) através do algoritmo "mismatch".

A "função de comparação" é um predicado booleano genérico "bool f(x,y)" que pode ser especificada de várias maneiras, por exemplo uma função, ou um function object, ou uma expressão lambda. Quando não especificada, a função de comparação utilizada é a "igualdade" (isto é, função que compara se dois elementos são iguais).

O algoritmo mismatch retorna um objeto std::pair contendo os iterators (referentes às duas sequências) onde a "comparação" falhou, ou o iterator ".end()" se a "comparação" foi bem sucedida em todos os elementos.

Referência: http://en.cppreference.com/w/cpp/algorithm/mismatch

No exemplo abaixo, o programa vai exibir "(1) all less" quando o algoritmo mismatch for aplicado aos vetores v1 = { 1, 2, 3 } e v2 = { 2, 3, 4 }, e vai exibir "(2) not all less" quando o algoritmo mismatch for aplicado aos vetores v3 = { 1, 2, 3 } e v4 = { 1, 3, 4 }.

#include // para mismatch #include #include using namespace std; int main() { vector v1 { 1, 2, 3 }; vector v2 { 2, 3, 4 }; vector v3 { 1, 2, 3 }; vector v4 { 1, 3, 4 }; auto result1 = mismatch(v1.begin(), v1.end(), v2.begin(), less()); if (result1.first == v1.end()) cout << "(1) all less\n"; else cout << "(1) not all less\n"; auto result2 = mismatch(v3.begin(), v3.end(), v4.begin(), less()); if (result2.first == v3.end()) cout << "(2) all less\n"; else cout << "(2) not all less\n"; }