Ir ao conteúdo
  • Cadastre-se

C Como aplicar uma mesma condição/operação para cada elemento de um vetor


Lhikki

Posts recomendados

Oi, pessoal!

 

Eu preciso realizar uma mesma operação para todos os elementos de um dado vetor. Como fazer isso?
 

Mais especificamente, eu preciso verificar se um elemento qualquer "x" tem, nas suas duas posições adjacentes maiores que x, um número que seja igual a x+1 ou x+2. E, no caso, eu preciso verificar se essa mesma condição é válida para os outros elementos em posições maiores que vetor[x] (ou seja, preciso aplicar isso para "x" e para os n valores nas posições maiores que a de "x").

 

Para facilitar o entendimento, vou exemplificar. Suponha que temos a seguinte entrada:

1 2 4 5 6 8 9 12

Para esse caso, suponha que x=4 (isso será informado pelo usuário).

O meu código precisa fazer algo mais ou menos assim:

 

5 = 4+1 ou 4+2? Sim.

6 = 4+1 ou 4+2? Sim.

6 = 5+1 ou 5+2? Sim.

8 = 5+1 ou 5+2? Não.

8 = 6+1 ou 6+2? Sim.

9 = 6+1 ou 6+2? Não.

9 = 8+1 ou 8+2? Sim.

12 = 8+1 ou 8+2? Não.

12 = 9+1 ou 9+2? Não.

 

E aí o programa para depois de ter feito todas essas verificações para os elementos iguais ou maiores que x. E aí o programa deveria mostrar na tela todos os casos "sim".

 

Consegui fazer isso para x, mas eu não tenho ideia de como fazer para os outros casos que preciso.

Eu gostaria de ter pelo menos alguma noção do que eu posso tentar... Ou de que caminho seguir.

 

Pensei em fazer o que eu quero em um vetor e passar os elementos selecionados para um outro vetor, e aí mostrar na tela. Mas eu não sei como fazer isso... Acho que primeiro eu precisaria manipular os elementos maiores que "x", mas como? Como eu posso aplicar essa lógica que eu preciso aplicar para outros elementos maiores que "x"?

 

Por enquanto, tentei isso em C (funciona para "x", mas, como eu já disse, não tenho noção de como fazer isso para os outros valores que preciso):

 

#include <stdio.h>

#include <stdbool.h>


int verifica_proximas_posicoes(int i, int x) {


         if((i == x + 1) || (i == x + 2)){

                return true;

         }

         return false; 

 }


int main()

{

        int i, numero, vetor[8], vetor1[8];

        printf("Escreva todos os elementos do vetor:\n");

        for(i=0; i<8; i++){

                scanf("%d", &vetor);

        }

       

        printf("Escreva o número que deseja:\n");

        scanf("%d", &numero);

       

        for(i=numero; i<=8; i++){

               if(verifica_proximas_posicoes(i+1, numero)){

               vetor1 = vetor;

               printf("%d ", vetor1);

       }

 }

 

  return 0; 
 }
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

#include <stdio.h>

int main(){
	int num,vet[7],i=0;
	printf("Caro Usuario digite x:\n");
    scanf("%d", &num);
    
    printf("Caro Usuario digite os elementos do vetor:\n");
    for ( i=0; i<7; i++)
    scanf ("%d",&vet[i]);
    
    for ( i=0; i<7; i++){
    printf ("%d",vet[i]);
    if (vet[i]+1 == num || vet[i]+2 == num )
	printf(" Sim\n");
	else
	printf(" Nao\n");
		}
	
 }

 

Link para o comentário
Compartilhar em outros sites

Primeiramente, obrigado pela ajuda.

 

E segundo, não é exatamente isso que eu gostaria. Acredito que me expressei errado e que isso possa ter prejudicado o entendimento da minha questão. Eu quero mostrar na tela todos os "casos sim", considerando TODOS os elementos do vetor, a partir de x.

 

Vou retomar o exemplo que dei:

 

Entrada:

1 2 4 5 6 8 9 12

(x=4)

 

5 = 4+1 ou 4+2? Sim.

6 = 4+1 ou 4+2? Sim.

6 = 5+1 ou 5+2? Sim.

8 = 5+1 ou 5+2? Não.

8 = 6+1 ou 6+2? Sim.

9 = 6+1 ou 6+2? Não.

9 = 8+1 ou 8+2? Sim.

12 = 8+1 ou 8+2? Não.

12 = 9+1 ou 9+2? Não.

 

Saída: 4, 5, 6, 8, 9

 

Quando eu disse que gostaria de mostrar todos os casos sim, eu quis dizer que gostaria de mostrar todos os números que dariam "caso sim".

 

O que eu quero, é verificar se há algum elemento igual a x+1 ou x+2. Depois, eu quero verificar, considerando o próximo elemento do vetor "x1", se tem algum elemento igual a "x1 +1 ou x1 +2". Depois, eu quero verificar , considerando algum próximo elemento "x2", se há algum elemento igual a "x2+1" ou "x2+2". E se existir de fato os elementos sendo verificados, estes seriam mostrados na tela. E assim por diante, até o índice final do vetor.

 

Peço desculpas se não me expressei melhor antes. Por favor, me notifiquem se eu precisar esclarecer mais. Talvez eu tenha escrito de uma forma meio confusa.

 

 

Eu consegui fazer o que eu quero para um elemento x qualquer (ou seja, consegui fazer um programa que verifica se tem algum número igual a x+1 ou x+2 e mostra eles na tela. Foi o programa que postei na pergunta desse tópico), mas eu quero fazer para os elementos seguintes do vetor também. A minha dificuldade é entender como eu posso fazer isso.

 

Obrigado!

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

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

×
×
  • Criar novo...