Autor
|
Tema: Problema C++ al enlazar (Leído 3,504 veces)
|
alanjo
Desconectado
Mensajes: 5
|
Buenas gente, hace días vengo intentando resolver, un problema bastante simple que me dieron al decir verdad, el problema es que me pidieron que a dicho problemita, lo tenía que dividir en 3 ficheros, en el main, en la función y en el header, y luego los tenía que linkear, todo bien, compila perfecto, pero a la hora de linkear "sale todo bien", pero al ejecutar el programa, sólo sale lo del main.cpp y no se lleva a cabo el objetivo del programa el cual es "determinar promedios de alumnos", les dejo el código funpromedio.h : #ifndef FUNPROMEDIO_H_INCLUDED #define FUNPROMEDIO_H_INCLUDED
int funcpromedio(int nota1, int nota2, int nota3, float promedio);
#endif // FUNPROMEDIO_H_INCLUDED
funpromedio.cpp : #include <iostream> #include "funpromedio.h" using namespace std; int funcpromedio(int nota1, int nota2, int nota3, float promedio) {
if(nota1>5) cout<<"Aprobado. 1er trimestre"<< endl;
else if(nota1==5||nota1==4) cout<<"Regular, desaprobado, puede recuperar. 1er trimestre"<< endl;
else cout<<"Aplazado. 1er trimestre"<< endl;
if(nota2>5) cout<<"Aprobado. 2do trimestre"<< endl;
else if(nota2==5||nota2==4) cout<<"Regular, desaprobado, puede recuperar. 2do trimestre"<< endl;
else cout<<"Aplazado. 2do trimestre"<< endl;
if(nota3>5) cout<<"Aprobado. 3er trimestre"<< endl;
else if(nota3==5||nota3==4) cout<<"Regular, desaprobado, puede recuperar. 3er trimestre"<< endl;
else cout<<"Aplazado. 3er trimestre"<< endl;
promedio= (nota1 + nota2 + nota3) / 3;
if(promedio>5) cout<<"Alumno aprobado"<<endl; else cout<<"Alumno desaprobado"<<endl; return 0;
}
main.cpp : #include <iostream> #include "funpromedio.h"
using namespace std;
int main() { int nota1; int nota2; int nota3;
cout<< "Ingrese la nota del primer trimestre: "<<endl; cin>> nota1; cout<< "Ingrese la nota del segundo trimestre: "<< endl; cin>> nota2; cout<< "Ingrese la nota del tercer trimestre: "<< endl; cin>> nota3;
return 0; }
Gracias de antemano.
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Se ve que te lo has currao.
Sobretodo por la llamada a la función en el main XD.
|
|
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
alanjo
Desconectado
Mensajes: 5
|
Se ve que te lo has currao.
Sobretodo por la llamada a la función en el main XD.
Jajaja, lo que me dijeron es que la llamada a la función en el main, no era necesaria, porque está incluida en funpromedio.h
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Jajaja, lo que me dijeron es que la llamada a la función en el main, no era necesaria, porque está incluida en funpromedio.h
Claro pero si en este caso quieres hacer el promedio deberás de llamarla en el main. O llamar a otra función que la llame. Se va a ejecutar lo que pongas en el main si no podes la llamada a la función allí no se ejecutará. Solucion: #include <iostream> #include "funpromedio.h" using namespace std; int main() { int nota1; int nota2; int nota3; cout<< "Ingrese la nota del primer trimestre: "<<endl; cin>> nota1; cout<< "Ingrese la nota del segundo trimestre: "<< endl; cin>> nota2; cout<< "Ingrese la nota del tercer trimestre: "<< endl; cin>> nota3; cout << "El promedio es: " << funcpromedio(nota1, nota2, nota3) << endl; return 0; }
|
|
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
alanjo
Desconectado
Mensajes: 5
|
Claro pero si en este caso quieres hacer el promedio deberás de llamarla en el main. O llamar a otra función que la llame. Se va a ejecutar lo que pongas en el main si no podes la llamada a la función allí no se ejecutará. Solucion: #include <iostream> #include "funpromedio.h" using namespace std; int main() { int nota1; int nota2; int nota3; cout<< "Ingrese la nota del primer trimestre: "<<endl; cin>> nota1; cout<< "Ingrese la nota del segundo trimestre: "<< endl; cin>> nota2; cout<< "Ingrese la nota del tercer trimestre: "<< endl; cin>> nota3; cout << "El promedio es: " << funcpromedio(nota1, nota2, nota3) << endl; return 0; }
Muchas gracias por la pronta respuesta Kaxperday, intenté realizar el llamado a la función que vos describes. Pero tengo el siguiente error: C:\Users\XXX\Desktop\Programacion PRUEBAS\Promedios\Promedio2\main.cpp|20|error: faltan argumentos para la función 'int funcpromedio(int, int, int, float)'| C:\Users\XXX\Desktop\Programacion PRUEBAS\Promedios\Promedio2\funpromedio.h|4|nota: se declara aquí| (Y me redirecciona a funpromedio.h). Muchas gracias
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Has puesto como argumento a la función, el float, una variable que en verdad usas como local. Los argumentos no se deben usar para crear variables locales. Mal, queda aplazada la asignatura que cursas de C. La llamada a la función espera a que le pases todos los argumentos que espera, el float incluido. Otro: si haces promedio un float no hay razón por la que la función deba devolver un int. Más: si todos los argumentos de una división són enteros C la considera una división entera y así guardará el resultado, aunque lo metas en un float.
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Jajaja ostis se me olvido leer el código al completo. Modifica la función promedio y dejala así: float funcpromedio(int nota1, int nota2, int nota3);
float funcpromedio(int nota1, int nota2, int nota3) { float promedio = 0; if(nota1>5) cout<<"Aprobado. 1er trimestre"<< endl; else if(nota1==5||nota1==4) cout<<"Regular, desaprobado, puede recuperar. 1er trimestre"<< endl; else cout<<"Aplazado. 1er trimestre"<< endl; if(nota2>5) cout<<"Aprobado. 2do trimestre"<< endl; else if(nota2==5||nota2==4) cout<<"Regular, desaprobado, puede recuperar. 2do trimestre"<< endl; else cout<<"Aplazado. 2do trimestre"<< endl; if(nota3>5) cout<<"Aprobado. 3er trimestre"<< endl; else if(nota3==5||nota3==4) cout<<"Regular, desaprobado, puede recuperar. 3er trimestre"<< endl; else cout<<"Aplazado. 3er trimestre"<< endl; promedio= (nota1 + nota2 + nota3) / 3; if(promedio>5) cout<<"Alumno aprobado"<<endl; else cout<<"Alumno desaprobado"<<endl; return promedio; }
De esa manera cuando le pases la nota de los cuatrimestres te devolvera la media, y solo tienes que mostrarla por pantalla, suerte XD.
|
|
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
alanjo
Desconectado
Mensajes: 5
|
Muchas gracias a ambos, a Mafus por la explicación teórica y a Kaxperday por su explicación práctica. Muchas gracias por su amabilidad, me funcionó. Es bueno saber que hay gente que dedica su tiempo a alguien, tengan ustedes una muy buena jornada.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Enlazar 2 ejecutables
Programación Visual Basic
|
fernandopl
|
1
|
1,865
|
24 Noviembre 2005, 16:03 pm
por NYlOn
|
|
|
Problema al enlazar un video de youtube a un segundo determinado
Dudas Generales
|
Aikanáro Anário
|
5
|
4,546
|
5 Mayo 2010, 22:39 pm
por Aikanáro Anário
|
|
|
Enlazar IP con dyndns
Dudas Generales
|
diego2188
|
2
|
3,094
|
12 Septiembre 2012, 01:30 am
por diego2188
|
|
|
Enlazar Nodos?
Programación C/C++
|
BrendiisFox
|
8
|
4,325
|
13 Septiembre 2015, 12:55 pm
por ivancea96
|
|
|
Enlazar dos ejecutables.
Análisis y Diseño de Malware
|
Usuario887
|
7
|
17,958
|
1 Noviembre 2021, 17:52 pm
por Usuario887
|
|