Programa 07
Eric Fernández Barrio
GRETA 15
Nota: código fuente completo en página 12
El programa consiste en un menú de usuario en el que aparecen 13 programas a elegir
escribiendo un número y presionando enter. Después de terminar de ejecutarse la acción
elegida por el usuario, se le pide que presione una tecla, con lo que se limpia la pantalla y
se vuelve a mostrar el menú de usuario. Este ciclo continúa hasta que el usuario presiona 0,
con lo que sale del programa.
A continuación se observa el esqueleto del código (main y userMenu) y un ejemplo del
funcionamiento del menú de usuario.
Código main y userMenu:
int main(){
system ("color 1E");
int option=-1;
while (option!=0){
userMenu();
cin>>option;
cout<<endl;
switch (option){
case 0: break;
case 1: subprog01(); break;
case 2: subprog02(); break;
case 3: subprog03(); break;
case 4: subprog04(); break;
case 5: subprog05(); break;
case 6: subprog06(); break;
case 7: subprog07(); break;
case 8: subprog08(); break;
case 9: subprog09(); break;
case 10: subprog10(); break;
case 11: subprog11(); break;
case 12: subprog12(); break;
case 13: subprog13(); break;
1
default: cout<<"Opcion no valida"<<endl<<endl;
}
cout<<endl<<endl;
system("pause");
}
}
void userMenu(){
system("cls");
cout<<"Programa06b\nAutor: Eric Fernandez\nFecha: 4/10/2023\n\n";
cout<<"Elige una opcion: "<<endl<<endl;
cout<<"Opcion01: Escribe en pantalla los numeros del 1 al 10\n";
cout<<"Opcion02: Escribe los numeros del 1 al 10 en sentido decreciente\n";
cout<<"Opcion03: Escribe los numeros pares del 0 al 14\n";
cout<<"Opcion04: Escribe los numeros impares del 0 al 20 \n";
cout<<"Opcion05: Escribe los numeros entre 0 y N \n";
cout<<"Opcion06: Escribe los numeros entre de N1 a N2 en sentido ascendente (con N1 y N2 entre 0
y 20) \n";
cout<<"Opcion07: Escribir de 0 a 99 y de 99 a 0 en dos columnas\n";
cout<<"Opcion08: Altura alumnos\n";
cout<<"Opcion09: Serie de Fibonacci\n";
cout<<"Opcion10: Suma y media Fibonacci\n";
cout<<"Opcion11: Factorial\n";
cout<<"Opcion12: Numero total de granos de trigo (casillas ajedrez)\n";
cout<<"Opcion13: Tabla de multiplicacion del 1 al 10\n";
Ejemplo de funcionamiento:
2
A continuación se muestra el código para cada una de las opciones y una imagen con el
resultado que ve el usuario:
Opción 1: Escribe en pantalla los números del 1 al 10
Código:
void subprog01(){
cout<<"\n------------------------------Subprograma 01------------------------------\n";
for(int num=0; num<10; num++) {
cout<<num<<" "; Sleep (100);
if (num%5==4) cout<<endl;
}
}
Ejemplo de funcionamiento:
Opción 2: Escribe los números del 1 al 10 en sentido decreciente
Código:
void subprog02(){
cout<<"\n------------------------------Subprograma 02------------------------------\n";
for (int num=9; num>=0; num--){
cout<<num<<" "; Sleep (100);
if (num%5==0) cout<<endl;
}
}
Ejemplo de funcionamiento:
3
Opción 3: Escribe los números pares del 0 al 14
Código:
void subprog03(){
cout<<"\n------------------------------Subprograma 03------------------------------\n";
for (int num=0; num<=14; num+=2) cout<<num<<" ";
}
Ejemplo de funcionamiento:
Opción 4: Escribe los números impares del 0 al 20
Código:
void subprog04(){
cout<<"\n------------------------------Subprograma 04------------------------------\n";
for (int num=1; num<=20; num+=2) cout<<num<<" ";
}
Ejemplo de funcionamiento:
Opción 5: Escribe los números entre 0 y N
Código:
void subprog05(){
cout<<"\n------------------------------Subprograma 05------------------------------\n";
int N; cout<<"Indica un numero: "; cin>>N; cout<<endl;
for (int num=0; num<=N; num++) cout<<num<<" ";
}
Ejemplo de funcionamiento:
4
Opción 6: Escribe los números entre de N1 a N2 en sentido ascendente
(con N1 y N2 entre 0 y 20)
Código:
void subprog06(){
cout<<"\n------------------------------Subprograma 06------------------------------\n";
int N1, N2, valor; cout<<"Indica dos numeros entre 0 y 20: "; cin>>N1>>N2; cout<<endl;
if (N1<=20&&N1>=0&&N2<=20&&N2>=0) {
if (N1>N2) {
valor=N1; N1=N2; N2=valor;
}
for (N1; N1<=N2; N1++) cout<<N1<<" ";
else cout<<"Los dos numeros no estan entre 0 y 20 \n";
}
Ejemplo de funcionamiento:
5
Opción 7: Escribe de 0 a 99 y de 99 a 0 en dos columnas
Código:
void subprog07(){
cout<<"\n------------------------------Subprograma 07------------------------------\n";
for (int num=0; num<100; num++){
cout<<num<<" ";
if (num%10==9) cout<<endl;
}
cout<<endl<<endl<<"-----------------------------"<<endl<<endl;
for (int num=99; num>=0; num--){
cout<<num<<" ";
if (num%10==0) cout<<endl;
}
Ejemplo de funcionamiento:
6
Opción 8: Escribe un fichero con los datos de 5 alumnos
Código:
void subprog08(){
cout<<"\n------------------------------Subprograma 08------------------------------\n\n";
string nombre, apellido1, apellido2; int altura;
ofstream fout ("[Link]");
cout<<"Indica el nombre, los apellidos y la altura (cm) de 5 alumnos de la clase:\n";
for (int i=1; i<=5; i++){
cout<<"Alumno "<<i<<": ";
cin>>nombre>>apellido1>>apellido2>>altura;
fout<<"Alumno "<<i<<" "<<nombre<<" "<<apellido1<<" "<<apellido2<<" : "<<altura<<" cm\n";
}
Ejemplo de funcionamiento:
7
Opción 9: Escribe un fichero con la serie de Fibonacci
Código:
void subprog09(){
cout<<"\n------------------------------Subprograma 09------------------------------\n\n";
int N, valor1=1, valor2=1, intermedio;
ofstream fout ("[Link]");
cout<<"Cuantos valores de la serie de Fibonacci quieres saber? "; cin>>N;
for (int i=1; i<=N; i++){
fout<<valor1<<" ";
intermedio=valor2;
valor2+=valor1;
valor1=intermedio;
}
}
Ejemplo de funcionamiento:
Opción 10: Suma y media de la serie de Fibonacci
Código:
void subprog10(){
cout<<"\n------------------------------Subprograma 10------------------------------\n\n";
ifstream fin ("[Link]"); int valor, suma=0, contador=0;
while (fin>>valor){
suma+=valor; contador++;
}
cout<<"La suma de la serie es de "<<suma<<" y la media de "<<float(suma)/contador;
}
Ejemplo de funcionamiento:
8
Opción 11: Calcula el factorial de un número
Código:
void subprog11(){
cout<<"\n------------------------------Subprograma 11------------------------------\n\n";
int num, fact=1;
cout<<"Indica un numero para calcular su factorial: "; cin>>num;
for (num; num>0; num--) fact=fact*num;
cout<<"Su factorial es "<<fact;
}
Ejemplo de funcionamiento:
Opción 12: Número total de granos de trigo (casillas ajedrez)
Código:
void subprog12(){
cout<<"\n------------------------------Subprograma 12------------------------------\n\n";
int trigo=1; long total=1;
for (int i=1; i<64; i++){
trigo*=2; total+=trigo;
}
cout<<"El rey tuvo que pagar "<<total<<" granos de trigo";
}
Ejemplo de funcionamiento:
9
Explicación del resultado anterior:
Podemos observar que el ordenador no es capaz de calcular un número tan grande, por eso
el resultado que se muestra en pantalla no es correcto (-1). Si probamos con un número
más pequeño (por ejemplo, imaginando que el tablero de ajedrez tiene 4 o 16 casillas) sí
podemos observar el resultado correcto del número de granos de trigo que tendría que
pagar el rey en los respectivos casos, como se ve a continuación:
void subprog12(){
cout<<"\n------------------------------Subprograma 12------------------------------\n\n";
int trigo=1; long total=1;
for (int i=1; i<(4, 16, o cualquier otro número); i++){
trigo*=2; total+=trigo;
}
cout<<"El rey tuvo que pagar "<<total<<" granos de trigo";
}
10
Opción 13: Tabla de multiplicación del 1 al 10
Código:
void subprog13(){
cout<<"\n------------------------------Subprograma 13------------------------------\n\n";
cout<<"\t X |\t";
for(int i=1; i<=10; i++) cout<<i<<"\t";
cout<<endl<<" -------------------------------------------------------------------------------------\n";
for (int i=1; i<=100; i++){
int i1, i2;
if (i%10!=0) {i1=i%10; i2=i/10+1;}
else {i1=i-10*(i/10-1); i2=i/10;}
if (i1==1) cout<<"\t "<<i2<<" |\t";
cout<<i1*i2<<"\t";
if (i%10==0) cout<<endl;
}
}
Ejemplo de funcionamiento:
11
Código fuente completo:
/*
Programa07
Autor: Eric Fernández
Fecha: 7/10/2023
*/
#include <windows.h>
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
void userMenu();
void subprog01();
void subprog02();
void subprog03();
void subprog04();
void subprog05();
void subprog06();
void subprog07();
void subprog08();
void subprog09();
void subprog10();
void subprog11();
void subprog12();
void subprog13();
int main(){
system ("color 1E");
int option=-1;
while (option!=0){
userMenu();
cin>>option;
cout<<endl;
switch (option){
case 0: break;
case 1: subprog01(); break;
case 2: subprog02(); break;
case 3: subprog03(); break;
case 4: subprog04(); break;
case 5: subprog05(); break;
case 6: subprog06(); break;
case 7: subprog07(); break;
case 8: subprog08(); break;
12
case 9: subprog09(); break;
case 10: subprog10(); break;
case 11: subprog11(); break;
case 12: subprog12(); break;
case 13: subprog13(); break;
default: cout<<"Opcion no valida"<<endl<<endl;
}
cout<<endl<<endl;
system("pause");
}
void userMenu(){
system("cls");
cout<<"Programa07\nAutor: Eric Fernandez\nFecha: 7/10/2023\n\n";
cout<<"Elige una opcion: "<<endl<<endl;
cout<<"Opcion01: Escribe en pantalla los numeros del 1 al 10\n";
cout<<"Opcion02: Escribe los numeros del 1 al 10 en sentido decreciente\n";
cout<<"Opcion03: Escribe los numeros pares del 0 al 14\n";
cout<<"Opcion04: Escribe los numeros impares del 0 al 20 \n";
cout<<"Opcion05: Escribe los numeros entre 0 y N \n";
cout<<"Opcion06: Escribe los numeros entre de N1 a N2 en sentido ascendente (con N1 y N2 entre 0 y 20)
\n";
cout<<"Opcion07: Escribe de 0 a 99 y de 99 a 0 en dos columnas\n";
cout<<"Opcion08: Escribe un fichero con los datos de 5 alumnos\n";
cout<<"Opcion09: Escribe un fichero con la serie de Fibonacci\n";
cout<<"Opcion10: Suma y media de la serie de Fibonacci\n";
cout<<"Opcion11: Calcula el factorial de un numero\n";
cout<<"Opcion12: Numero total de granos de trigo (casillas ajedrez)\n";
cout<<"Opcion13: Tabla de multiplicacion del 1 al 10\n";
void subprog01(){
cout<<"\n------------------------------Subprograma 01------------------------------\n";
for(int num=0; num<10; num++) {
cout<<num<<" "; Sleep (100);
if (num%5==4) cout<<endl;
}
void subprog02(){
13
cout<<"\n------------------------------Subprograma 02------------------------------\n";
for (int num=9; num>=0; num--){
cout<<num<<" "; Sleep (100);
if (num%5==0) cout<<endl;
}
void subprog03(){
cout<<"\n------------------------------Subprograma 03------------------------------\n";
for (int num=0; num<=14; num+=2) cout<<num<<" ";
void subprog04(){
cout<<"\n------------------------------Subprograma 04------------------------------\n";
for (int num=1; num<=20; num+=2) cout<<num<<" ";
void subprog05(){
cout<<"\n------------------------------Subprograma 05------------------------------\n";
int N; cout<<"Indica un numero: "; cin>>N; cout<<endl;
for (int num=0; num<=N; num++) cout<<num<<" ";
}
void subprog06(){
cout<<"\n------------------------------Subprograma 06------------------------------\n";
int N1, N2, valor; cout<<"Indica dos numeros entre 0 y 20: "; cin>>N1>>N2; cout<<endl;
if (N1<=20&&N1>=0&&N2<=20&&N2>=0) {
if (N1>N2) {
valor=N1; N1=N2; N2=valor;
}
for (N1; N1<=N2; N1++) cout<<N1<<" ";
else cout<<"Los dos numeros no estan entre 0 y 20 \n";
}
void subprog07(){
cout<<"\n------------------------------Subprograma 07------------------------------\n";
for (int num=0; num<100; num++){
cout<<num<<" ";
if (num%10==9) cout<<endl;
14
}
cout<<endl<<endl<<"-----------------------------"<<endl<<endl;
for (int num=99; num>=0; num--){
cout<<num<<" ";
if (num%10==0) cout<<endl;
}
void subprog08(){
cout<<"\n------------------------------Subprograma 08------------------------------\n\n";
string nombre, apellido1, apellido2; int altura;
ofstream fout ("[Link]");
cout<<"Indica el nombre, los apellidos y la altura (cm) de 5 alumnos de la clase:\n";
for (int i=1; i<=5; i++){
cout<<"Alumno "<<i<<": ";
cin>>nombre>>apellido1>>apellido2>>altura;
fout<<"Alumno "<<i<<" "<<nombre<<" "<<apellido1<<" "<<apellido2<<" : "<<altura<<" cm\n";
}
void subprog09(){
cout<<"\n------------------------------Subprograma 09------------------------------\n\n";
int N, valor1=1, valor2=1, intermedio;
ofstream fout ("[Link]");
cout<<"Cuantos valores de la serie de Fibonacci quieres saber? "; cin>>N;
for (int i=1; i<=N; i++){
fout<<valor1<<" ";
intermedio=valor2;
valor2+=valor1;
valor1=intermedio;
}
void subprog10(){
cout<<"\n------------------------------Subprograma 10------------------------------\n\n";
ifstream fin ("[Link]"); int valor, suma=0, contador=0;
while (fin>>valor){
suma+=valor; contador++;
}
cout<<"La suma de la serie es de "<<suma<<" y la media de "<<float(suma)/contador;
15
}
void subprog11(){
cout<<"\n------------------------------Subprograma 11------------------------------\n\n";
int num, fact=1;
cout<<"Indica un numero para calcular su factorial: "; cin>>num;
for (num; num>0; num--) fact=fact*num;
cout<<"Su factorial es "<<fact;
}
void subprog12(){
cout<<"\n------------------------------Subprograma 12------------------------------\n\n";
int trigo=1; long total=1;
for (int i=1; i<16; i++){
trigo*=2; total+=trigo;
}
cout<<"El rey tuvo que pagar "<<total<<" granos de trigo";
}
void subprog13(){
cout<<"\n-------------------------------------------Subprograma 13-------------------------------------------\n\n";
cout<<"\t X |\t";
for(int i=1; i<=10; i++) cout<<i<<"\t";
cout<<endl<<" -------------------------------------------------------------------------------------\n";
for (int i=1; i<=100; i++){
int i1, i2;
if (i%10!=0) {i1=i%10; i2=i/10+1;}
else {i1=i-10*(i/10-1); i2=i/10;}
if (i1==1) cout<<"\t "<<i2<<" |\t";
cout<<i1*i2<<"\t";
if (i%10==0) cout<<endl;
}
16