Ir ao conteúdo

C operação com vetores. condicional. operadores lógicos. faeterj. fac. av2. 2018.


Ir à solução Resolvido por isrnick,

Posts recomendados

Postado

Boa tarde!

Eu outra vez...

Podem criticar meu código?

 

Obrigado!

 

#include <stdio.h>

# define X 10
# define Y 15

int busca (int n, int vetor1, int *vetor2){
	int i;
	for (i=0;i<n;i++){
		if (vetor2[i]==vetor1)return 1;
		}
		return 0;}

void exibeDiferencaAB (int *vetor1, int *vetor2){

	int a,i;

	for (i=0;i<X;i++){
		a=busca (Y, vetor1[i], vetor2);
		if (a==0)printf("%d ",vetor1[i]);}
}

int main(void){
	
int vetor1[X]={1,4,3,7,99,14,17,16,11,13};
int vetor2[Y]={4,2,3,9,1,1,5,16,11,33,44,55,66,23,5};

exibeDiferencaAB (vetor1, vetor2);
		
return 0;}

 

IMG_20181213_102021s.jpg

  • Obrigado 1
Postado

A função exibeDiferencaAB também deveria receber os comprimentos dos vetores A e B como parâmetros.

 

E uma boa indentação do código é um requisito, senão dá muito trabalho identificar o que está acontecendo no código.

E existem várias ferramentas para indentar códigos automaticamente, uma boa ferramenta online que eu uso é essa:

https://www.tutorialspoint.com/online_c_formatter.htm

 

E falando em facilitar a compreensão do código isso é mais uma recomendação do que uma necessidade: Código é feito para ser lido por outras pessoas, então usar nomes de variáveis descritivos e/ou colocar comentários ajuda a próxima pessoa a compreender seu código.

 

Veja o código modificado:

#include <stdio.h>

# define X 10
# define Y 15

int busca (int numero, int n, int *vetor) {
    int i;
    for (i=0; i<n; i++) {
        if (vetor[i]==numero) return 1;
    }
    return 0;
}

void exibeDiferencaAB (int n1, int *vetor1, int n2, int *vetor2) {
    int achou, i;

    for (i=0; i<n1; i++) {
        achou=busca(vetor1[i], n2, vetor2);
        if (!achou) //se nao achou o numero
            printf("%d, ",vetor1[i]);
    }
}

int main(void) {
    int vetor1[X]= {1,4,3,7,99,14,17,16,11,13};
    int vetor2[Y]= {4,2,3,9,1,1,5,16,11,33,44,55,66,23,5};

    exibeDiferencaAB (X, vetor1, Y, vetor2);

    return 0;
}

 

  • Curtir 2
Postado

Entendi, mas a função "exibeDiferencaAB" só pode receber 2 vetores.

adicionado 5 minutos depois
33 minutos atrás, isrnick disse:

A função exibeDiferencaAB também deveria receber os comprimentos dos vetores A e B como parâmetros.

 

E uma boa indentação do código é um requisito, senão dá muito trabalho identificar o que está acontecendo no código.

E existem várias ferramentas para indentar códigos automaticamente, uma boa ferramenta online que eu uso é essa:

https://www.tutorialspoint.com/online_c_formatter.htm

 

E falando em facilitar a compreensão do código isso é mais uma recomendação do que uma necessidade: Código é feito para ser lido por outras pessoas, então usar nomes de variáveis descritivos e/ou colocar comentários ajuda a próxima pessoa a compreender seu código.

 

Veja o código modificado:


#include <stdio.h>

# define X 10
# define Y 15

int busca (int numero, int n, int *vetor) {
    int i;
    for (i=0; i<n; i++) {
        if (vetor[i]==numero) return 1;
    }
    return 0;
}

void exibeDiferencaAB (int n1, int *vetor1, int n2, int *vetor2) {
    int achou, i;

    for (i=0; i<n1; i++) {
        achou=busca(vetor1[i], n2, vetor2);
        if (!achou) //se nao achou o numero
            printf("%d, ",vetor1[i]);
    }
}

int main(void) {
    int vetor1[X]= {1,4,3,7,99,14,17,16,11,13};
    int vetor2[Y]= {4,2,3,9,1,1,5,16,11,33,44,55,66,23,5};

    exibeDiferencaAB (X, vetor1, Y, vetor2);

    return 0;
}

 

Não entendi os "n". Na verdade entendi, mas não a necessidade. Apenas para organização?

  • Solução
Postado
29 minutos atrás, jcgs98 disse:

Entendi, mas a função "exibeDiferencaAB" só pode receber 2 vetores.

 

É o enunciado realmente menciona que a função recebe 2 vetores... Mas não acho que o professor consideraria um erro se adicionar os comprimentos dos vetores como parâmetros.

 

Mas deste modo a função não é modular, ou seja não pode ser reutilizada, visto que só vai funcionar nesse programa específico, ou então a pessoa que escrever o outro programa também precisaria saber previamente que deve definir as constantes X e Y para que a função funcione.

 

 

29 minutos atrás, jcgs98 disse:

Não entendi os "n". Na verdade entendi, mas não a necessidade. Apenas para organização?

 

Com os comprimentos dos vetores como parâmetros a função exige que essas informações sejam fornecidas para poder funcionar.

 

Isso se torna especialmente importante mais pra frente quando tiver dividindo seu código em vários arquivos, e aprende a fazer bibliotecas que podem ser reutilizadas em programas diferentes, bastando importar o código que já está pronto no novo programa.

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