estrutura-de-dados - Chamar função em C
Perguntas � estrutura-de-dados � Chamar função em C
Estou fazendo uma função em C que sorteia 50 números e verifica se o numero é impar ou par, se for par irá incluir o valor a esquerda na struct variaveis se não irá incluir a direita. O problema é que não estou conseguindo chamar os metodos que inclui, sendo eles esquerda e direita. Alguem pode mo mostrar como chama estes metodos inserindo o valor sorteado ?
Os metodos devem ser colocados onde diz printf("Aqui chamo o metodo que insere na..... Como chamar e passar os parametros aqui?
Antes do método main, insira as duas linhas abaixo:
int esquerda(struct variaveis **ini,int val);
int direita(struct variaveis **ini,int val);
Lembre-se que C é uma linguagem compilada e, portanto, você deve especificar -no mínimo- o cabeçalho da função antes do main. Caso você esqueça, o compilador não saberá como chamar os métodos esquerda e direita.
Realizei algumas alterações em seu código. Abaixo você pode verificar como ele ficou. Pelo o que eu entendi, você está tentando fazer uma árvore, correto? Ainda há muito o que se fazer nesse projeto. Boa sorte.
struct variaveis *prox;
typedef struct variaveis Variaveis;
int esquerda(Variaveis *ini, int val){
Variaveis* novo = (Variaveis*)malloc(sizeof(Variaveis));
if(novo != NULL){
novo->valor=val;
novo->prox=ini;
ini=novo;
printf("Nao pode ser incluido!");
int direita(struct variaveis *ini,int val){
struct variaveis *novo=NULL,*auxiliar=NULL;
novo=(Variaveis*) malloc(sizeof(Variaveis));
if(novo!=NULL){
if(ini==NULL)
auxiliar=ini;
while(auxiliar->prox!=NULL){
auxiliar=auxiliar->prox;
auxiliar->prox=novo;
} else printf("Nao pode ser incluido!");
Variaveis* ptri=NULL;
int numero, pos;
numero=rand()%51;
if(numero % 2== 0)
esquerda(ptri, numero);
direita(ptri, numero);
Heisenberg, obrigado por responder, já ajustei o código, porém a minha duvida maior é como chamar esses métodos dentro do main. No caso vou adicionar os metodos onde tenho o printf("Aqui chamo o metodo que insere.... Eu só não sei como chamar o metodo e passar os parametros.
— Lucas S 27 de ago de 2015
Entendi. Atualizei a minha resposta anterior. Só dar uma olhada.
— Heisenberg 27 de ago de 2015
Heisenberg, obrigado por me ajudar, mas tenho mais uma dúvida, qual seria a diferença de passa "Variaveis ini" e "Variaveis *ini"? E como passaria um parametro que recebe ini?
— Lucas S 01 de set de 2015
Lucas, em Variaveis ini você está trabalhando diretamente com a estrutura "Variaveis", enquanto que no 2º caso você está utilizando o ponteiro do tipo Variaveis para ini. O 2º caso é muito mais leve e rápido de se utilizar durante a execução do código. Lembre-se de evitar ao máximo a utilização de uma estrutura inteira no parâmetro dos métodos, pois, dependendo do tamanho da estrutura, isso pode travar o seu programa. Porém, se mesmo assim você quiser utilizar a estrutura diretamente, apenas escreva "tipoDoRetorno nomeDoMétodo(Variaveis nomeDaVariavel);".