Ir ao conteúdo

Posts recomendados

Postado

esse programa em c de  união e intersecção de 2 vetores não esta compilando por algum motivo 

segue o Codigo: 

 

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream>
#include<string.h>
#include<math.h>
#include<locale.h>

int main()
{
         setlocale(LC_all,"portuguese");
   
   int v1[10], v2[10], u[20], i[10], x, y;
   
   for(x=0;x<10;x++){
    printf("digite o valor %i do primeiro conjunto: ",x+1);
     scanf("%i",&v1[x]);
     u[x]=v1[x];
   }
   
   for(x=0;x<10;x++){
    printf("digite o valor %i do segundo conjunto: ",x+1);
     scanf("%i",&v2[x]);
     u[x+10]=v2[x];
   }
   
   for(x=0;x<10;x++){i[x]=0;}
   for(x=0;x<10;x++)
    {   
       for(y=10;y<20;y++)
   {
        if(u[x]==u[y]) {i[x]=u[x];} else{}
   }
   
    }
    
    for(x=0;x<20;x++)
  {
    for(y=x+1;y<20;y++)
  {
        if(u[x]==u[y]) {u[y]=0;}     else{}
  }
      printf("\nmostrando a uniao: "); 
       for(x=0;x<20;x++)
       {
        if(u[x]!=0) {printf("\nvalor %i",u[x]);}   else{}
       }
    
    printf("\n\nresultado da interseção: ");
       for(x=0;x<10;x++)
       {
         if(i[x]!=0) {printf("\nvalor %i",i[x]); }   else{}
       }
 getchar();
 printf("\n\n");
 system("pause");
 
 return (0);
  }


        

 

  • Curtir 1
Postado

@pedro16    você colocou LC_ALL em minúsculas ,  e a identação ajuda a detectar erros , e também tem esses else's com as chaves sem nada dentro ,  e seu código compilou Aqui no codeblocks ,. , ,,, 

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream>
#include<string.h>
#include<math.h>
#include<locale.h>
int main()
{
    setlocale(LC_ALL,"portuguese");  // esse comando aqui , se funcionar no seu PC 
                                     // esta bom ,mas nos outros será difícil que funcione
    int v1[10], v2[10], u[20], i[10], x, y;
    for(x=0;x<10;x++)
    {
        printf("digite o valor %i do primeiro conjunto: ",x+1);
        scanf("%i",&v1[x]);
        u[x]=v1[x];
    }
    for(x=0;x<10;x++)
    {
        printf("digite o valor %i do segundo conjunto: ",x+1);
        scanf("%i",&v2[x]);
        u[x+10]=v2[x];
    }
    for(x=0;x<10;x++)
    {
        i[x]=0;
    }
    for(x=0;x<10;x++)
    {
        for(y=10;y<20;y++)
        {
            if(u[x]==u[y]) {i[x]=u[x];} else{}
        }
    }
    for(x=0;x<20;x++)
    {
        for(y=x+1;y<20;y++)
        {
            if(u[x]==u[y]) {u[y]=0;}     else{}
        }
        printf("\nmostrando a uniao: ");
        for(x=0;x<20;x++)
        {
            if(u[x]!=0) {printf("\nvalor %i",u[x]);}   else{}
        }
        printf("\n\nresultado da interseção: ");
        for(x=0;x<10;x++)
        {
            if(i[x]!=0) {printf("\nvalor %i",i[x]); }   else{}
        }
        getchar();
        printf("\n\n");
        system("pause");
    }
    return (0);
}

 

Postado

Seu programa tem muitos dos problemas comuns que vejo aqui neste forum. E a lógica não está boa. E a nomenclatura muito confusa.

 

Entenda que são dois vetores de inteiros. E zero é um valor comum. Parece estar usando 0 como um número mágico e não funciona assim.

 

Sobre o código como postou

 

        }
        getchar();
        printf("\n\n");
        system("pause");

        return (0);
    }

 

Tem um return DENTRO do loop... :)

 

Não leu os avisos do compilador?

 

getchar()? pause? system()? Não use essas coisas. Nem inclua conio.h. Nunca. Isso é dos anos 80 e de nada serve hoje em dia.

 

        for (x = 0; x < 10; x++)
        {
            if (i[x] != 0) { printf("\nvalor %i", i[x]); }
            else
            {
            }
        }

 

Não escreva assim. Use o simples

 

        for (int x = 0; x < 10; x++)
            if (i[x] != 0)
                printf("\nvalor %i", i[x]);

 

Você tem loop dentro de loops dentro de loops e usando as mesmas variáveis. Está bem errado.

 

E mostra antes que eu te avise que deve declarar as variáveis de controle do loop dentro do loop ou no próprio for.

 

TESTE o retorno de scanf(). SEMPRE. É ingênuo não testar.

 

O locale oficial para português do Brasil é pt-BR. Use.

 

Sem corrigir a lógica

 

#include <locale.h>
#include <stdio.h>

int main(void)
{
    setlocale(LC_ALL, "pt-BR");

    int v1[10], v2[10], u[20], i[10];

    for (int x = 0; x < 10; x++)
    {
        printf("digite o valor %i do primeiro conjunto: ", x + 1);
        scanf("%i", &v1[x]);
        u[x] = v1[x];
    }

    for (int x = 0; x < 10; x++)
    {
        printf("digite o valor %i do segundo conjunto: ", x + 1);
        scanf("%i", &v2[x]);
        u[x + 10] = v2[x];
    };

    for (int x = 0; x < 10; x++) i[x] = 0;

    for (int x = 0; x < 10; x++)
        for (int y = 10; y < 20; y++)
            if (u[x] == u[y])
                i[x] = u[x];

    for (int x = 0; x < 20; x++)
    {
        for (int y = x + 1; y < 20; y++)
            if (u[x] == u[y]) u[y] = 0;
        printf("\nmostrando a uniao: ");
        for (int z = 0; z < 20; z++)
            if (u[z] != 0)
                printf("\nvalor %i", u[x]);

        printf("\n\nresultado da interseção: ");
        for (int z = 0; z < 10; z++)
            if (i[z] != 0)
                printf("\nvalor %i", i[z]);
        printf("\n\n");
    }
    return 0;
}

 

 

  • Curtir 1
Postado

@arfneto entendi, muito obrigado pelas dicas ajudou demais, vou ficar mais atento a isso. postei essa duvida aqui pois o compilador que eu estava usando o GDB ONLINE não me indicou a onde estava o problema simplesmente o codigo  não compilava. mas muito obrigado me salvou demais!

@devair1010 deu certo amigo , obrigado! 

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!