Está en la página 1de 16

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 ("datosClase.txt");

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 ("Fibonacci.txt");
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 ("Fibonacci.txt"); 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 ("datosClase.txt");

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 ("Fibonacci.txt");
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 ("Fibonacci.txt"); 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

También podría gustarte