[C con Clase] (sin asunto)

Salvador Pozo salvador en conclase.net
Lun Sep 2 21:07:56 CEST 2019


El pasado 2019-09-02 16:18:51, Emanuel escribió:
 
E> hola estoy aprendiendo del curso de c++ con clase y quise realizar un
E> programa usando funciones, pero aun no las tengo muy claro y me gustaria
E> que me digan cuales son los errores que cometo en  el codigo.

Hola:

Te comento sobre el mismo programa:

E> el codigo es el siguiente:
E> /*
E> Una farmacia vende algunos artículos sin descuento y a otros con descuento
E> del 20%. Confeccionar un
E> programa que recibiendo el precio original y un código que indica si es o
E> no con descuento, informe el precio
E> final (0 no aplica el descuento y 1 aplica el descuento)
E> */
E> #include <iostream>
E> #include <stdlib.h>
E> using namespace std;
E> bool descuento(int n);
E> float valor_total();
E> int main()
E> {
E>     float precio_articulo_sin_descuento;
E>     cout<<"Ingrese el precio del poducto: ";
E>     cin>>precio_articulo_sin_descuento;
E>     cout<<"¿El producto tiene descuento?\npresiona 1 si tiene descuento o 0
E> si no tiene";
E>     if(descuento(n))

Aquí usas la variable n que no está declarada ni tiene ningún valor asignado.
Supongo que se trata de una variable de tipo entero y que debería contener el valor 0 ó 1 dependiendo de si el artículo tiene descuento o no, pero no lees el valor en ningún sitio.

E>     {
E>         cout<<"El valor total es: "<<valor_total(valor_total)<<endl;

Ahora invocas la función "valor_total" con un parámetro. Sin embargo, en el prototipo no has declarado ningún parámetro, y en la implementación aparecen tres parámetros.
Además, lo que pasas como parámetro es el mismo nombre de la función, y eso no tiene mucho sentido.

E>     }
E>     return 0;
E> }
E> bool descuento(int n)
E> {
E>     if(n==1) return true;else return false;
E> }
E> float valor_total(int n;float valor_total;float
E> precio_articulo_sin_descuento)

Esta declaración es erronea. Las declaraciones de los parámetros de una función se separan con comas, no con puntos y coma.

Vuelves a usar "valor_total" como identificador de un parámetro, pero ese identificador ya lo has usado como nombre de función, y no se puede usar así.

E> {
E>     if(descuento(n)==true)
E>     {
E>         valor_total=precio_articulo_sin_descuento*20/100;

En C y C++ no se usa el identificador de la función como valor de retorno. Puedes usar una variable local para eso.

Además, la fórmula para calcular el precio con descuento está mal. Esa fórmula calcula el descuento.

E>         return valor_total

Aquí falta un punto y coma al final de la sentencia.

E>     }
E>     else
E>         {
E>             valor_total=precio_articulo_sin_descuento;
E>             return valor_total

Aquí también falta un punto y coma.

E> }

Finalmente, falta una llave cerrada }.

Espero que con estas notas sea sencillo corregir el programa. Ya nos contarás. :)

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Con Clase: http://conclase.net


Más información sobre la lista de distribución Cconclase