viernes, 14 de marzo de 2014

Ejercicios de C++: sentencias de selección.

A continuación unos ejercicios más de C++ para practicar las sentencias de selección. Si no sabes nada de este lenguaje es recomendable que te pases por esta entrada, aunque son bastante sencillos.

Ejercicio 1.
Escribe un programa que lea un número desde teclado y nos diga si es positivo o
negativo.
#include <iostream>
using namespace std;

int main() {
 double num;
 cout << "Introduce un número: "; // prints !!!Hello World!!!
 cin >> num;
 if(num < 0){
  cout << "El número es negativo.";
 }else if(num ==0){
  cout << "El número es 0.";
 }else {
  cout << "El número es positivo.";
 }
 return 0;
}
Ejercicio 2
Escribe un programa que lea tres números y que diga cuál de ellos es el mayor.
#include<iostream>
using namespace std;

int main() {
 float a, b, c, mayor;
 cout << "Programa que calcula el mayor de 3 números" << endl; // prints !!!Hello World!!!
 cout << "Introduce tres números: ";
 cin >> a >> b >> c;
 mayor = a;
 if(b > a){
  mayor = b;
 }
 if(c > mayor){
  mayor = c;
 }
 cout << "El número mayor introducido es " << mayor;
 return 0;
}
Ejercicio 3
Escribe un programa que lea un carácter del teclado y compruebe si el carácter es una
letra, en cuyo caso la salida debe ser “Es letra”, o si el carácter es “\”, en cuyo caso la salida
debe ser “Fin”. Si el carácter no es una letra ni “\” la salida debe ser “Error”.
#include <iostream>
using namespace std;

int main() {
 char a;
 cout << "Introduce un caracter: ";
 cin >> a;
 if(((a>='A') && (a<='Z')) || ((a>='a') && (a<='z'))){
  cout << "Es letra.";
 }else if(a == '\\'){
  cout << "Fin.";
 }else{
  cout << "Error.";
 }
 return 0;
}
Ejercicio 4
Escribe un programa que acepte fechas escritas en el formato numérico y nos dé la
misma fecha pero con el mes correspondiente indicado en letras. Utiliza la estructura de
selección switch. Ejemplo:
Dia: 15
Mes: 2
Año: 1978
Dará como salida:
Dia: 15
Mes: Febrero
Año: 1978
#include <iostream>
using namespace std;

int main() {
 int dia, mes, anyo;
 cout << "Día: " ;
 cin >> dia;
 cout << "Mes: ";
 cin >> mes;
 cout << "Año: ";
 cin >> anyo;
 cout << "Día: " << dia << endl;
 cout << "Mes: ";

 switch(mes){

 case 1: cout << "Enero" << endl;
    break;
 case 2:cout << "Febrero" << endl;
 break;
 case 3:cout << "Marzo" << endl;
 break;
 case 4:cout << "Abril" << endl;
 break;
 case 5:cout << "Mayo" << endl;
 break;
 case 6:cout << "Junio" << endl;
 break;
 case 7:cout << "Julio" << endl;
 break;
 case 8:cout << "Agosto" << endl;
 break;
 case 9:cout << "Septiembre" << endl;
 break;
 case 10:cout << "Octubre" << endl;
 break;
 case 11:cout << "Noviembre" << endl;
 break;
 case 12:cout << "Diciembre" << endl;
 break;

 }
 cout << "Año: "<< anyo << endl;
 return 0;
}
Ejercicio 5
Escribe un programa que permita emitir la factura correspondiente a una compra de un
artículo determinado del que se adquieren una o varias unidades. El IVA a aplicar es del
12%, además si el precio bruto (precio de venta + IVA) es mayor de 300€, se aplicará un
descuento del 5%. En el caso de que se aplique el descuento, deberemos indicarlo por
pantalla.
#include <iostream>
using namespace std;

const double IVA = 0.12;
const double DESCUENTO = 0.05;

int main() {
 int uni;
 double preciounitario, prec1, precio;
 cout << "Introduce las unidades adquiridas: ";
 cin >> uni;
 cout << "Introduce el precio del artículo: ";
 cin >> preciounitario;

 prec1 = uni * preciounitario;
 precio = prec1 + IVA * prec1;

 if(precio > 300){
  precio = precio - DESCUENTO* precio;
  cout << "Se ha producido un descuento del 5%. ";
 }

 cout << "El precio final es "<< precio;


 return 0;
}


Ejercicio 6
El recibo de la electricidad se elabora de la siguiente forma:

  •  1 € de gastos fijos.
  •  0.50 €/Kw para los primeros 100 Kw.
  •  0.35 €/Kw para los siguientes 150 Kw.
  •  0.25 €/Kw para el resto.

Escribe un programa que lea de teclado dos números, que representan los dos últimos
valores del contador de la luz (al restarlos obtendremos el consumo en Kw ), y calcule e
imprima en pantalla el importe total a pagar en función del consumo realizado.
#include <iostream>
using namespace std;

int main() {
 double cont1, cont2, consumo, precio;
 cout << "Factura de la luz." << endl; // prints !!!Hello World!!!
 do{
 cout << "Introduce el valor actual del contador de la luz: ";
 cin >> cont2 ;
 cout << "Introduce el valor anterior del contador de la luz: ";
 cin >> cont1;
 }while(cont2 < cont1);

 consumo = cont2 - cont1;

 if(consumo < 100){
  precio = consumo * 0.5;
 }else{
  precio = 100 * 0.5;

  if(consumo < 250){
   precio = precio + (consumo - 100)*0.35;
  }else{
   precio = precio + 0.35*150 + (consumo - 250)*0.25;


  }
 }
 precio++;
 cout << "El total a pagar es "<< precio;


 return 0;
}
Ejercicio 7
Diseñar un programa que lea el ordinal de un mes y deduzca el número de días que
tiene dicho mes (para un año no bisiesto) sabiendo que: enero, marzo, mayo, julio, agosto,
octubre y diciembre tienen 31 días, febrero 28 y el resto de los meses 30.
#include <iostream>
using namespace std;

int main() {
 int mes;
 do{
 cout << "Introduce el ordinal del mes: ";
 cin >> mes;
 }while(mes < 1 || mes > 12);

 switch(mes){
 case 1:
 case 3:
 case 5:
 case 7:
 case 8:
 case 10:
 case 12: cout << "Dicho mes tiene 31 días.";
 break;
 case 2: cout << "Dicho mes tiene 28 días.";
 break;
 default: cout << "Dicho mes tiene 30 días.";
 break;

 }
 return 0;
}
Ejercicio 8
Una empresa maneja códigos numéricos con las siguientes características:

  • Cada código consta de cuatro dígitos:
  • El primero representa a una provincia.
  • Los dos siguientes indican el número de la operación.
  • El último es un dígito de control.

Escribe un programa que lea de teclado un número de cuatro dígitos (se supone que el primer
dígito no es un cero), y posteriormente imprima en pantalla la siguiente información.
PROVINCIA &
NUMERO DE OPERACION &&
DIGITO DE CONTROL &
En caso de que el número no tenga exactamente cuatro dígitos, o bien el dígito de control sea
erróneo (será correcto si su valor coincide con el resto de dividir el número de operación entre
la provincia), en lugar del mensaje anterior, habrá que imprimir en pantalla el siguiente mensaje
de error:
ERROR: CODIGO INVALIDO.
#include <iostream>
using namespace std;

int main() {
 int cod, provincia, operacion, control;
 cout << "Introduce el código de cuatro digitos: " << endl; // prints !!!Hello World!!!
 cin >> cod;
 if(cod < 1000 || cod > 9999){
  cout << "ERROR: CODIGO INVALIDO.";
 }else{

 provincia = cod %10;
 operacion = ((cod - provincia)/10)%100;
 control = int(cod/1000);


  if(control != operacion%provincia){
   cout << "ERROR: CODIGO INVALIDO.";
  }else{
   cout << "PROVINCIA \t \t" << provincia << endl;
   cout << "NUMERO DE OPERACIÓN \t" << operacion << endl;
   cout << "DÍGITO DE CONTROL \t" << control << endl;
  }

 }


 return 0;
}

No hay comentarios:

Publicar un comentario