Hilo
Hola estudie un poco mas y tome en cuenta los consejos y segui con el
programa que intentaba hacer.
ahora compila, pero cuando quiero que haga el descuento no lo aplica y la
verdad no tengo la menor idea de porque, si me ayudan a identificar la
causa me ayudarian mucho, ya que estoy con muchas ganas de aprender.
gracias por el curso y la ayuda que brindan
El mar., 3 de sep. de 2019 a la(s) 11:22, <
cconclase-request@listas.conclase.net> escribió:
> Envíe los mensajes para la lista Cconclase a
> cconclase@listas.conclase.net
>
> Para subscribirse o anular su subscripción a través de la WEB
>
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>
>
> O por correo electrónico, enviando un mensaje con el texto "help" en
> el asunto (subject) o en el cuerpo a:
> cconclase-request@listas.conclase.net
>
> Puede contactar con el responsable de la lista escribiendo a:
> cconclase-owner@listas.conclase.net
>
> Si responde a algún contenido de este mensaje, por favor, edite la
> linea del asunto (subject) para que el texto sea mas especifico que:
> "Re: Contents of Cconclase digest...". Además, por favor, incluya en
> la respuesta sólo aquellas partes del mensaje a las que está
> respondiendo.
>
>
> Asuntos del día:
>
> 1. Re: (sin asunto) (Jose DLG)
> 2. Re: (sin asunto) (Facundo Curti)
> 3. Re: (sin asunto) (Jose DLG)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 3 Sep 2019 09:46:34 +0200
> From: Jose DLG <josesoftwarem@gmail.com>
> To: "Lista de correo sobre C y C++" <cconclase@listas.conclase.net>
> Subject: Re: [C con Clase] (sin asunto)
> Message-ID:
> <CAGNyq=
> wJGgj_7X6r9StRh8AaEjyTO5LeDqoLtHiaAq-ZqZpusw@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Buenos días,
> uno de los motivos puede ser este:
>
>
>
>
> *if(descuento(n)) { cout<<"El valor total es:
> "<<valor_total(valor_total)<<endl; }*
>
> La variable que te he subrayado en rojo no está declarada. Quizás solo con
> sustituirla por la variable *precio_articulo_sin_descuento* te funcione o
> al menos tendrías un error menos.
>
>
> El lun., 2 sept. 2019 a las 20:52, Emanuel Cristaldo (<
> imeniuel.3.6@gmail.com> ) escribió:
>
> > hola estoy aprendiendo del curso de c++ con clase y quise realizar un
> > programa usando funciones, pero aun no las tengo muy claro y me gustaria
> > que me digan cuales son los errores que cometo en el codigo.
> > el codigo es el siguiente:
> >
> > /*
> > Una farmacia vende algunos artículos sin descuento y a otros con
> descuento
> > del 20%. Confeccionar un
> > programa que recibiendo el precio original y un código que indica si es o
> > no con descuento, informe el precio
> > final (0 no aplica el descuento y 1 aplica el descuento)
> > */
> >
> > #include <iostream>
> > #include <stdlib.h>
> >
> > using namespace std;
> >
> > bool descuento(int n);
> > float valor_total();
> >
> > int main()
> > {
> > float precio_articulo_sin_descuento;
> >
> > cout<<"Ingrese el precio del poducto: ";
> > cin>> precio_articulo_sin_descuento;
> > cout<<"¿El producto tiene descuento?\npresiona 1 si tiene descuento o
> > 0 si no tiene";
> > if(descuento(n))
> > {
> > cout<<"El valor total es: "<<valor_total(valor_total)<<endl;
> > }
> >
> >
> >
> >
> > return 0;
> > }
> >
> > bool descuento(int n)
> > {
> > if(n==1) return true;else return false;
> > }
> >
> > float valor_total(int n;float valor_total;float
> > precio_articulo_sin_descuento)
> > {
> > if(descuento(n)==true)
> > {
> > valor_total=precio_articulo_sin_descuento*20/100;
> > return valor_total
> > }
> > else
> > {
> > valor_total=precio_articulo_sin_descuento;
> > return valor_total
> > }
> >
> > _______________________________________________
> > Lista de correo Cconclase Cconclase@listas.conclase.net
> >
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: <
> http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20190903/af65d762/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 2
> Date: Tue, 3 Sep 2019 09:01:32 -0300
> From: Facundo Curti <facu.curti@gmail.com>
> To: "Lista de correo sobre C y C++" <cconclase@listas.conclase.net>
> Subject: Re: [C con Clase] (sin asunto)
> Message-ID:
> <CABxff59x2k6cHi-jDEQoKt-bnoEf8C9yQFfC+5qOE=
> CFkopRSw@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> También noto puntos y coma faltantes en los return.
> Te recomiendo que dividas los if en diferentes líneas. Es incómodo de leer
> así. Y mejor aún, podes hacer algo como esto:
>
> return n==1;
>
> Te ahorras la condición del if, es más fácil de leer y tiene mejor
> rendimiento el código.
> Además, la variable sin definir que ya te mencionaron.
> Es muy normal que haya errores en el código a la primera, lo importante es
> saber encontrarlos y arreglarlos. Para eso, lee los errores que te larga el
> compilador, de esa forma podes ir arreglando el código.
>
> Saludos
>
> El mar., 3 de septiembre de 2019 07:05, Jose DLG <josesoftwarem@gmail.com>
> escribió:
>
> > Buenos días,
> > uno de los motivos puede ser este:
> >
> >
> >
> >
> > *if(descuento(n)) { cout<<"El valor total es:
> > "<<valor_total(valor_total)<<endl; }*
> >
> > La variable que te he subrayado en rojo no está declarada. Quizás solo
> con
> > sustituirla por la variable *precio_articulo_sin_descuento* te funcione o
> > al menos tendrías un error menos.
> >
> >
> > El lun., 2 sept. 2019 a las 20:52, Emanuel Cristaldo (<
> > imeniuel.3.6@gmail.com> ) escribió:
> >
> >> hola estoy aprendiendo del curso de c++ con clase y quise realizar un
> >> programa usando funciones, pero aun no las tengo muy claro y me gustaria
> >> que me digan cuales son los errores que cometo en el codigo.
> >> el codigo es el siguiente:
> >>
> >> /*
> >> Una farmacia vende algunos artículos sin descuento y a otros con
> >> descuento del 20%. Confeccionar un
> >> programa que recibiendo el precio original y un código que indica si es
> o
> >> no con descuento, informe el precio
> >> final (0 no aplica el descuento y 1 aplica el descuento)
> >> */
> >>
> >> #include <iostream>
> >> #include <stdlib.h>
> >>
> >> using namespace std;
> >>
> >> bool descuento(int n);
> >> float valor_total();
> >>
> >> int main()
> >> {
> >> float precio_articulo_sin_descuento;
> >>
> >> cout<<"Ingrese el precio del poducto: ";
> >> cin>> precio_articulo_sin_descuento;
> >> cout<<"¿El producto tiene descuento?\npresiona 1 si tiene descuento
> o
> >> 0 si no tiene";
> >> if(descuento(n))
> >> {
> >> cout<<"El valor total es: "<<valor_total(valor_total)<<endl;
> >> }
> >>
> >>
> >>
> >>
> >> return 0;
> >> }
> >>
> >> bool descuento(int n)
> >> {
> >> if(n==1) return true;else return false;
> >> }
> >>
> >> float valor_total(int n;float valor_total;float
> >> precio_articulo_sin_descuento)
> >> {
> >> if(descuento(n)==true)
> >> {
> >> valor_total=precio_articulo_sin_descuento*20/100;
> >> return valor_total
> >> }
> >> else
> >> {
> >> valor_total=precio_articulo_sin_descuento;
> >> return valor_total
> >> }
> >>
> >> _______________________________________________
> >> Lista de correo Cconclase Cconclase@listas.conclase.net
> >>
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> >> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >
> > _______________________________________________
> > Lista de correo Cconclase Cconclase@listas.conclase.net
> >
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: <
> http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20190903/00bded16/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 3
> Date: Tue, 3 Sep 2019 16:11:05 +0200
> From: Jose DLG <josesoftwarem@gmail.com>
> To: "Lista de correo sobre C y C++" <cconclase@listas.conclase.net>
> Subject: Re: [C con Clase] (sin asunto)
> Message-ID:
> <CAGNyq=
> wFW4JQnywc+akGGiERBORz5b7CD80-UxGah-WyddKhpQ@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Llevas un buen camino, solo te falta práctica.
> ¡Ánimo!
>
> El mar., 3 sept. 2019 a las 15:56, Facundo Curti (<facu.curti@gmail.com>)
> escribió:
>
> > También noto puntos y coma faltantes en los return.
> > Te recomiendo que dividas los if en diferentes líneas. Es incómodo de
> leer
> > así. Y mejor aún, podes hacer algo como esto:
> >
> > return n==1;
> >
> > Te ahorras la condición del if, es más fácil de leer y tiene mejor
> > rendimiento el código.
> > Además, la variable sin definir que ya te mencionaron.
> > Es muy normal que haya errores en el código a la primera, lo importante
> es
> > saber encontrarlos y arreglarlos. Para eso, lee los errores que te larga
> > el compilador, de esa forma podes ir arreglando el código.
> >
> > Saludos
> >
> > El mar., 3 de septiembre de 2019 07:05, Jose DLG <
> josesoftwarem@gmail.com>
> > escribió:
> >
> >> Buenos días,
> >> uno de los motivos puede ser este:
> >>
> >>
> >>
> >>
> >> *if(descuento(n)) { cout<<"El valor total es:
> >> "<<valor_total(valor_total)<<endl; }*
> >>
> >> La variable que te he subrayado en rojo no está declarada. Quizás solo
> >> con sustituirla por la variable *precio_articulo_sin_descuento* te
> >> funcione o al menos tendrías un error menos.
> >>
> >>
> >> El lun., 2 sept. 2019 a las 20:52, Emanuel Cristaldo (<
> >> imeniuel.3.6@gmail.com> ) escribió:
> >>
> >>> hola estoy aprendiendo del curso de c++ con clase y quise realizar un
> >>> programa usando funciones, pero aun no las tengo muy claro y me
> gustaria
> >>> que me digan cuales son los errores que cometo en el codigo.
> >>> el codigo es el siguiente:
> >>>
> >>> /*
> >>> Una farmacia vende algunos artículos sin descuento y a otros con
> >>> descuento del 20%. Confeccionar un
> >>> programa que recibiendo el precio original y un código que indica si es
> >>> o no con descuento, informe el precio
> >>> final (0 no aplica el descuento y 1 aplica el descuento)
> >>> */
> >>>
> >>> #include <iostream>
> >>> #include <stdlib.h>
> >>>
> >>> using namespace std;
> >>>
> >>> bool descuento(int n);
> >>> float valor_total();
> >>>
> >>> int main()
> >>> {
> >>> float precio_articulo_sin_descuento;
> >>>
> >>> cout<<"Ingrese el precio del poducto: ";
> >>> cin>> precio_articulo_sin_descuento;
> >>> cout<<"¿El producto tiene descuento?\npresiona 1 si tiene descuento
> >>> o 0 si no tiene";
> >>> if(descuento(n))
> >>> {
> >>> cout<<"El valor total es: "<<valor_total(valor_total)<<endl;
> >>> }
> >>>
> >>>
> >>>
> >>>
> >>> return 0;
> >>> }
> >>>
> >>> bool descuento(int n)
> >>> {
> >>> if(n==1) return true;else return false;
> >>> }
> >>>
> >>> float valor_total(int n;float valor_total;float
> >>> precio_articulo_sin_descuento)
> >>> {
> >>> if(descuento(n)==true)
> >>> {
> >>> valor_total=precio_articulo_sin_descuento*20/100;
> >>> return valor_total
> >>> }
> >>> else
> >>> {
> >>> valor_total=precio_articulo_sin_descuento;
> >>> return valor_total
> >>> }
> >>>
> >>> _______________________________________________
> >>> Lista de correo Cconclase Cconclase@listas.conclase.net
> >>>
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> >>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >>
> >> _______________________________________________
> >> Lista de correo Cconclase Cconclase@listas.conclase.net
> >>
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> >> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >
> > _______________________________________________
> > Lista de correo Cconclase Cconclase@listas.conclase.net
> >
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: <
> http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20190903/21dc8a25/attachment.html
> >
>
> ------------------------------
>
> Subject: Pié de página del digest
>
> _______________________________________________
> Cconclase mailing list
> Cconclase@listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>
>
> ------------------------------
>
> Fin de Resumen de Cconclase, Vol 146, Envío 2
> *********************************************
>
_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

Re: Resumen de Cconclase, Vol 146, Envío 2(Salvador Pozo) 2019-09-03 18:40:03
El pasado 2019-09-03 16:03:47, Emanuel escribió:
E> Hola estudie un poco mas y tome en cuenta los consejos y segui con el
E> programa que intentaba hacer.
E> ahora compila, pero cuando quiero que haga el descuento no lo aplica y la
E> verdad no tengo la menor idea de porque, si me ayudan a identificar la
E> causa me ayudarian mucho, ya que estoy con muchas ganas de aprender.
E> gracias por el curso y la ayuda que brindan
Hola:
De nuevo te respondo comentado sobre el código que has enviado:
#include <iostream>
#include <stdlib.h>
// Aunque en C++ se pueden usar ficheros de cabecera C, lo recomendable es
// usar las versiones C++. En este caso, para stdlib.h, lo correcto sería usar
// #include <cstlib>
// De todos modos, en este programa no usas ninguna función de stdlib, de modo
// que puedes prescindir de ese fichero de cabecera.
using namespace std;
void mensaje_precio();
bool consulta_descuento(int Descuento);
void valor_total(int Descuento,float precio_final);
int Descuento;
float precio_articulo_sin_descuento;
float precio_final;
int main()
{
mensaje_precio();
consulta_descuento(Descuento);
// Has declarado "consulta_descuento" con un valor de retorno de tipo bool
// pero no usas ese valor de retorno para nada. Lo lógico sería asignar
// el valor de retorno a una variable o usarlo como parámetro en una función.
// Tal como lo usas, esta función no realiza ninguna tarea útil en este
// programa.
valor_total(Descuento,precio_final);
return 0;
}
void mensaje_precio()
{
cout<<"Ingrese el precio del producto: ";
cin>> precio_articulo_sin_descuento;
}
bool consulta_descuento(int Descuento)
// Pasas como parámetro con el mismo nombre que una variable global.
// Dentro de la función, el parámetro Descuento enmascara a la variable
// global Descuento, de modo que dentro de ella siempre accedes al
// parámetro, y la variable local es inaccesible.
// En realidad puedes usar una variable local en su lugar, ya que
// no usas para nada el valor del parámetro, ni el cambio del valor
// se verá reflejado al retornar.
{
cout<<"¿El producto tiene descuento?\npresiona 1 si tiene descuento o 0 si no tiene."<<endl;
cin>> Descuento;
if(Descuento==1)
{
return true; return false;
// Aquí hay un error. Después de ejecutar una sentencia "return", el programa
// no ejecutará ninguna otra sentencia de la función, por lo que la segunda
// sentencia return no puede ejecutarse nunca.
// De hecho, el compilador da un aviso (warning) indicando que hay situaciones
// para las que la función no devuelve ningún valor:
// warning: control reaches end of non-void function [-Wreturn-type]|
// Supongo que la idea era colocar el segundo return fuera del bloque "if".
}
}
void valor_total(int Descuento,float precio_final)
{
if(Descuento==true)
// Descuento es de tipo int. C++ convierte automáticamente cualquier valor
// de tipo int a bool si aparece en una expresión como la que has usado.
// Un valor 0 se convierte a false, y cualquier otro valor a true.
// Sin embargo sospecho que no era eso lo que querías hacer, dado que
// has creado una función que devuelve un bool, probablemente querías
// usar ese valor de retorno como parámetro para esta función.
// Además, usar la expresión "Descuento==true" es redundante en este
// caso, ya que la sentencia "if" espera un valor de tipo bool, podrías
// haber usado directamente la forma "if(Descuento)", que es equivalente.
{
precio_final=precio_articulo_sin_descuento*0.20;
// Como en el primer programa que enviaste, en este caso hay un error en
// la fórmula que calcula el precio final. Esto no es un error de programación,
// sino del algoritmo. La fórmula que has usado calcula el descuento, no el
// precio final.
cout<<"El precio total es: "<<precio_final<<endl;
}
else
{
precio_final=precio_articulo_sin_descuento;
precio_final=precio_articulo_sin_descuento;
// Has repetido la sentencia dos veces. Al compilador no le importa repetir
// los cálculos, ni se dará cuenta de que los está repitiendo, pero no
// hace falta hacerlo dos veces.
cout<<"El precio total es: "<<precio_final<<endl;
}
}
Como nota final, es una buena práctica evitar usar variables globales. En
este caso no son necesarias, se puede escribir el mismo programa usando sólo
variables locales. Es un tema de seguridad, en el sentido de que las variables
locales sólo pueden ser modificadas en la función en que son declaradas, y
cualquier intento de modificar el valor en otra función provocará un error.
--
Salvador Pozo (Administrador)
mailto:salvador@conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Con Clase: http://conclase.net
_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ