Ir ao conteúdo

Posts recomendados

Postado

criar um programa com funcoes para realizar operacoes sobre conjunto que contem letras minusculas do alfabeto.Os conjuntos serao representados por vectores.Essas funcoes devem realizar as seguintes operacoes: pertence,esta contido,adicao,subtracao,uniao,intersecao,diferenca,diferenca simetrica e disjuncao.A entrada consiste num conjunto finito de operacoes a serem realizadas sobre dois conjuntos,nomeados o conjunto A e o conjunto B ,para cada entrada de dados temos um codigo de operacao.O programa termina a execucao quando o utilizador entrar com o codigo -1.Os conjuntos devem estar vazios e cada linha de entrada descreve uma operacao a ser realizada sobre um ou sobre os dois conjuntos. as operacoes :

as operacoes sao:

1C:mostra o conteudo do vector C

2C:ordena os elementos de C em ordem decrescente  

2C:ordena os elementos de C em ordem crescente 

4C n:x1,x2,...,x3:carrega no vector C com n elementos

5C x:verifica se o elemento x pertence ao conjunto C

6 C1 C2;verifica se o conjunto C1 esta contido no C2

7 C x:inclui o elemento x no conjunto C

8 C x:remove o elemento x do conjunto C

9 C1 C2:calcula a uniao do conjunto C1 pelo conjunto C2

10 C1 C2:calcula a intersecao do conjunto C1 pelo conjunto C2

11 C1 C2:calcula a diferenca do conjunto C1 para o conjunto C2

12 C1 C2:calcula a diferenca simetrica entre os conjuntos C1 E C2

13 C1 C2 :verifica se os conjuntos sao disjuntos 

-1  : Encerra a execucao do programa 

 

onde 

C e um dos conjuntos A ou B

C1 e C2 sao distintos A e B em qualquer ordem

x e um elemento

 

#include<stdio.h>
#include<stdlib.h>
#define MAX 6
int pertence(char  conj[],int nElem,char  letra);
int contido(char conj1[],char conj2[],int nElem1,int nElem2);
int disjuncao(char conj1[],char conj2[],int nElem1,int nElem2);
int adicao(int conj[],int nElem,int numero);
int subtracao(int conj[],int nElem,int numero);
int uniao(int destRes[],int conj1[],int conj2[],int nElem1,int nElem2);
int intersecao(int destRes[],int conj1[],int conj2[],int nElem1,int nElem2);
int diferenca(int destRes[],int conj1[],int conj2[],int nElem1,int nElem2);
int difSimetrica(char destRes[],char conj1[],char conj2[],int tam1,int nElem2);
int lerNumero();
int lerNum();
int pertence(char conj[],int nElem,char letra)
{
   int i;
   for(i=0;i<nElem;i++)
   {
         conj;
   }
   if(letra==conj)
   return 1;
   else
   return 0;    
}
int contido(char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(j=0;j<nElem2;j++)
    {
        conj2[j];
    }
    if(conj1==conj2[j])
    {
        return 1;
    }
    else
        return 0;
}
int disjuncao(char conj1[],char conj2[],int nElem1,int nElem2)
{
    
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(j=0;j<nElem2;j++)
    {
        conj2[j];
    }
    if(conj1==conj2[j])
    {
        return 1;
    }
    else
        return 0;
}
int adicao(char conj[],int nElem,char letra)
{
    int i;
    for(i=0;i<nElem;i++)
    {
         conj;
    }
    if(letra==conj)
    {
        conj=conj[i+0];
    }
    else
    {
        conj=conj[i+letra];
    }
    return conj;
}
int subtracao(char conj[],int nElem,char letra)
{
    int i;
    for(i=0;i<nElem;i++)
    {
         conj;
    }
    if(letra==conj)
    {
        conj=conj[i+0];
    }
    else
    {
        conj=conj[i-letra];
    }
    return conj;
}
int uniao(char destRes[],char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(i=0;i<nElem1;i++)
    {
        conj2;    
    }
}
int intersecao(char destRes[],char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(i=0;i<nElem1;i++)
    {
        conj2;    
    }
}
int diferenca(char destRes[],char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(i=0;i<nElem1;i++)
    {
        conj2;    
    }
}
int difSimetrica(char destRes[],char conj1[],char conj2[],int tam1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(i=0;i<nElem1;i++)
    {
        conj2;    
    }
}
int lerNumero()
{
    int numero;
    printf("\nEntre com um numero positivo");
    scanf("%d",&numero);
    return numero;
}
int lerNum()
{
    int n,m,o;
    int a(int x,int y ,int z),b;
    printf("entre com os dados\n");
    scanf("%d",&n);
    if(n==-1)
    {
        printf("erro\n");
    }
    else
    {
        printf("entre com os dados\n");
        scanf("%d",&m);
        printf("entre com os dados\n");
        scanf("%d",&o);
    }

    return b;
}
int main()
{
    int n,m;
    n=lerNumero();
    while(n>0)
    {
      m=lerNum();
      printf("o resultado%d\n",m);    
    }    
}

  • Curtir 1
Postado
int pertence(char conj[],int nElem,char letra)
{
   int i;
   for(i=0;i<nElem;i++)
   {
      if(letra==conj[i]) return 1;
   }
   return 0;    
}

//se conj1 esta contido em conj2
int contido(char conj1[], char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        if (!pertence (conj2, conj1[i], nElem2)) return 0;
    }
    return 1;
}

 

  • Amei 1
Postado
5 horas atrás, Josafat domingos disse:

@AnsiC nao esta tudo resolvido ajude me por favor e um trabalho da escola

#include<stdio.h>
#include<stdlib.h>
#define MAX 6
int pertence(char  conj[],int nElem,char  letra);
int contido(char conj1[],char conj2[],int nElem1,int nElem2);
int disjuncao(char conj1[],char conj2[],int nElem1,int nElem2);
int adicao(int conj[],int nElem,int numero);
int subtracao(int conj[],int nElem,int numero);
int uniao(int destRes[],int conj1[],int conj2[],int nElem1,int nElem2);
int intersecao(int destRes[],int conj1[],int conj2[],int nElem1,int nElem2);
int diferenca(int destRes[],int conj1[],int conj2[],int nElem1,int nElem2);
int difSimetrica(char destRes[],char conj1[],char conj2[],int tam1,int nElem2);
int lerNumero();
int lerNum();
int pertence(char conj[],int nElem,char letra)
{
   int i;
   for(i=0;i<nElem;i++)
   {
         conj;
   }
   if(letra==conj)
   return 1;
   else
   return 0;    
}
int contido(char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(j=0;j<nElem2;j++)
    {
        conj2[j];
    }
    if(conj1==conj2[j])
    {
        return 1;
    }
    else
        return 0;
}
int disjuncao(char conj1[],char conj2[],int nElem1,int nElem2)
{
    
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(j=0;j<nElem2;j++)
    {
        conj2[j];
    }
    if(conj1==conj2[j])
    {
        return 1;
    }
    else
        return 0;
}
int adicao(char conj[],int nElem,char letra)
{
    int i;
    for(i=0;i<nElem;i++)
    {
         conj;
    }
    if(letra==conj)
    {
        conj=conj[i+0];
    }
    else
    {
        conj=conj[i+letra];
    }
    return conj;
}
int subtracao(char conj[],int nElem,char letra)
{
    int i;
    for(i=0;i<nElem;i++)
    {
         conj;
    }
    if(letra==conj)
    {
        conj=conj[i+0];
    }
    else
    {
        conj=conj[i-letra];
    }
    return conj;
}
int uniao(char destRes[],char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(i=0;i<nElem1;i++)
    {
        conj2;    
    }
}
int intersecao(char destRes[],char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(i=0;i<nElem1;i++)
    {
        conj2;    
    }
}
int diferenca(char destRes[],char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(i=0;i<nElem1;i++)
    {
        conj2;    
    }
}
int difSimetrica(char destRes[],char conj1[],char conj2[],int tam1,int nElem2)
{
    int i,j;
    for(i=0;i<nElem1;i++)
    {
        conj1;
    }
    for(i=0;i<nElem1;i++)
    {
        conj2;    
    }
}
int lerNumero()
{
    int numero;
    printf("\nEntre com um numero positivo");
    scanf("%d",&numero);
    return numero;
}
int lerNum()
{
    int n,m,o;
    int a(int x,int y ,int z),b;
    printf("entre com os dados\n");
    scanf("%d",&n);
    if(n==-1)
    {
        printf("erro\n");
    }
    else
    {
        printf("entre com os dados\n");
        scanf("%d",&m);
        printf("entre com os dados\n");
        scanf("%d",&o);
    }

    return b;
}
int main()
{
    int n,m;
    n=lerNumero();
    while(n>0)
    {
      m=lerNum();
      printf("o resultado%d\n",m);    
    }    
}

 

  • Curtir 1
Postado

@Josafat domingos Bom dia.

 

Como disse antes, acho que entende o problema.

Temos que implementar/averiguar cada linha de comando e sua ação associada. Testarei uma a uma!

 

São 14 comandos, funções e ações no menu, e regra é muito simples de se fazer depois que se entende a lógica. Observe o exemplo para o primeiro caso: 1 CX

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


/* Respectivamente C1, C2 */
int *conjunto1, tamanho1;
int *conjunto2, tamanho2;


/** Exibir o conjunto selecionado por n. \return nada.
 ** \param [in] n -- Pode ser 1, ou 2 dependendo da escolha do conjunto.
 */
void exibir_c(int n)
{   int* C, t; /*< variaveis auxiliares */

    /* Se n é igual a 1 entao fazer C igual conjunto1 e t igual a tamanho1 */
    if (1 == n){
        C= conjunto1, t= tamanho1;
    }

    /* Se n é igual a 1 entao fazer C igual conjunto2 e t igual a tamanho2 */
    else if (2 == n){
        C= conjunto2, t= tamanho2;
    }

    /* Senão então finalizar */
    else return;

    /* Imprimir [ */
    printf("[");

    /* Para x menor que t, faça x até t */
    for (int x= 0; x < t; ++x){

        /* Imprimir o conteúde de C no índice x */
        printf("%d ", C[x]);
    }

    /* Imprimir ] e nova linha */
    printf("\b]\n");

    /* Finalizar */
    return;
}

/** Fazer chamada para os comandos dos sistema. \return nada.
 ** \param [in] cmd -- linha de comando do sistema.
 */
void executar(const char *cmd)
{
    /* Se igual 1 C1 faça */
    if (0 == strcmp("1 C1", cmd)) exibir_c(1); else

    /* Senão Se igual a 1 C2 faça */
    if (0 == strcmp("1 C2", cmd)) exibir_c(2); else

    /*Senão então finalizar exibir erro. */
    printf("Erro!");

    /* Finalizar Fn. */
    return;
}


/** Principal função de um algortimo C. \return 'EXIT_SUCESS'
 ** \param nenhum. 
 */
int main(void)
{   /* Vetores de Teste */
    conjunto1= (int [10]){1,2,3,4,5,6,7,8,9,10}, tamanho1= 10;
    conjunto2= (int [10]){10,9,8,7,6,5,4,3,2,1}, tamanho2= 10;

    executar("1 C1"); /*< exibir teste C1 */
    executar("1 C2"); /*< exibir teste C2 */

    char cmd[128];

    printf("Comando$ "); scanf(" %[^\n]",cmd);
    executar(cmd);

    return EXIT_SUCCESS;
}

Estude o código concentradamente perceberá as bases  para outros comandos.

  • Amei 1
Postado
//nElem informa o numero de elementos do conjunto
int adicao(char conj[],int* nElem,char letra)
{
    if (*nElem >= MAX) return 0; //o conjunto não suportar novos elementos
    conj[*nElem] = letra;
    (*nElem)++;
    return 1;
}

int subtracao(char conj[],int *nElem,char letra)
{
    int i, j;
    for(i=0;i<*nElem;i++)
    {
        if (conj[i] == letra) 
        {
            for (j = i; j < *nElem - 1; j++) conj[j] = conj[j+1];             
			(*nElem)--;
            return 1;
        }                     
    }
    return 0;
}

int intersecao(char destRes[],char conj1[],char conj2[],int nElem1,int nElem2)
{
    int i,j, k = 0;
    for(i=0;i<nElem1;i++)
    {
        for (int j=0; j<nElem2; j++) if (conj2[j] == conj1[i])
        {
           	destRest[k] = conj2[j];  			
            k++;
            break;
        }
    }
    return k; //retornar o numero de elementos da interseccao
}

 

  • Amei 1
Postado
1 hora atrás, Josafat domingos disse:

muito obrigado mas esta faltando subprogramas como:diferenca(),difSimetrica(),uniao()  e  disjuncao()

 

Então os faça...

O trabalho é seu não nosso.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!