Ir para conteúdo
  • Anúncios

    • Gh0s7

      Roadsec São Paulo 2017 - Edição de Encerramento   10/04/17

      ATENÇÃO A mega edição de encerramento da Roadsec São Paulo 2017 está incrível e contará com a presença de grandes nomes da área de Segurança da Informação, Nacional e ícones internacionais também! Nós da Fsociety Brasil somos parceiros da Flipside e vamos sortear três ingressos para os membros da nossa comunidade, em breve lançaremos a promoção. Para mais informações sobre o evento, verifique no link: http://bit.ly/2xymLUf

Pergunta

[ajuda] e ai glr , to aprendendo agr sobre alocaçao dinamica, e me surgiu uma duvida no exercicio:
"3) Construa um programa (main) que aloque em tempo de execução (dinamicamente)
uma matriz de ordem m x n (linha por coluna), usando 1+m chamadas a função
malloc. Agora, aproveite este programa para construir uma função que recebendo os
parametros m e n aloque uma matriz de ordem m x n e retorne um ponteiro para esta
matriz alocada. Crie ainda uma função para liberar a área de memória alocada pela
matriz. Finalmente, crie um novo programa (main) que teste/use as duas funções
criadas acima.
4) Construa um programa (main) que aloque em tempo de execução (dinamicamente)
uma matriz de ordem m x n (linha por coluna), usando 2 chamadas a função malloc.
Agora, aproveite este programa para construir uma função que recebendo os
parametros m e n aloque uma matriz de ordem m x n e retorne um ponteiro para esta
matriz alocada. Crie ainda uma função para liberar a área de memória alocada pela
matriz. Finalmente, crie um novo programa (main) que teste/use as duas funções
criadas acima."

nao entendi mt bem oq e pra fazer a respeito dessa alocaçao, tanto 1+m qt 2 chamadas.

segue meu code :

#include <stdio.h>
#include <stdlib.h>
float **Alocar_matriz_real (int m, int n) {
float **v; 
int i;

if (m < 1 || n < 1) {
printf ("** Erro: Parametro invalido **\n");
return (NULL);
}
v = (float *)calloc (m, sizeof(float *)); 
if (v == NULL) {
printf ("** Erro: Memoria Insuficiente **");
return (NULL);
}
for ( i = 0; i < m; i++ ) {
v = (float *)calloc (n, sizeof(float)); 
if (v == NULL) {
printf ("** Erro: Memoria Insuficiente **");
return (NULL);
}
}
return (v);
} 
float **Liberar_matriz_real (int m, int n, float **v) {
int i;
if (v == NULL)
return (NULL);

if (m < 1 || n < 1) {
printf ("** Erro: Parametro invalido **\n"); \
return (v);
}
for (i=0; i<m; i++){
free (v);
}
free (v);
return (NULL);
}

int main (void) {
float **mat;
int l, c;
int i, j;
printf("digite o valor de m: ");
scanf("%d",&l);
printf("\ndigite o valor de n: ");
scanf("%d",&c);

mat = Alocar_matriz_real (l, c);
for (i = 0; i < l; i++){
for ( j = 0; j < c; j++){
if(i==j) mat[j] = 1;
}
}
mat = Liberar_matriz_real (l, c, mat);
return(0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostass a esta questão

Recommended Posts

  • 0

Você fez quatro posts do mesmo, vou apagar os outros 3. Ah, coloque esse código dentro da área de código clicando no ícone que tem "menor que e maior que".

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Poderia dar uma formatada no tópico para ficar mais fácil de entender ?

porém encontrei alguns problemas de cara no código enviado.

float **v;  está errado.
  
float *v; está correto.
  
  * é para demonstrar o valor contido naquele endereço.
  ** seria para ir para o endereço porem é mais facil apenas deixar o v que da na mesma;

Exemplo de alocação dinamica{}


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


main(){

  int *v, tamanho, i;
 puts("Entre com o tamanho para a o array: ");
 scanf("%i",&tamanho);
 v = malloc(tamanho*sizeof(int));
 for(i=0 ; i<tamanho ; i++)
 v[i] = i;
 for(i=0 ; i<tamanho ; i++)
 printf("Posicao %i: %i \n",i,v[i]);
 puts("Entre com o novo tamanho para a o array: ");
 scanf("%i",&tamanho);
 v = realloc(v,tamanho*sizeof(int));
 for(i=0 ; i<tamanho ; i++)
 printf("Posicao %i: %i \n",i,v[i]);
 free(v);
}


 

 

Editado por SmoLL

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  



  • Conteúdo Similar

    • Por Paulo Júnior
      É o seguinte galera, como eu posso fazer um programa em C que crie um loop com uma condição com string, tipo, ele pergunta qualquer coisa e enquanto  a pessoa não digitar ''exit'' ele continue perguntando eternamente ? Se possivel um loop com while e um com if, mas caso não for possivel com os dois, apenas um esta de muito bom agrado. Obrigado por sua atenção.
×

Informação Importante

Ao usar este site, você concorda com nossos Termos de Uso.