Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Mateus Nunes

Armazenar dados de uma matriz em um vetor

Recommended Posts

Boa noite! Faço uma disciplina de algoritmos na faculdade e estou com um problema em entender uma questão (na realidade sua resolução).

O enunciado é o seguinte: elaborar um programa que leia uma matriz 5x4 e crie um vetor com todos os números pares da matriz. Em seguida, o programa deverá escrever as posições ocupadas do vetor.

 

Abaixo segue o "gabarito". Alguém pode me explicar COMO os valores pares estão sendo passados para o "vet[z]"??? Está relacionado com a contagem feita acima, mas não estou conseguindo entender como os valores pares foram passados, uma vez que "cont" e "z" não estiveram no mesmo laço de repetição nenhuma vez......

 

Obrigado!!!!!!!!!!!

#include <stdio.h>
#include <locale.h>
#define nlin 2
#define ncol 2
main()
{
int mat[nlin][ncol],col,lin,pos,vet[20],z,cont=0;
double resto;

setlocale(LC_ALL,"portuguese");

//ZERANDO O VETOR
for(z=0;z<=19;z++)
{
vet[z]=0;
}

printf("Informe %d valores: ",nlin*ncol);
for(lin=0;lin<=nlin-1;lin++)
{
for(col=0;col<=ncol-1;col++)
    {
    scanf("%d",&mat[lin][col]);
    }
}

system("pause");
system("cls");

printf("Valores armazenados na matriz:\n\n");
for(lin=0;lin<=nlin-1;lin++)
{
for(col=0;col<=ncol-1;col++)
    {
    printf("%d\t",mat[lin][col]);
    }
printf("\n");
}

//////VERFICANDO SE HÁ VALORES PARES
for(lin=0;lin<=nlin-1;lin++)
{
for(col=0;col<=ncol-1;col++)
    {
    resto=mat[lin][col]%2;
    if(resto==0){vet[cont]=mat[lin][col];cont++;}
    }
}

printf("\n\n\VETOR:\n");
for(z=0;z<=19;z++)
{
printf("%d\n",vet[z]);
}
printf("\n");

system("pause");
system("cls");

if(cont!=0)
{

printf("\nO vetor teve as seguintes posições ocupadas por valores pares:\n");
for(z=0;z<=19;z++)
{
if(vet[z]!=0){printf("Posição %d\n",z);}
}
}
else{printf("\nNão há valores pares na matriz.");}


printf("\n\n\nFim da Programação!!!!");
printf("\n\n\n\n");
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mateus Nunes

//////VERFICANDO SE HÁ VALORES PARES

for(lin=0;lin<=nlin-1;lin++)

{

for(col=0;col<=ncol-1;col++)

{

resto=mat[lin][col]%2;     <----- Foi exatamente aqui que ele verificou se o numero é par ou não, explico abaixo

if(resto==0) { vet[cont]=mat[lin][col];cont++; }  <<------ E é aqui que é passado o valor da matriz para o vetor

}

}

 

 

É o seguinte, quando você divide um numero par por 2, o resto geralmente da 0, quando se ultiliza % para fazer conta o resultado é o resto

 

Ele verifica se o resto é 0, se for ele passa o valor para o vetor e acrescenta 1 ao cont (que inicialmente é 0), para que na prox. vez que ele entre nesse if o vetor nao será mais [0], mas sim [1]

 

O z só foi usado para zerar o vetor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×