Pregunta:
¿En programación en C como llamar una función?
Kiriack Villalba
2011-03-26 23:01:19 UTC
Bueno, me estoy empezando en esto de la programación en C, y de tarea me dejaron un par de problemitas, no estan complicados pero me atoro en un pequeño obstaculo. Mi profesor quiere que haga en un archivo la pura función para que pueda ser llamada desde otro programa.c, pero pues no se como llamar a la función desde la codificación; por ejemplo, la función es que multiplique 3 numeros, y cada vez que sea llamada esa función desde otro programa, solo se deben agregar los 3 valores por medio del usuario, y hay otro programa que también va a ocupar la misma función. La verdad no tengo idea de como llamar a la función, si alguien me pudiera ayudar con esto, tambien que codificacion debe llevar el archivo de la función como cabecera y fin de cuerpo, y con que extensión lo guardo aunque creo que también es .c
Por favor.
Ojo, ya he intentado poner la función en el mismo programa y llamarlo desde el mismo y me corre perfectamente, pero mi profesor quiere que la función sea en un archivo aparte.
Tres respuestas:
Zóram
2011-03-26 23:29:54 UTC
Puedes intentar poner al archivo lider.c al principio un include como el siguiente:



#include "anidado.c"



Entonces todas las funciones que tenga anidado.c pasarán a estar también en lider.c, sin necesidad de que estén escritas en éste segundo.



Tienes que notar que lider.c y anidado.c deben estar en la misma carpeta. Si en vez de comillas ("...") utilizas mayor que y menor que (<...>) el archivo deberá estar en la carpeta include de tu programa C (en el caso de DevC++ es C:\Dev-Cpp\include").



>> anidado.c puede quedar así:

/* -------------------------------------------------------------------------- */

#include



int pidenum();

int multiplica(int num1, int num2, int num3);



/* con sólo funciones main() innecesario */



int pidenum()

{

int num;

printf("Introduce un numero: ");

scanf("%d", &num);

return num;

}



int multiplica(int num1, int num2, int num3)

{

int res;

res = num1 * num2 * num3;

return res;

}

/* -------------------------------------------------------------------------- */

>> lider.c puede quedar así:

/* -------------------------------------------------------------------------- */

#include

#include

#include "anidado.c"



void imprimeres(int n1, int n2, int n3);



int main()

{

int a, b, c;

a = pidenum();

b = pidenum();

c = pidenum();

imprimeres(a, b, c);

}



void imprimeres(int n1, int n2, int n3)

{

int res;

res = multiplica(n1, n2, n3);

printf("El resultado de la multiplicacion es: %d", res);

getch();

}

/* -------------------------------------------------------------------------- */



>> Lo acabo de hacer y me funcionó. En este caso utilicé comillas para el #include "anidado.c" así que ambos deben estar en la misma carpeta...
2011-03-26 23:29:21 UTC
Es sencillo, en multiplicación3.h:







int multiplica(int num1,int num2,int num3){

int resultado = (num1*num2*num3);



return resultado;



}



Y en tu programa ".c" incluyes el encabezado .h :



#include

#include"multiplicacion3.h"



int main(){

int num1,num2,num3,resultado; /*tambien puedes definir los numeros en un array*/

printf("\nIntroduce 3 numeros:\n-> ");

scanf("%d %d %d",&num1,&num2,&num3);

resultado = multiplica(num1,num2,num3);

printf("\nEl resultado es: %d\n",resultado);

getchar(); /* Una pausa, no uses system("pause") ni conio.h */

return 0;

}
?
2017-03-03 08:56:57 UTC
El problema está en la declaración de arrays multidimensionales. Lo puedes solucionar utilizando memoria dinámica. Prueba crear los arreglos con este código: #contain #contain choose the flow*** reservar_memoria(const int T1, const int T2, const int T3) {     choose the flow*** A = (choose the flow***)malloc(T1 * sizeof(choose the flow***));     for (int i = 0; i < T1; i++) {         A[i] = (choose the flow**)malloc(T2 * sizeof(choose the flow**));         for (int j = 0; j < T2; j++)             A[i][j] = (choose the flow*)malloc(T3 * sizeof(choose the flow*));     }     return A; } void liberar_memoria(choose the flow*** A, const int T1, const int T2) {     for (int i = 0; i < T1; i++) {         for (int j = 0; j < T2; j++)             unfastened(A[i][j]);         unfastened(A[i]);     }     unfastened(A); } int substantial() {     const int T1 = 10;     const int T2 = 20;     const int T3 = 30;     choose the flow*** array = reservar_memoria(T1, T2, T3);     array[0][0][0] = 50;     printf("%.0fn", array[0][0][0]);     liberar_memoria(array, T1, T2);     device("pause");     return 0; } Saludos


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...