- Duvida em C
+ Responder ao Tópico
-
Duvida em C
estou tentando passar 5 parametros e 2 deles por referencia na chamada de uma função.
Oproblema eh o seguinte eh o seguinte:
a funcao mochila passa 2 parametros por referencia: a variavel inteira capacidade e a variavel inteira itens. Gostaria de alocar uma regiao de memoria com o valor que "itens" e "capacidade" recebem, usando o malloc nas variaveis: peso, custo, melhor e valor.
Apos a execucao do da funcao ele deveria ir para a proxima instrucao com as variaveis capacidade e itens com o valor recebido anteriormente.
nao estou conseguinte alocar memoria com essas 2 variaveis passadas por referencia.
alguem pode me dizer o q estah ocorrendo?
PS: obrigatoriamente "capacidade" e "itens" tem q ser passado por referencia.
//-------------inicio do programinha-----------------------------------
#include <stdio.h>
#include <stdlib.h>
void dados(int *capacidade, int peso[], int valor[], int custo[], int melhor[], int *itens);
void mochila(int capacidade, int peso[], int valor[], int custo[], int melhor[], int itens);
void escreve(int custo[], int melhor[], int capacidade);
int main(){
int capacidade,*peso=NULL,*valor=NULL;
int itens,*custo=NULL,*melhor=NULL;
dados(&capacidade,peso,valor,custo,melhor,&itens);
mochila(capacidade,peso,valor,custo,melhor,itens);
escreve(custo,melhor,capacidade);
return 0;
}
void dados(int *capacidade, int peso[], int valor[],int custo[],int melhor[], int *itens){
int i,capacidade,itens;
printf("digite a quantidade de itens: "<IMG SRC="images/forum/icons/icon_wink.gif">;
scanf("%d",&itens);
printf("digite a capacidade da mochila: "<IMG SRC="images/forum/icons/icon_wink.gif">;
scanf("%d",&capacidade);
peso = malloc(sizeof(int)*itens);
valor = malloc(sizeof(int)*itens);
custo = malloc(sizeof(int)*capacidade);
melhor = malloc(sizeof(int)*capacidade);
printf("\ndigite os pesos e os valores dos itens respectivamente:\n\n"<IMG SRC="images/forum/icons/icon_wink.gif">;
printf("%d %d", itens, item);
for(i=0;i<itens;i++){printf("item[%d]->peso: ",i+1);
scanf("%d",&peso[i]);
printf("item[%d]->valor:",i+1);
scanf("%d",&valor[i]);
}
}
void mochila(int capacidade, int peso[], int valor[], int custo[], int melhor[],int itens){
int ind,i,j;
for(ind=0;ind<=capacidade;ind++) custo[ind]=0;
for(i=0;i<itens;i++){
for(j=0;j<capacidade;j++){
if(i>=peso[j]){
if(custo[i]<custo[j-peso[i]]+valor[i]){
custo[j]=custo[j-peso[i]]+valor[i];
melhor[j]=i;
}
}
}
}
}
void escreve(int custo[], int melhor[], int capacidade){
int i=0;
for(i=0;i<capacidade;i++) printf("%d", custo[i]);
printf("\n"<IMG SRC="images/forum/icons/icon_wink.gif">;
for(i=0;i<capacidade;i++) printf("%d", melhor[i]);
}
//--------------fim do programinha
-
Duvida em C
desculpem-me o trecho do programa a q me referia fika na funcao dados.
void dados(.....);
-
Duvida em C
AAAA mais uma coisa.
as variaveis declaradas na funcao dados. sao desconsideradas.