1

estoy empezando en esta materia y queria preguntar sobre mi programa en c++ el cual no me saca el porcentaje que necesito para el programa, solo me pide el salario que indico y se termina el programa. Programa para calcular un salario que recibio un aumento del 30%

#include <iostream>
#include <stdio.h>


typedef struct Fecha_Struct{
  int gana;
  int total;

}sueldo;

sueldo ingresoSueldo(void)
{
    sueldo ingresoSueldo;
    printf("\nIngrese el Sueldo del Obrero\n");
    scanf("\n%d",&ingresoSueldo.gana);

    return ingresoSueldo;
}


void calcularSueldo(void){

    sueldo f=ingresoSueldo();
    int sueldo= f.gana*0.30;
    printf("El aumento del 30% de sueldo es: ",sueldo);

}


int main(){
   ingresoSueldo();

    printf("\npresione una tecla para cerrar");

    getchar();
    return 0;

}
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
IsaacV
  • 11
  • 1
  • 2
    Hola IsaacV, bienvenido a [es.so]. Primero, excepto por `#include `, que no usas, tu código es básicamente C, no C++. Dicho esto, en ningún momento llamas a `calcularSueldo`, en `main` llamas a `ingresoSueldo`... Deberías llamar a `calcularSueldo` para empezar... – FJSevilla Jul 07 '19 at 22:51
  • Por otro lado, tu llamada a `printf` en `calcularSueldo` es incorrecta, debe ser en todo caso `printf("El aumento del 30%% de sueldo es: %i", sueldo);`. Ten en cuenta que estás perdiendo la parte decimal de la operación.... – FJSevilla Jul 07 '19 at 23:00
  • Muchisimas gracias por su ayuda jej ahi voy aprendiendo de a poco y entiendo a lo que se refiere no me habia fijado lo de los decimales tendre que acomodar gracias de nuevo – IsaacV Jul 07 '19 at 23:14

2 Answers2

2

Sólo me pide el salario que indico y se termina el programa.

Normal, porque eso es exactamente lo que pides:

int main(){
   ingresoSueldo(); // <---- Pedir sueldo, nada más.

    printf("\npresione una tecla para cerrar");

    getchar();
    return 0;

}

El código no va a hacer más de lo que le pidas, ni menos.


Por lo que veo en tu código, la función calcularSueldo llama a la función ingresoSueldo, así que con esa llamada tendrías lo que necesitas:

void calcularSueldo(void){

    sueldo f=ingresoSueldo();
    int sueldo= f.gana*0.30;
    printf("El aumento del 30% de sueldo es: ",sueldo);

}

int main(){
   ingresoSueldo(); // <---- ingresoSueldo pide el sueldo y calcula el porcentaje.

    printf("\npresione una tecla para cerrar");

    getchar();
    return 0;

}

Adicionalmente, tu código tiene otros problemas que vale la pena mencionar:

  • La cabecera <stdio.h> es de no de . Las cabeceras de C disponen de una versión adaptada a C++ que tiene el prefijo c y carece de extensión. Si realmente necesitas usar las cabeceras de C (que muy rara vez será el caso y ciertamente no es el tuyo) debes usar los equivalentes de C++ <cstdio> . Lee este hilo para saber por qué.
  • En no es necesario hacer un alias de tipo para declarar estructuras, con esto ya es suficiente:

    struct sueldo{
        int gana;
        int total;
    };
    
  • En las funciones que no reciben parámetros, no se declaran con void en la lista de parámetros:

    sueldo ingresoSueldo(); // <---- Sin 'void'
    void calcularSueldo();  // <---- Sin 'void'
    
  • La salida de consola de es std::cout (console out), la entrada de consola es std::cin (console in).
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
0

Mas o menos asi quedaria el programa ...

#include <iostream>
#include <stdio.h>
#include <conio.h> 

using namespace std;

void aumento(int sueldo);


int main(){
   int sueldo;

    cout<<"Programa para calcular el aumento del salario"<<endl;
    cout<<"Ingresa el sueldo: ";
    cin>>sueldo;
    aumento(sueldo);

    return 0;

}

void aumento(int sueldo){
    float aum;
       aum=(sueldo*.30);
      cout<<"El aumento del 30 % es de: "<<aum<<endl;
}
Frank Miller
  • 195
  • 1
  • 9
  • ¿Por qué no funciona el código de la pregunta? ¿Y por qué el tuyo sí? – eferion Jul 08 '19 at 05:51
  • No soy experto en c++ pero noté varios errores del codigo de la pregunta como el que no llama a la función `calcularSueldo` y tambien en la linea ´printf("El aumento del 30% de sueldo es: ",sueldo);´ no puse el %i para variable de tipo entero Y mi codigo funciona porque es mas sencillo tiene una función con un parametro (sueldo) en base a ese parametro se ira calculando el aumento y la mandas a llamar una vez que tenga dicho sueldo. – Frank Miller Jul 08 '19 at 06:00
  • Me refiero a que esas cosas deberías comentarlas en la respuesta. No para que yo entienda tu respuesta sino para que lo entienda, al menos, quien hace la pregunta. Si no lo pones le tocará comparar tu código con el suyo y sacar sus propias conclusiones... eso no es ayudar – eferion Jul 08 '19 at 06:02