Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Programas con if, else-if (múltiples) en codeblocks

Estas en el tema de Programas con if, else-if (múltiples) en codeblocks en el foro de C/C++ en Foros del Web. PROBLEMA 1 Una empresa vende productos cuyos códigos se encuentran en el rango [1000..5000]. Se debe realizar un programa que pida por teclado el código ...
  #1 (permalink)  
Antiguo 31/10/2014, 05:26
HWF
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 9 años, 5 meses
Puntos: 0
Programas con if, else-if (múltiples) en codeblocks

PROBLEMA 1
Una empresa vende productos cuyos códigos se encuentran en el rango [1000..5000]. Se debe realizar un programa que pida por teclado el código de un producto y la cantidad de unidades de dicho producto que desea comprar un cliente, y calcule y muestre en pantalla el precio total. El precio del producto se conoce directamente a partir de su código:

Para los códigos 1000 y 5000, el precio es 100.0 euros.
Para el resto depende del rango en el que se encuentre el código del producto:Si se introduce un código fuera del rango de los existentes, se deberá mostrar un mensaje informando de dicha situación (se recomienda controlar esta situación en primer lugar).
[1001..1999] => 200.0 euros
[2000..2999] => 300.5 euros
[3000..3500] => 400.25 euros
[3501..3600] => 500.0 euros
[3601..4999] => 1000.0 euros
Finalmente, si el usuario pide más de 100 unidades, se le hará un descuento del 10% del precio total.
Ejemplo:
para codigo=999, o codigo =5001 => "producto no existente"
para codigo=1000 o codigo =5000, y cantidad=200 => precio (20000.0 - 2000.0) = 18000.0
para codigo = 1001, y cantidad=1 => precio=200.0
para codigo = 2000, y cantidad=1 => precio=300.5

// Hacer solo con if, else-if (múltiples)



PROBLEMA 2
Programa que pida por teclado un valor entero de referencia, y 4 números enteros más, y escriba en pantalla cuántos de dichos 4 valores coinciden con el valor de referencia (el resultado será pues una cantidad >=0 y <=4).

Ejemplos:

para ref=10 y valores: 10 10 5 10 => coinciden=3
para ref=10 y valores: 1 2 3 -11 => coinciden=0
para ref=-3 y valores: 0 -2 123 -3 => coinciden=1
Nota: Conviene saber hacerlo usando 4 variables, una para cada valor a comparar con el de referencia, y tb usando 1 sóla variable (por supuesto, además de la que guarde el valor de referencia).

// ¿Cómo se haría con if y utilizando operadores lógicos y relacionales?
  #2 (permalink)  
Antiguo 31/10/2014, 06:03
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Programas con if, else-if (múltiples) en codeblocks

¿Y que llevas hecho del código', ¿dónde te atorases y cuáles son las dudas?.


¡¡¡Saluditos!!!

  #3 (permalink)  
Antiguo 31/10/2014, 06:26
HWF
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Programas con if, else-if (múltiples) en codeblocks

En el problema 1: Lo he resuelto con 'if', los intervalos con los precios. Pero no sé cómo 'incluir' ese 10 % para que me dé el precio, para cantidades mayores de 100. Es decir el programa me funciona correctamente pero no sé dónde hacer las modificaciones para ese apartado (10%).

Y en el problema 2: es que no sé por dónde empezar... (solo sé que hay 5 variables (referencia, a, b, c, d)).
  #4 (permalink)  
Antiguo 31/10/2014, 07:05
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Programas con if, else-if (múltiples) en codeblocks

Cita:
Iniciado por HWF Ver Mensaje
En el problema 1: Lo he resuelto con 'if', los intervalos con los precios. Pero no sé cómo 'incluir' ese 10 % para que me dé el precio, para cantidades mayores de 100. Es decir el programa me funciona correctamente pero no sé dónde hacer las modificaciones para ese apartado (10%).
un if final independiente de la cadena de if-else, comprueba si la cantidad es mayor que 100, y si se cumple aplica la bonificación... para conseguir esto tienes que almacenar en una variable el coste total (lo digo por si te ha dado por hacer un printf dentro de cada if).

Cita:
Iniciado por HWF Ver Mensaje
Y en el problema 2: es que no sé por dónde empezar... (solo sé que hay 5 variables (referencia, a, b, c, d)).
tienes que hacer 4 comparaciones... pon 4 ifs... en cada uno comparas el valor de referencia con el que toque (el primer if para el primer valor, segundo if para el segundo valor...) si se cumple la condición del if incrementas un contador y finalmente sacas el valor del contador por pantalla.
  #5 (permalink)  
Antiguo 31/10/2014, 07:09
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Programas con if, else-if (múltiples) en codeblocks

Cita:
Iniciado por HWF Ver Mensaje
En el problema 1: Lo he resuelto con 'if', los intervalos con los precios. Pero no sé cómo 'incluir' ese 10 % para que me dé el precio, para cantidades mayores de 100. Es decir el programa me funciona correctamente pero no sé dónde hacer las modificaciones para ese apartado (10%).

Y en el problema 2: es que no sé por dónde empezar... (solo sé que hay 5 variables (referencia, a, b, c, d)).
Lo primero con algo como:

Código C++:
Ver original
  1. if ( cantidad > 100 )
  2.   precio *= 0.9 ;

Y lo segundo no es más que introducir el primer número de referencia y usar un contador para en los siguientes cuatro que introduces, si coincide con el primero, ir sumando si coincide. Tan sólo tres variables, una para la referencia , otra para el número introducido y la última para el contador. Puede servirte de referencia lo que sigue:

Código C++:
Ver original
  1. puts ("Introduce el valor de referencia:") ;
  2. scanf ("%d",&ref);
  3. for ( i = 0 , cont = 0 ; i < 4 ; i++ ) {
  4.   printf ("Introduce el %d valor para comparar:" , i + 1 ) ;
  5.   scanf ("%d",&numero);
  6.   if ( numero == ref )
  7.     cont++;
  8. }

¡¡¡Saluditos!!!

  #6 (permalink)  
Antiguo 31/10/2014, 11:40
 
Fecha de Ingreso: septiembre-2014
Mensajes: 66
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: Programas con if, else-if (múltiples) en codeblocks

yo hice esto:
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5.     int codigo,cantidad,descuento;
  6.     float precio;
  7.     cout << "ingresa el codigo del producto (1000-5000): ";cin >> codigo;
  8.     cout << "Ingresa la cantidad : ";cin >> cantidad;
  9.     if(codigo==1000||codigo==5000){precio=100.0;}
  10.     else if(codigo>1000 & codigo <= 1999){precio=200.0;}
  11.     else if(codigo > 1999 & codigo <=2999){precio=300.5;}
  12.     else if(codigo > 2999 & codigo <=3500){precio=400.25;}
  13.     else if(codigo >3500 & codigo <=3600){precio=500.0;}
  14.     else if(codigo >3600 &  codigo<5000){precio=1000.0;}
  15.     if(cantidad >=100){precio=precio*cantidad;descuento = (precio*10)/100;
  16.     }else{precio*=cantidad;}
  17.     cout << "Precio: "<<precio  - descuento<<endl;
  18.     return 0;
  19. }

es algo asi?
no lo probé
  #7 (permalink)  
Antiguo 31/10/2014, 13:45
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Programas con if, else-if (múltiples) en codeblocks

Código C++:
Ver original
  1. if(codigo==1000||codigo==5000){precio=100.0;}

¿Estás seguro de eso? yo creo que te están pidiendo que fuera del rango 1001-4999 el programa tiene que dar un error por código incorrecto.

Código C++:
Ver original
  1. int ... descuento;

Si pones que "descuento" sea un entero va a perder la parte decimal... y eso puede no ser conveniente ya que vas a tener que gestionar decimales.

Código C++:
Ver original
  1. descuento = (precio*10)/100;

Dime en que tienda trabajas tu para no ir nunca en rebajas. Además, X*10/100 es equivalente a X/10, pero el descuento siguen sin estar bien calculado.

Y no te van a cobrar por líneas de código, si tabulas el código va a ser más legible, tanto para ti como para nosotros... lo mismo te da igual que para nosotros sea más fácil o difícil de leer, pero seguro que te interesa poder leer tu código de forma fácil, ya que eres tú el que va a tener que depurar los errores que tenga.
  #8 (permalink)  
Antiguo 31/10/2014, 16:31
 
Fecha de Ingreso: septiembre-2014
Mensajes: 66
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: Programas con if, else-if (múltiples) en codeblocks

Cita:
Iniciado por eferion Ver Mensaje
Código C++:
Ver original
  1. if(codigo==1000||codigo==5000){precio=100.0;}

¿Estás seguro de eso? yo creo que te están pidiendo que fuera del rango 1001-4999 el programa tiene que dar un error por código incorrecto.

Código C++:
Ver original
  1. int ... descuento;

Si pones que "descuento" sea un entero va a perder la parte decimal... y eso puede no ser conveniente ya que vas a tener que gestionar decimales.

Código C++:
Ver original
  1. descuento = (precio*10)/100;

Dime en que tienda trabajas tu para no ir nunca en rebajas. Además, X*10/100 es equivalente a X/10, pero el descuento siguen sin estar bien calculado.

Y no te van a cobrar por líneas de código, si tabulas el código va a ser más legible, tanto para ti como para nosotros... lo mismo te da igual que para nosotros sea más fácil o difícil de leer, pero seguro que te interesa poder leer tu código de forma fácil, ya que eres tú el que va a tener que depurar los errores que tenga.
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5.     int codigo;
  6.     float precio,cantidad,descuento;
  7.     cout << "ingresa el codigo del producto (1000-5000): ";
  8.     cin >> codigo;
  9.     if(codigo < 1000 || codigo >5000){
  10.         cout << "\nel codigo es incorrecto";
  11.         return 0;
  12.     }
  13.     cout << "Ingresa la cantidad : ";
  14.     cin >> cantidad;
  15.     if(codigo==1000||codigo==5000){
  16.         precio=100.0;
  17.     }
  18.     else if(codigo>1000 & codigo <= 1999){
  19.         precio=200.0;
  20.     }
  21.     else if(codigo > 1999 & codigo <=2999){
  22.         precio=300.5;
  23.     }
  24.     else if(codigo > 2999 & codigo <=3500){
  25.         precio=400.25;
  26.     }
  27.     else if(codigo >3500 & codigo <=3600){
  28.         precio=500.0;
  29.     }
  30.     else if(codigo >3600 &  codigo<5000){
  31.         precio=1000.0;
  32.     }
  33.     if(cantidad >=100){
  34.         precio *= cantidad;
  35.         descuento = precio*10 / 100;
  36.     }
  37.     else{
  38.         precio*=cantidad;
  39.     }
  40.     cout << "Precio: "<<precio-descuento<<endl;
  41.     return 0;
  42. }

ahora?


Código:
    if(codigo==1000||codigo==5000){
        precio=100.0;
    }
en el ejercicio dice que si el codigo es 1000 o 5000 el precio es 100.0

Código:
    if(codigo < 1000 || codigo >5000){
        cout << "\nel codigo es incorrecto";
        return 0;
    }
ahi chequeo que no este fuera del rango.
  #9 (permalink)  
Antiguo 31/10/2014, 17:55
HWF
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Programas con if, else-if (múltiples) en codeblocks

Esto es lo que llevo del PROBLEMA 2. No se cómo continuar para que coincidan 1, 2, o 3 valores:


#include <iostream>
using namespace std;
int main ()
{
int refe, a, b , c, d;

cout << "Introducir el valor de referencia: ";
cin >> refe;

cout << "Introducir primer valor: ";
cin >> a;

cout << "Introducir segundo valor: ";
cin >> b;

cout << "Introducir tercer valor: ";
cin >> c;

cout << "Introducir cuarto valor: ";
cin >> d;

if (refe == a && refe == b && refe == c && refe == d)
{
cout << "Coincide todos" << endl;
}

else if (refe != a && refe != b && refe != c && refe != d)
{
cout << "No coincide ninguno" << endl;
}
.
.
.
.
.

Y del PROBLEMA 1, llevo esto aunque tienes muchos fallos:

#include <iostream>
using namespace std;
int main ()
{
int codigo, cant;
float precio, precioTotal;

cout << "Introducir el codigo del producto: ";
cin >> codigo;

cout << "Unidades que desea comprar: ";
cin >> cant;


if (codigo < 1000 || codigo > 5000)
{
cout << "PRODUCTO NO EXISTENTE" << endl;
}

else if (codigo == 1000 || codigo == 5000)
{
precio = 100.0;
cout << "La factura es de: " << (precio * cant) << " euros " << endl;
}

else if (codigo >= 1001 && codigo <= 1999)
{
precio = 200.0;
cout << "La factura es: " << (precio * cant) << " euros " << endl;
}

else if (codigo >= 2000 && codigo <= 2999)
{
precio = 300.5;
cout << "La factura es: " << (precio * cant) << " euros " << endl;
}

else if (codigo >= 3000 && codigo <= 3500)
{
precio = 400.25;
cout << "La factura es: " << (precio * cant) << " euros " << endl;
}

else if (codigo >= 3501 && codigo <= 3600)
{
precio = 500.0;
cout << "La factura es: " << (precio * cant) << " euros " << endl;
}

else if (codigo >= 3601 && codigo <= 4999)
{
precio = 1000.0;
cout << "La factura es: " << (precio * cant) << " euros " << endl;
}

if (cant > 100)
{
precioTotal = ((precio * cant) * 0.9);
cout << "La factura es de: " << precioTotal << " euros " << endl;
cout << "Nota: Se le ha aplicado un descuento del 10%" << endl;
}

else
{
precioTotal = (precio * cant);
cout << "La factura total es de: " << precioTotal << " euros " << endl;

}
return 0;
}
  #10 (permalink)  
Antiguo 31/10/2014, 18:11
 
Fecha de Ingreso: septiembre-2014
Mensajes: 66
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: Programas con if, else-if (múltiples) en codeblocks

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     int refe,a,b,c,d,ctd;
  5.     cout << "Ingresa el valor referencia: ";cin >> refe;
  6.     cout << "Primer valor: ";cin >> a;
  7.     cout << "Segundo valor: ";cin >> b;
  8.     cout << "Tercer valor: ";cin >> c;
  9.     cout << "Cuarto valor: ";cin >> d;
  10.     if(refe==a){
  11.         ctd++;
  12.     }
  13.     if(refe==b){
  14.         ctd++;
  15.     }
  16.     if(refe==c){
  17.         ctd++;
  18.     }
  19.     if(refe==d){
  20.         ctd++;
  21.     }
  22.     cout << ctd;  
  23. }
  #11 (permalink)  
Antiguo 01/11/2014, 06:26
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Programas con if, else-if (múltiples) en codeblocks

Cita:
Iniciado por HWF Ver Mensaje
............................

Y del PROBLEMA 1, llevo esto aunque tienes muchos fallos:
...........................
Venga amigo HWF un empujoncito:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5.     int codigo , cantidad ;
  6.     float precio ;
  7.     cout << "ingresa el codigo del producto (1000-5000): " ;
  8.     cin >> codigo ;
  9.     cout << "Ingresa la cantidad : " ;
  10.     cin >> cantidad ;
  11.     if ( codigo < 1000 || codigo > 5000 )
  12.       cout << "PRODUCTO NO EXISTENTE" << endl ;
  13.     else if ( codigo == 1000 || codigo == 5000 )  precio = 100.0;
  14.     else if ( codigo > 1000 & codigo <= 1999 )    precio = 200.0;
  15.     else if ( codigo > 1999 & codigo <= 2999 )    precio = 300.5;
  16.     else if ( codigo > 2999 & codigo <= 3500 )    precio = 400.25;
  17.     else if ( codigo > 3500 & codigo <= 3600 )    precio = 500.0;
  18.     else if ( codigo > 3600 & codigo  < 5000 )    precio = 1000.0;
  19.     precio *= cantidad ;
  20.     if ( cantidad >= 100 )  precio = precio * 0.9 ;  
  21.     cout << "La factura es de: " << precio << " euros." << endl;
  22.     return 0;
  23. }

Y respecto al otro señalar que cuando if, else, etc se componen de una sola línea no hacen falta las llaves.

Además falta el return de main e inicilizar la variable contador "ctd=0":

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     int refe , a , b , c , d , ctd = 0 ;
  5.     cout << "Ingresa el valor referencia: ";cin >> refe;
  6.     cout << "Primer valor: ";  cin >> a;
  7.     cout << "Segundo valor: "; cin >> b;
  8.     cout << "Tercer valor: ";  cin >> c;
  9.     cout << "Cuarto valor: ";  cin >> d;
  10.     if ( refe == a )  ctd++;
  11.     if ( refe == b )  ctd++;
  12.     if ( refe == c )  ctd++;
  13.     if ( refe == d )  ctd++;
  14.     cout << "Coincidencias: "<< ctd;
  15.     return 0 ;
  16. }

¡¡¡Saluditos!!!


Última edición por leosansan; 01/11/2014 a las 06:56
  #12 (permalink)  
Antiguo 02/11/2014, 10:20
HWF
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Programas con if, else-if (múltiples) en codeblocks

Muchas gracias por la resolución de los problemas. En el primero he estado muy cerca de solucionarlo y me ha faltado pensar un 'poquito más'. (Nota: Cuando introduces un codigo menor que 1000 o mayor que 5000 sale lo de 'producto no existente' pero también la factura con números erróneos. Por lo demás perfecto). Y en el problema 2 realmente no sabía cómo hacerlo y no tenía idea sobre la incrementación "++".

¡Un saludo!

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:30.