Autor Tópico: testar se um valor pertence a um conjunto em linguagem C.  (Lida 5341 vezes)

Offline wdr

  • Usuário Ubuntu
  • *
  • Mensagens: 47
    • Ver perfil
testar se um valor pertence a um conjunto em linguagem C.
« Online: 31 de Julho de 2008, 08:34 »
Pessoal,


Em C, se eu tenho um conjunto de números inteiros ( cerca de vinte ) , existe uma maneira elegante de testar se um determinado valor pertence a esse conjunto?

é claro que eu poderia escrever algo como SE( OU OU OU OU OU ... ) , mas ficaria longo e não elegante. Em Delphi ou Pascal parece que existe um operador chamado IN. ficaria algo do tipo: IF x IN [2, 5, 7, 13] THEN ...

qual seria o melhor modo de fazer isso em C?

Obs. os inteiros que uso são pequenos e caberiam no tipo char (1 byte).

Obrigado


Offline tfmoraes

  • Usuário Ubuntu
  • *
  • Mensagens: 441
    • Ver perfil
Re: testar se um valor pertence a um conjunto em linguagem C.
« Resposta #1 Online: 31 de Julho de 2008, 21:46 »
Cara, crie uma função que faça isto.

Offline kunigas

  • Usuário Ubuntu
  • *
  • Mensagens: 77
  • DK
    • Ver perfil
    • Página pessoal, Guilherme Kunigami
Re: testar se um valor pertence a um conjunto em linguagem C.
« Resposta #2 Online: 02 de Agosto de 2008, 00:11 »
Que eu saiba em C não tem disso não. O jeito seria fazer um 'FOR' mesmo, que provavelmente é o que o 'IN' faz.

Entretanto, como você disse que os valores são pequenos, você pode pré-computar os valores do seu conjunto da seguinte maneira:

Código: [Selecionar]
for (i = MIN; i<=MAX; i++)
    valor[ i ] = 0;
for (i = 0; i<n; i++)
    valor[ conjunto[i] ] = 1;

Onde MIN e MAX são o menor e maior valor respectivamente que você pode ter; n é o número de elementos do seu conjunto. Para saber se pertence ao conjunto,

Código: [Selecionar]
if ( valor[ x ] == 1 )
    printf("Pertence\n");
else
   printf("Não pertence\n");


Offline sprit

  • Usuário Ubuntu
  • *
  • Mensagens: 65
    • Ver perfil
Re: testar se um valor pertence a um conjunto em linguagem C.
« Resposta #3 Online: 04 de Agosto de 2008, 00:21 »
Bom talvez vc queira armazenas 20 inteiros em uma variavel de forma simples, acredito que seja isso:

Código: [Selecionar]
#include<stdio.h>
#include<stdlib.h>

int main(void){
    // declarar uma variavel com 20 possicoes.
    // nao esqueca que uma matriz comeca do 0.
    int var[20];
   
    // faz um loop de 0 ate 19
    for(int i=0; i<20; i++){
            // armazena 0 na var posicao 0(var[0]), armazena 1...
            var[i]= i;
            printf("var[%d]= %d\n", i, var[i]);
    }
    system("pause");
    return 0;
}

Espero que ajude!!!
Se quiser se aprofundar mais, procure sobre matriz, vetores, variaveis....

Offline sprit

  • Usuário Ubuntu
  • *
  • Mensagens: 65
    • Ver perfil
Re: testar se um valor pertence a um conjunto em linguagem C.
« Resposta #4 Online: 04 de Agosto de 2008, 00:24 »
Citar
os inteiros que uso são pequenos e caberiam no tipo char (1 byte).
Bom se vc quer diminuir o tamanho use tipo:
short int variavel; // que vai de -128 ate 127 em numeros inteiros