Hola, estaba creando un programa que realizase la prueba del 9 en una multiplicación.
Al compilar me saca este error:
b6_4_raizdigital.cpp:(.text+0x147): undefined reference to `SumaCifrasNumero(int, int)'
[Error] ld returned 1 exit status
No especifica ninguna linea en ninguno de los 2. El programa es el siguiente:
#include <iostream>
using namespace std;
int SumaCifrasNumero(int a, int suma);
int NumeroMayor9(int a, int b);
int main()
{
int factor1, factor2, prod, res, rdf1, rdf2, rdprod, rdres, suma = 0, sumfinal = 0;
cout << "Dime primer factor: ";
cin >> factor1;
cout << "Dime segundo factor: ";
cin >> factor2;
cout << "Dime tu propuesta de resultado: ";
cin >> res;
prod = factor1 * factor2;
rdf1 = SumaCifrasNumero(factor1, suma);
if(rdf1 >= 10)
rdf1 = NumeroMayor9(rdf1, sumfinal);
else if(rdf1 == 9)
rdf1 = 0;
rdf2 = SumaCifrasNumero(factor2, suma);
if(rdf2 >= 10)
rdf2 = NumeroMayor9(rdf2, sumfinal);
else if(rdf2 == 9)
rdf2 = 0;
rdprod = SumaCifrasNumero(prod, suma);
if(rdprod >= 10)
rdprod = NumeroMayor9(rdprod, sumfinal);
else if(rdprod == 9)
rdprod = 0;
rdres = SumaCifrasNumero(res, suma);
if(rdres >= 10)
rdres = NumeroMayor9(rdres, sumfinal);
else if(rdres == 9)
rdres = 0;
cout << "La 'raiz digital' de " << factor1 << " es: " << rdf1 << endl;
cout << "La 'raiz digital' de " << factor2 << " es: " << rdf2 << endl;
cout << "La 'raiz digital' del producto (" << prod << ") es: " << rdprod << endl;
cout << "La 'raiz digital' de tu propuesta de resultado es: " << rdres <<endl<< endl;
if(rdprod == rdres)
cout << "La multiplicación, probablemente, este BIEN." << endl;
else
cout << "La multiplicación esta MAL.";
return 0;
}
int SumarCifrasNumero(int a, int suma)
{
int num;
num = a % 10;
suma = suma + num;
if (a > 0)
suma = SumarCifrasNumero(a, suma);
return suma;
}
int NumeroMayor9(int a, int b)
{
int sumfinal;
if(a >= 0)
sumfinal = SumarCifrasNumero(a, b);
return sumfinal;
}
¿Alguien sabe algo acerca de estos errores?
Hola, pruebalo asi:
#include <iostream>
using namespace std;
int main()
{
int factor1, factor2, prod, res;
int a,b,c,d;
cout << "Dime primer factor: ";
cin >> factor1;
cout << "Dime segundo factor: ";
cin >> factor2;
cout << "Dime tu propuesta de resultado: ";
cin >> res;
prod = factor1 * factor2;
a = factor1 % 9;
c = factor2 % 9;
d = (a * c) % 9;
b = res % 9;
cout << "La 'raiz digital' de " << factor1 << " es: " << a << endl;
cout << "La 'raiz digital' de " << factor2 << " es: " << c << endl;
cout << "La 'raiz digital' del producto (" << prod << ") es: " << prod % 9 << endl;
cout << "La 'raiz digital' de tu propuesta de resultado es: " << b <<endl<< endl;
if(b == d)
cout << "La multiplicación, probablemente, este BIEN." << endl;
else
cout << "La multiplicación esta MAL.";
return 0;
}
Cita de: dariodr01 en 8 Diciembre 2018, 14:45 PM
Hola, pruebalo asi:
#include <iostream>
using namespace std;
int main()
{
int factor1, factor2, prod, res;
int a,b,c,d;
cout << "Dime primer factor: ";
cin >> factor1;
cout << "Dime segundo factor: ";
cin >> factor2;
cout << "Dime tu propuesta de resultado: ";
cin >> res;
prod = factor1 * factor2;
a = factor1 % 9;
c = factor2 % 9;
d = (a * c) % 9;
b = res % 9;
cout << "La 'raiz digital' de " << factor1 << " es: " << a << endl;
cout << "La 'raiz digital' de " << factor2 << " es: " << c << endl;
cout << "La 'raiz digital' del producto (" << prod << ") es: " << prod % 9 << endl;
cout << "La 'raiz digital' de tu propuesta de resultado es: " << b <<endl<< endl;
if(b == d)
cout << "La multiplicación, probablemente, este BIEN." << endl;
else
cout << "La multiplicación esta MAL.";
return 0;
}
Si que funciona así, pero la idea era hacerlo con recursividad :rolleyes:
Fíjate en el nombre que le pusiste a la función y como la invocaste. Hay una diferencia allí.
Como te han comentado:
Cita de: CalgaryCorpus en 8 Diciembre 2018, 15:13 PM
Fíjate en el nombre que le pusiste a la función y como la invocaste. Hay una diferencia allí.
Estás cambiando el nombre de la función. En el prototipo de la función se llama <SumaCifrasNumero()> y en la implementación (abajo) se llama <SumarCifrasNumero()>. El fallo es esa "R" de "Sumar".
Cuando un compilador te muestra este error "undefined reference to `SumaCifrasNumero(int, int)". Se debe a que no encuentra la función que le estás diciendo. En esos casos tienes que ver que el nombre sea el mismo (cosa que en tu caso no es y por eso falla) o que le estés pasando diferentes parámetros en un sitio que en otro (no es tu caso). Suerte. :-X