Sábado 14 de Diciembre de 2024, 23:41
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problemas con puntero
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problemas con puntero (Leído 1887 veces)
badyalberto
Miembro activo
Mensajes: 77
Problemas con puntero
«
en:
Miércoles 21 de Enero de 2009, 22:42 »
0
Código: Text
#include<stdio.h>
void suma(int num1, int num2);
void calculden(int, int, int *resul);
void calculnum(int num1, int num2,int resulden,int den1,int den2, int *sumnumtotal);
void mcd(int dividendo, int divisor, int *resul);
void mcm(int dividendo, int divisor, int resul, int *resulmcm);
int main()
{
int num1,num2,den1,den2,resul,resulden,resulmcm,sumnumtotal;
printf("Programa que cacula el resultat de la suma de dues fracciones. n");
printf("n");
printf("n");
printf("Introdueix el numerador de la primera fraccio: n");
scanf("%d", &num1);
printf("Introdueix el denomirador de la primera fraccio: n");
scanf("%d", &den1);
printf("Ahora la segona fraccio. n");
printf("Introdueix el numerador de la segona fraccio: n");
scanf("%d", &num2);
printf("Introdueix el denominador de la segona fraccio: n");
scanf("%d", &den2);
if (den1 == den2)
{
printf("La suma de les fraccions dona com a resultat: %d/%d n", num1+num2,den1);
getchar();
getchar();
}
else
{
calculden(den1,den2, &resul);
calculnum(num1,num2,resulmcm,den1,den2,&sumnumtotal);
printf("La suma de les fracciones dona com a resultat: %d/%d n", sumnumtotal,resul);
getchar();
getchar();
}
}
void calculden(int den1, int den2, int *resulmcm)
{
int dividendo1;
if (den1 > den2)
{
mcd(den1,den2,*dividendo1);
mcm(den1,den2,dividendo1,*resulmcm);
}
else
{
mcd(den2,den1,*dividendo1);
mcm(den2,den1,dividendo1,*resulmcm);
}
}
void mcd(int dividendo1, int divisor, int *resul)
{
int aux;
do
{
aux = divisor;
divisor = dividendo1 % divisor;
dividendo1 = aux;
}while (divisor != 0);
*resul=dividendo1;
}
void mcm(int dividendo, int divisor, int resul,int *resulmcm)
{
*resulmcm=(dividendo*divisor)/resul;
}
void calculnum(int num1,int num2, int resulden, int den1, int den2, int *sumnumtotal)
{
int sumnum1,sumnum2;
sumnum1=num1*resulden/den1;
sumnum2=num2*resulden/den2;
*sumnumtotal=sumnum1+sumnum2;
}
Tengo este codigo pero no se donde falla, pq al haber una funcion dentro de otra me lia mucho :s
Siempre me falla dentro del calculden
Tweet
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Problemas con puntero
«
Respuesta #1 en:
Jueves 22 de Enero de 2009, 09:09 »
0
Cita de: "badyalberto"
mcd(den1,den2,
*dividendo1
);
dividendo1
no es un puntero, sino un entero, por tanto no acepta el operador
*
. Lo que quieres es pasar el puntero a
dividendo1
, para eso se usa el operador
&
.
Cita de: "badyalberto"
int *resulmcm
Cita de: "badyalberto"
mcm(den1,den2,dividendo1,*resulmcm);
Aquí te pasa algo parecido.
resulmcm
es un puntero, por tanto al hacer
*resulmcm
estás referenciando el entero al que apunta, cuando
void mcm(int dividendo, int divisor, int resul, int *resulmcm);
necesita un puntero al entero. Debes pasar
resulmcm
sin operador puesto que ya es un puntero.
Ya me cuentas, salud
Fr33k K0mpu73r
badyalberto
Miembro activo
Mensajes: 77
Re: Problemas con puntero
«
Respuesta #2 en:
Jueves 22 de Enero de 2009, 09:36 »
0
Código: Text
#include<stdio.h>
void calculden(int, int, int *resulmcm);
void calculnum(int num1, int num2,int resulden,int den1,int den2, int *sumnumtotal);
void mcd(int dividendo, int divisor, int *resul);
void mcm(int dividendo, int divisor, int resul, int *resulmcm);
int main()
{
int num1,num2,den1,den2,resul,resulden,resulmcm,sumnumtotal;
printf("Programa que cacula el resultat de la suma de dues fracciones. n");
printf("n");
printf("n");
printf("Introdueix el numerador de la primera fraccio: n");
scanf("%d", &num1);
printf("Introdueix el denomirador de la primera fraccio: n");
scanf("%d", &den1);
printf("Ahora la segona fraccio. n");
printf("Introdueix el numerador de la segona fraccio: n");
scanf("%d", &num2);
printf("Introdueix el denominador de la segona fraccio: n");
scanf("%d", &den2);
if (den1 == den2)
{
printf("La suma de les fraccions dona com a resultat: %d/%d n", num1+num2,den1);
getchar();
getchar();
}
else
{
calculden(den1,den2, &resul);
calculnum(num1,num2,resulmcm,den1,den2,&sumnumtotal);
printf("La suma de les fracciones dona com a resultat: %d/%d n", sumnumtotal,resul);
getchar();
getchar();
}
}
void calculden(int den1, int den2, int *resulmcm)
{
int dividendo1;
if (den1 > den2)
{
mcd(den1,den2,÷ndo1);
mcm(den1,den2,dividendo1,resulmcm);
}
else
{
mcd(den2,den1,÷ndo1);
mcm(den2,den1,dividendo1,resulmcm);
}
}
void mcd(int dividendo1, int divisor, int *resul)
{
int aux;
do
{
aux = divisor;
divisor = dividendo1 % divisor;
dividendo1 = aux;
}while (divisor != 0);
*resul=dividendo1;
}
void mcm(int dividendo, int divisor, int resul,int resulmcm)
{
resulmcm=(dividendo*divisor)/resul;
}
void calculnum(int num1,int num2, int resulden, int den1, int den2, int *sumnumtotal)
{
int sumnum1,sumnum2;
sumnum1=num1*resulden/den1;
sumnum2=num2*resulden/den2;
*sumnumtotal=sumnum1+sumnum2;
}
algo asi ?
pero ahora me dice:
[Linker error] undefined reference to `mcm(int, int, int, int*)'
[Linker error] undefined reference to `mcm(int, int, int, int*)'
ld returned 1 exit status
diego.martinez
Miembro MUY activo
Mensajes: 297
Re: Problemas con puntero
«
Respuesta #3 en:
Jueves 22 de Enero de 2009, 09:55 »
0
en void calculden(int den1, int den2, int *resulmcm)
estas pasando resulmcm como PUNTERO a INT.
luego se lo das a una funcion mcm(den1,den2,dividendo1,resulmcm); <- resultmcm es un puntero
asi que el compilador cree que mcm deberia recibir un puntero a int. Como puedes sobrecargar las funciones, el linkador esta esperando a que hagas una funcion de mcm que acepte punteros a int como parametro.
La solucion: refiere el contenido del puntero
mcm(den1,den2,dividendo1,*resulmcm); <- el operador * sirve para referirse al contenido del puntero.
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Problemas con puntero
«
Respuesta #4 en:
Jueves 22 de Enero de 2009, 10:07 »
0
En ningún momento de he comentado de cambiar las cabeceras de las funciones, me refería a que tenías errores en la manera de llamarlas. Leete mi post otra vez con más calma.
Saludos
Fr33k K0mpu73r
badyalberto
Miembro activo
Mensajes: 77
Re: Problemas con puntero
«
Respuesta #5 en:
Jueves 22 de Enero de 2009, 10:09 »
0
pero entonces me dice conversion invalida :S
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Problemas con puntero
«
Respuesta #6 en:
Jueves 22 de Enero de 2009, 10:13 »
0
Me refiero a esto (eres muy impaciente...):
Código: C
void
calculden
(
int
den1
,
int
den2
,
int
*
resulmcm
)
{
int
dividendo1
;
if
(
den1
>
den2
)
{
mcd
(
den1
,
den2
,&
dividendo1
)
;
mcm
(
den1
,
den2
,
dividendo1
,
resulmcm
)
;
}
else
{
mcd
(
den2
,
den1
,&
dividendo1
)
;
mcm
(
den2
,
den1
,
dividendo1
,
resulmcm
)
;
}
}
Fr33k K0mpu73r
badyalberto
Miembro activo
Mensajes: 77
Re: Problemas con puntero
«
Respuesta #7 en:
Jueves 22 de Enero de 2009, 10:18 »
0
ahhhhh yaaaaaaaa porfin xDDD
Muchas gracias ^^
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problemas con puntero