elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema C++ al enlazar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema C++ al enlazar  (Leído 3,489 veces)
alanjo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Problema C++ al enlazar
« en: 25 Marzo 2016, 00:22 am »

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 :
Citar
#ifndef FUNPROMEDIO_H_INCLUDED
#define FUNPROMEDIO_H_INCLUDED

int funcpromedio(int nota1, int nota2, int nota3, float promedio);

#endif // FUNPROMEDIO_H_INCLUDED

funpromedio.cpp :
Citar
#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 :
Citar
#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 Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Problema C++ al enlazar
« Respuesta #1 en: 25 Marzo 2016, 00:28 am »

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 Desconectado

Mensajes: 5


Ver Perfil
Re: Problema C++ al enlazar
« Respuesta #2 en: 25 Marzo 2016, 00:34 am »

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 Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Problema C++ al enlazar
« Respuesta #3 en: 25 Marzo 2016, 00:41 am »

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:

Código
  1. #include <iostream>
  2. #include "funpromedio.h"
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int main()
  8. {
  9.    int nota1;
  10.    int nota2;
  11.    int nota3;
  12.  
  13.    cout<< "Ingrese la nota del primer trimestre: "<<endl;
  14.    cin>> nota1;
  15.    cout<< "Ingrese la nota del segundo trimestre: "<< endl;
  16.    cin>> nota2;
  17.    cout<< "Ingrese la nota del tercer trimestre: "<< endl;
  18.    cin>> nota3;
  19.    cout << "El promedio es: " << funcpromedio(nota1, nota2, nota3) << endl;
  20.  
  21.    return 0;
  22. }
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 Desconectado

Mensajes: 5


Ver Perfil
Re: Problema C++ al enlazar
« Respuesta #4 en: 25 Marzo 2016, 00:55 am »

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:

Código
  1. #include <iostream>
  2. #include "funpromedio.h"
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int main()
  8. {
  9.    int nota1;
  10.    int nota2;
  11.    int nota3;
  12.  
  13.    cout<< "Ingrese la nota del primer trimestre: "<<endl;
  14.    cin>> nota1;
  15.    cout<< "Ingrese la nota del segundo trimestre: "<< endl;
  16.    cin>> nota2;
  17.    cout<< "Ingrese la nota del tercer trimestre: "<< endl;
  18.    cin>> nota3;
  19.    cout << "El promedio es: " << funcpromedio(nota1, nota2, nota3) << endl;
  20.  
  21.    return 0;
  22. }
Muchas gracias por la pronta respuesta Kaxperday, intenté realizar el llamado a la función que vos describes. Pero tengo el siguiente error:
Citar
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 Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema C++ al enlazar
« Respuesta #5 en: 25 Marzo 2016, 01:11 am »

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 Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Problema C++ al enlazar
« Respuesta #6 en: 25 Marzo 2016, 01:38 am »

Jajaja ostis se me olvido leer el código al completo.

Modifica la función promedio y dejala así:

Código
  1. float funcpromedio(int nota1, int nota2, int nota3);

Código
  1. float funcpromedio(int nota1, int nota2, int nota3)
  2. {
  3.    float promedio = 0;
  4.    if(nota1>5)
  5.        cout<<"Aprobado. 1er trimestre"<< endl;
  6.  
  7.        else if(nota1==5||nota1==4)
  8.            cout<<"Regular, desaprobado, puede recuperar. 1er trimestre"<< endl;
  9.  
  10.        else
  11.            cout<<"Aplazado. 1er trimestre"<< endl;
  12.  
  13.    if(nota2>5)
  14.        cout<<"Aprobado. 2do trimestre"<< endl;
  15.  
  16.        else if(nota2==5||nota2==4)
  17.            cout<<"Regular, desaprobado, puede recuperar. 2do trimestre"<< endl;
  18.  
  19.        else
  20.            cout<<"Aplazado. 2do trimestre"<< endl;
  21.  
  22.    if(nota3>5)
  23.        cout<<"Aprobado. 3er trimestre"<< endl;
  24.  
  25.        else if(nota3==5||nota3==4)
  26.            cout<<"Regular, desaprobado, puede recuperar. 3er trimestre"<< endl;
  27.  
  28.        else
  29.            cout<<"Aplazado. 3er trimestre"<< endl;
  30.  
  31.    promedio= (nota1 + nota2 + nota3) / 3;
  32.  
  33.    if(promedio>5)
  34.        cout<<"Alumno aprobado"<<endl;
  35.    else
  36.        cout<<"Alumno desaprobado"<<endl;
  37.  
  38.        return promedio;
  39.  
  40. }
  41.  

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 Desconectado

Mensajes: 5


Ver Perfil
Re: Problema C++ al enlazar
« Respuesta #7 en: 25 Marzo 2016, 03:52 am »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Enlazar 2 ejecutables
Programación Visual Basic
fernandopl 1 1,859 Último mensaje 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,536 Último mensaje 5 Mayo 2010, 22:39 pm
por Aikanáro Anário
Enlazar IP con dyndns
Dudas Generales
diego2188 2 3,087 Último mensaje 12 Septiembre 2012, 01:30 am
por diego2188
Enlazar Nodos?
Programación C/C++
BrendiisFox 8 4,308 Último mensaje 13 Septiembre 2015, 12:55 pm
por ivancea96
Enlazar dos ejecutables.
Análisis y Diseño de Malware
Usuario887 7 17,915 Último mensaje 1 Noviembre 2021, 17:52 pm
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines