Ir ao conteúdo
  • Cadastre-se

Registros/Ponteiros em C


Posts recomendados

Boa tarde pessoal!

 

Queria pedir uma ajuda para produzir um pedaço de código (que vou descrever logo abaixo). Os temas em análise são passagem por parâmetros,ponteiros, registros e matrizes na linguagem C.

 

Primeiro, declaro a struct Matriz que guarda os dados do numero de colunas(int colunas), linhas(int inhas), celulas (int celulas) e de um vetor (int *vet). Falta descrever que celulas = linhas * colunas (para usar num laço de repetição para receber os valores da matriz num vetor,no caso, o ponteiro *vet.

 

Ficou assim:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

struct Matriz{
    int linhas,colunas,celulas,*vet;
};

typedef struct Matriz Matriz;

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Tenho que desenvolver a função Matriz* CriaMatriz(int linhas,int colunas) ; para alocar espaço de memoria para a struct Matriz ma (aloca os valores da matriz  ma e de outras sucessivas no programa como um todo). Temos o código de tal função:

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Matriz* CriaMatriz(int nlinhas,int ncolunas){
    Matriz *m;
    m = malloc(sizeof(Matriz));
    (*m).colunas = ncolunas;
    m -> linhas = nlinhas;
    m -> celulas = (nlinhas)*(ncolunas);
    m -> vet = malloc((nlinhas*ncolunas) * sizeof(int));

    return m;
}

 

// eu chamei tal função, dentro da função main, ma = CriaMatriz(ma), sendo ma um ponteiro da estrutura Matriz (logo coloco a função principal).

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

O maior problema que não consigo resolver é na seguinte função : CarregaMatriz, que guarda os valores da matriz em um único vetor que será salvo na estrutura que faz o pedido na função principal. Temos seu código (que não compila):

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

void CarregaMatriz(Matriz *m){

    int i;
    for(i=0;i< m.celulas ;i++)
        scanf("%d",&(m.vet));

}

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Função pricipal:

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

int main(){

    int l,c ;
    Matriz *ma,*mb;
    scanf("%d %d",&l,&c);

    ma = CriaMatriz(l,c);
    CarregaMatriz(ma);

    scanf("%d %d",&l,&c);

    mb = CriaMatriz(l,c);
    CarregaMatriz(mb);

//.........(tem mais código ainda) .....

 

    return 0;

}

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Eu não estou conseguindo salvar os valores da matriz no vetor (não acesso o valor de celulas da struct ma na função CarregaMatriz).

 

Me ajudem a entender essa parte!

 

Agradecido.

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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