Dev - C++ - Ayuda con ejercicio de subprogramas

 
Vista:
Imágen de perfil de Brayan

Ayuda con ejercicio de subprogramas

Publicado por Brayan (8 intervenciones) el 09/10/2016 19:19:32

Ayuda con ejercicio de subprogramas
AYUDA URGENTE POR FAVOR



Buenos dias. Necesito ayuda con un ejercicio de subprogramas, que no tengo la más minima idea de porque no compila...Tal vez sea el error más estúpido del mundo, pero soy muy principiante en eesto, y me serviría mucho, que me "Echen una manita" en esto, gracias xD



Subiré el archivo para que por favor vean y me puedan ayudar a solucionar mi problema. ¡Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Señor R

Ayuda con ejercicio de subprogramas

Publicado por Señor R (7 intervenciones) el 10/10/2016 00:19:00
Aja y cual es el codigo que estas haciendo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Brayan

Ayuda con ejercicio de subprogramas

Publicado por Brayan (8 intervenciones) el 10/10/2016 03:30:58
Lo he dejado adjunto en un archivo, no se ve?
dejare unos pantallazos entonces
Igualmente vuel
1
Capturavo a adjuntar el archivo a revisar
el ejercicio esta en comprimido rar, y se llama ejercicio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Señor R

Ayuda con ejercicio de subprogramas

Publicado por Señor R (7 intervenciones) el 10/10/2016 05:08:36
Tienes varios errores al declarar las funciones, estas usando la misma variable que pasas por parametros, es decir la vuelves a declarar con el mismo nombre dentro de la función... medio corregí algunos errores del código, al final donde esta la funcion principal(main) no entendi que querias hacer como tal asi que lo deje como esta aqui:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <string.h>
using namespace std;
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void sc(float smin,float nv, float npm)
{float com;
cout<<"Numero de viajes"; cin>>nv;
cout<<"Numero de pasajeros"; cin>>npm;
cout<<"Digite el salario minimo"; cin>>smin;
if ((nv>=120 && npm>1000)==0)
{com=smin+(smin*0.05);
}else if((nv>=120 && npm<1000)==0)
      {com=smin+(smin*0.03);
	  }else if((nv<120 && npm<1000 &&npm>500)==0)
	        {com=smin+(smin*0.11);
			}else if((nv<120 && npm<850 && npm>500)==0)
			      {com=smin+(smin*0.07);
				  }else if ((npm<=500)==0)
				        {com=smin;
						}
	cout<<"Salario conductor es:"<< com;
}
void acopp(float vp,float vtp,float smin,float npm)
{float acop;
cout<<"valor de cada pasaje"; cin>>vp;
cout<<"Numero de pasajeros"; cin>>npm;
vtp=vp*npm;
if((vtp>(smin*10))==0)
{acop=vtp*0.03;
}else if ((vtp<(smin*10))==0)
      {acop=vtp*0.02;
	  }
	cout<<"Aporte a la cooperativa es:"<< acop;
}
void unmm(float vp,float com,float acop,float comb,float mo,float rm)
{float unm;
cout<<"Digite el valor del combustible"; cin>>comb;
cout<<"Digite el valor de la mano de obra"; cin>>mo;
cout<<"Digite el valor de los repuestos"; cin>>rm;
unm=vp-com-acop-comb-mo-rm;
cout<<"Utilidad neta en el mes es:"<<unm;
}
int main(int argc, char** argv) {
 
	char nc[15];
	float cc, com, acop, unm;
 
	cout<<"Nombre del conductor: "; cin >> nc;
	cout<<"Numero de cedula: "; cin>>cc;
	cout<<"Nombre del conductor: "<< nc;
	cout<<"Numero de cedula: "<< cc;
	cout<<"Salario conductor es: "<< com;
	cout<<"Aporte a la cooperativa es: "<< acop;
	cout<<"Utilidad neta en el mes es: "<<unm;
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Brayan

Ayuda con ejercicio de subprogramas

Publicado por Brayan (8 intervenciones) el 10/10/2016 19:45:16
Es que mira el enunciado, en en programa principal (Main) debo imprimir los resultados de los subprogramas

Enunciado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con ejercicio de subprogramas

Publicado por dario (44 intervenciones) el 10/10/2016 11:24:23
No entiendo tu codigo, podrias poner en enunciado del problema.
Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Brayan

Ayuda con ejercicio de subprogramas

Publicado por Brayan (8 intervenciones) el 10/10/2016 19:44:08
Mira aqui la adjunto
Enunciado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con ejercicio de subprogramas

Publicado por Thanatos (199 intervenciones) el 11/10/2016 02:56:11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <string>
#include <iomanip>  // fixed, setprecision()
 
using namespace std;
 
float calcularSalario(unsigned, unsigned, float);
float calcularAporte(float, float);
float calcularUtilidadNeta(float, float, float, float, float, float);
 
int main() {
    const float valPasaje(8000.0f);    // dato del problema
    const float salMinimo(689455.0f);  // salario mínimo mensual 2016 (Colombia)
 
    string nombre("");
    string cedula("");
    unsigned nViajes(0);
    unsigned nPasajeros(0);
    float combustible(0.0f);
    float manoObra(0.0f);
    float repuestos(0.0f);
 
    cout << "Ingrese los siguientes datos:\n";
    cout << "Nombre del conductor ------> ";     (void) getline(cin, nombre);
    cout << "C\202dula del conductor ------> ";  (void) getline(cin, cedula);
    cout << "N\243mero de viajes ----------> ";  cin >> nViajes;
    cout << "N\243mero de pasajeros -------> ";  cin >> nPasajeros;
    cout << "Valor del combustible -----> ";     cin >> combustible;
    cout << "Valor de la mano de obra --> ";     cin >> manoObra;
    cout << "Valor de los repuestos ----> ";     cin >> repuestos;
 
    float totalPasajes = static_cast<float>(nPasajeros) * valPasaje;
    float salario = calcularSalario(nPasajeros, nViajes, salMinimo);
    float aporte = calcularAporte(totalPasajes, salMinimo);
    float uNeta = calcularUtilidadNeta(
        totalPasajes, salario, aporte, combustible, manoObra, repuestos
    );
    cout << "\n-------------------------------- \n"
         << " Conductor: .. "    << nombre  << '\n'
         << " C\202dula: ..... " << cedula  << '\n'
         << fixed << setprecision(2)
         << " Salario: .... $"   << salario << '\n'
         << " Aporte: ..... $"   << aporte  << '\n'
         << " U. Neta: .... $"   << uNeta   << '\n';
    return 0;
}
 
float calcularSalario(unsigned nPasajeros, unsigned nViajes, float salMinimo) {
    if (nPasajeros > 500) {
        if (nViajes < 120) {
            if (nPasajeros < 850) {
                return salMinimo + salMinimo * 0.07f;
            } else {
                return salMinimo + salMinimo * 0.11f;
            }
        } else {
            if (nPasajeros <= 1000) {
                return salMinimo + salMinimo * 0.03f;
            } else {
                return salMinimo + salMinimo * 0.05f;
            }
        }
    }
    return salMinimo;
}
 
float calcularAporte(float totalPasajes, float salMinimo) {
    if (totalPasajes > salMinimo * 10.0f) {
        return totalPasajes * 0.03f;
    }
    return totalPasajes * 0.02f;
}
 
float calcularUtilidadNeta(float totalPasajes,
                           float salario,
                           float aporte,
                           float combustible,
                           float manoObra,
                           float repuestos) {
    return totalPasajes - (salario + aporte + combustible + manoObra + repuestos);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Brayan

Ayuda con ejercicio de subprogramas

Publicado por Brayan (8 intervenciones) el 11/10/2016 17:32:23
Muchas gracias Thanatos!

Pero...No entiendo tu sintaxis asi compile xD, Si fueras capaz de explicarme yo encantado :)
Iguamente muchas gracias :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con ejercicio de subprogramas

Publicado por Thanatos (199 intervenciones) el 12/10/2016 00:09:18
Como no indicaste las partes que no entendiste, te explicaré las partes en las que el código de mi respuesta es diferente del tuyo.

Línea 2:
En mi código utilicé el header <string>, porque utilicé las cadenas de C++.

En tu programa utilizaste el header <string.h>, éste contiene funciones para manipular las cadenas del lenguaje C. Si se quiere tener acceso a estas funciones en C++ (utilizando las cadenas del lenguaje C), se tendría que incluir <cstring> en lugar de <string.h>.


Línea 3:
Aquí debo hacer una corrección. El comentario de mi código, en la línea 3, sólo debería incluir a setprecision().

Al incluir a <iostream>, se está incluyendo de forma indirecta a <ios>, que es a donde pertenece fixed, por eso los comentarios deberían verse así:

1
2
3
#include <iostream>  // fixed
#include <string>    // string, getline()
#include <iomanip>   // setprecision()


Líneas 7, 8 y 9:
Son los prototipos de las funciones calcularSalario(), calcularAporte() y calcularUtilidadNeta(). En general deberían escribirse en otro archivo (header).

En tu código declaraste y definiste las funciones antes de utilizarlas en la función main. Lo que yo hice fue separar la declaración de las funciones (prototipos), y escribí sus definiciones después de la función main.


Líneas 12 y 13:
Los valores del pasaje y el salario mínimo no deben cambiar durante la ejecución del programa, por eso valPasaje y salMinimo están definidas como constantes.

Tengo la costumbre de utilizar constexpr en lugar de const para estos casos, pero constexpr requiere que tu comando de compilación le indique al compilador que utilice el estándar C++ del año 2011 o uno más moderno. Si quieres habilitar esta opción en Dev-C++ puedes hacerlo desde el menú de opciones:

Herramientas > Opciones del Compilador > pestaña Configuración > pestaña Generación de Código

576dfa8392b6b-DevCpp


Con esa configuración podrás utilizar constexpr sin errores de compilación.


Líneas 15 a 21:
Son las variables de entrada del programa. Las inicialicé utilizando inicialización directa, por eso sus valores iniciales están entre paréntesis. La inicialización que utiliza el signo de asignación = se conoce como inicialización por copia.

En lugar de unsigned también se puede escribir unsigned int. Una variable de este tipo acepta sólo números enteros positivos. Tanto el número de viajes, como el número de pasajeros nunca tendrán decimales y tampoco es lógico que se ingresen números negativos, por eso declaré a nViajes y a nPasajeros como variables de tipo unsigned.

Los valores numéricos con parte decimal, son interpretados por el compilador como valores de tipo double. La letra f al final de un número, es el sufijo que indica que se trata de un valor de tipo float. También puede usarse la F mayúscula


Lineas 24 y 25:
Como las variables nombre y cedula son de tipo string (C++), usé la función getline para leer las cadenas que ingresará el usuario.


Línea 32:
El enunciado del ejercicio indica que no se deben repetir cálculos realizados previamente, por eso realicé aquí el cálculo del valor total de los pasajes, para no tener que hacerlo nuevamente en las funciones calcularAporte() y calcularUtilidadNeta().

En esta línea se hizo un casting a nPasajeros, para que la multiplicación se realice entre dos valores de tipo float. Este casting, escrito al estilo del lenguaje C, se ve de esta manera:

1
float totalPasajes = (float)nPasajeros * valPasaje;


Linea 41:
Modifiqué la precisión de los resultados para que estén expresados con dos cifras decimales, para eso utilicé setPrecision(), pasándole 2 como argumento. Al usar fixed, se consigue que se muestre la cantidad de cifras decimales especificada con setprecision(), aun si estas cifras son ceros. Los cambios afectan a los valores que muestran las líneas 42, 43 y 44.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar