Los alumnos deberán intentar programar el juego de los "Muertos y los Heridos".
Números con dígitos repetidos no serán considerados por el programa, por ejemplo 3378 o 4894
Los alumnos deberán intentar programar el juego de los "Muertos y los Heridos".
PROGRAMA
/* Programa de desactivación de la bomba de la película
Cars 2 utilizando la técnica del Kbhit y del Getch de
la biblioteca Conio.h
Rev 0;
Elaborado: Carlos Ferrer
*/
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <locale.h>
using namespace std;
main()
{
int min=5,seg=0;
char tecla,aux1='*',aux2='*';
setlocale(LC_ALL,"spanish");
repite:
/* Detectamos si se pisa una tecla del teclado
cero = no se ha pisado nada / Cualquier valor
distinto se piso una tecla*/
if(kbhit()==0)
{
// implementamos un reloj de 5 minutos descendiente
if (seg!=0)
{
seg=seg-1;
}
else
{
seg=59;
min=min-1;
}
Sleep(800);
Beep(250,200);
//Presentamos los datos de la bomba
system("cls");
cout <<"Tiempo para explosión "<<min<<":"<<seg<<" clave de desactivación= "<<aux1<<aux2;
// Si se agota el tiempo explotamos la bomba
if (min<=0 or (min==0 and seg==0))
{
system ("cls");
cout <<"BOOOOOM"<<endl;
Beep (75,1500);
exit(0);
}
}
else // recibimos la clave del teclado
{
tecla=getch();
if (aux1=='*')
{
aux1=tecla;
}
else
{
if (aux2=='*')
{
aux2=tecla; //Verificamos la clave y desactivamos la bomba
if ((aux1=='c' or aux1=='C') and (aux2=='f' or aux2=='F'))
{
system("cls");
cout <<"Tiempo para explosión "<<min<<":"<<seg<<" clave de desactivación= "<<aux1<<aux2;
cout <<endl<<endl<<"Usted a desactivado la bomba"<<endl;
cout <<"FELICITACIONES !!!"<<endl;
Beep (500,500);
Beep (500,500);
exit(0);
}
else //clave incorrecta penalizamos
{
system("cls");
cout <<"Tiempo para explosión "<<min<<":"<<seg<<" clave de desactivación= "<<aux1<<aux2;
cout <<endl<<endl<<"Clave de desactivación"<<endl;
cout <<"INCORRECTA !!!"<<endl;
cout <<"SE LE RESTARA UN MINUTO!!!"<<endl;
min=min-1;
Beep(100,500);
Beep(100,500);
aux1='*';
aux2='*';
}
}
}
}
goto repite;
}
En la programación es habitual la necesidad de generar números aleatorios, en su concepto mas simple un numero aleatorio es: un número que se genera al azar, sin seguir un patrón o una secuencia predecible. Se utiliza en una variedad de aplicaciones, como juegos, simulaciones, criptografía y pruebas de estadísticas.
Los números aleatorios se utilizan en muchos campos para simular situaciones aleatorias y realizar experimentos estadísticos. Por ejemplo, en los juegos de azar, los números aleatorios se utilizan para determinar el resultado de cada ronda, y en las pruebas estadísticas, los números aleatorios se utilizan para seleccionar muestras de una población para estudiar.
Es importante tener en cuenta que, aunque un número aleatorio parece ser completamente aleatorio e impredecible, en realidad es generado por un algoritmo o un proceso que sigue ciertas reglas matemáticas o físicas. Sin embargo, estos algoritmos se diseñan para producir números que parezcan aleatorios y que no sigan ningún patrón predecible. En C++ se utilizan generalmente dos bibliotecas para generar números aleatorios la biblioteca "Windows.h" y la "time.h".
Existen otras bibliotecas que también manejan las mismas instrucciones por ejemplo la "stdlib" y la "ctime", para generar los numeros aleatorios el uso de una u otra es indiferente.
Lo primero que se hace es definir la fuente de los números aleatorios para esto se usa la instrucción:
srand(time(NULL)); // srand significa fuente de números aleatorios.
Nota: Se puede usar time(NULL) o time(0), los cuales son en realidad lo mismo, ya que ambos pasan un puntero nulo o un valor entero cero como argumento a la función time(). En otras palabras, time(NULL) y time(0) solicitan a la función time() que devuelva la hora actual del sistema en forma de valor entero sin cambiar ningún valor.
Posteriormente se procede a utilizar la técnica del residuo para obtener nuestro numero aleatorio, recordemos que al dividir un numero A entre un numero B el residuo podrá presentar valores entre 0 y (B-1), por ejemplo al dividir cualquier numero entero entre 10 el residuo de la operación presentara valores entre 0 y 9. Veamos si queremos generar números aleatorios entre 0 y 100 bastaría con colocara la siguiente instrucción:
int aleatorio;
aleatorio = rand()%101;
en pocas palabras cualquier numero entero al dividirse entre 101 presentará en el residuo de la operación números aleatorios entre 0 y 100. Veamos otros ejemplos.
Ejemplo Nro. 1: Números aleatorios entre 50 y 376:
como la diferencia en 376-50=326, bastaría con dividir entre 327 para obtener en el residuo de la operación números entre 0-326,
aleatorio = 50+ rand()%327;
Ejemplo Nro. 2: Números aleatorios entre -200 y 150:
como la diferencia en 150-(-200)=350, bastaría con dividir entre 351 para obtener en el residuo de la operación números entre 0-350,
aleatorio = -200+ rand()%351;
Ejemplo Nro. 3: Números aleatorios entre -0.31 y 0.55:
como la diferencia en 55-(-31)=86, bastaría con dividir entre 87 para obtener en el residuo de la operación números entre 0-86 y luego el resultado dividirlo entre 100.
float aleatorio;
aleatorio = (-31+ rand()%87);
aleatorio=aleatorio/100;
Nota: función rand() retorna enteros, su presencia en cualquier ecuación generará un numero entero, en consecuencia la división entre 100 debe hacerse después de generarse el numero entero. Basados en el ultimo ejemplo elaboremos un programa que genere 10 números aleatorios entre -0..31 y 0.55 cada vez que se genere un numero la PC producirá un sonido de 250 Hertz con duración de un cuarto de segundo, para esto usaremos la instrucción "Beep" de la biblioteca "Windows.h":
PROGRAMA
/*Ejemplo números aleatorios y Beep
elaborado por Carlos Ferrer
rev. Abril 2023*/
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
int main()
{
float aleatorio;
srand(time(NULL)); // Indica que la fuente (Source) de números aleatorios es el contador la hora actual
for (int i = 0; i < 10; i=i+1)
{ // generamos 10 números aleatorios
aleatorio = (-31+ rand()%87);
aleatorio = aleatorio/100;
// generamos un número aleatorio entre -0.31 y 0.55 (usando el residuo de la división entre 87)
Beep(250,250);
// El sonido tarda 250 ms completemos el segundo colocandoles una espera de 750ms
Sleep(750);
cout << aleatorio << " / "; // mostramos el número generado
}
}
1) Elabore un programa que permita determinar en que años desde el 2025 hasta el 2099 se repite la misma combinación de Mes, día y día de semana, por ejemplo:
Programa para determinar en que años se cumple la combinación día + mes + día de semana
Ingrese Mes = 7
Ingrese Dia de Mes = 20
Ingrese Dia de Semana (Dom=1 Lun=2 Mar=3 Mie=4 Jue=5 Vie=6 Sab=7) = 3
Los años que se presentan esta combinación entre 2025 y 2099 corresponden a:
2027 2032 2038 2049 2055 2060 2066 2077 2083 2088 2094
--------------------------------
Process exited after 10.41 seconds with return value 0
Presione una tecla para continuar . . .
12) Dado el siguiente programa indique en sus propias palabras que hace el programa
Solución
1)
/*Parcial Nro. 1 Semestre 2026-I
Programa para determinar años desde el 2025 hasta 2099 donde
se da la misma combinación día, mes y día de semana
Elaborado por Carlos Ferrer
Rev.: Oct 2025
*/
//Biblioteca para recibir datos y enviar datos a la consola (Pantalla negra)
#include <iostream>
using namespace std;
main()
{
int dia=1,mes=1,a=2025,Dia_s=4;
int diab,mesb,Dia_sb;
int bisiesto;
//Validamos el mes a ingresar
cout<<"Programa para determinar que a#os se cumple la combinación dia + mes + dia de semana"<<endl<<endl;
do
{
cout <<"Ingrese el mes a validar (1-12) = ";
cin >>mesb;
if (mesb<1 or mesb>12)
{
cout <<endl<<endl<<"Error.. el rango es de 1 a 12 !!!!"<<endl<<endl;
}
}
while (mesb<1 or mesb>12);
//Validamos el día a ingresar
do
{
cout <<"Ingrese el dia a validar (1-31) = ";
cin >>diab;
if (diab<1 or diab>31)
{
cout <<endl<<endl<<"Error.. el rango es de 1 a 31 !!!!"<<endl<<endl;
diab=32;
}
if (diab>30 and (mesb==4 or mesb==6 or mesb==9 or mesb==11))
{
cout <<endl<<endl<<"Error.. el mes indicado solo tiene 30 dias !!!!"<<endl<<endl;
diab=32;
}
else if (diab>29 and mesb==2)
{
cout <<endl<<endl<<"Error.. febrero solo tiene 28 dias o 29 días"<<endl<<endl;
diab=32;
}
}
while (diab<1 or diab>31);
//Validamos el día de la semana a ingresar
do
{
cout <<"Ingrese el dia de la semana a validar (Dom=1 Lun=2 Mar=3 Mie=4 Jue=5 Vie=6 Sab=7) = ";
cin >>Dia_sb;
if (Dia_sb<1 or Dia_sb>7)
{
cout <<endl<<endl<<"Error.. el rango es de 1 a 7 !!!!"<<endl<<endl;
}
}
while (Dia_sb<1 or Dia_sb>12);
system("cls");
cout <<"Programa para determinar que a#os se cumple la combinación dia + mes + dia de semana"<<endl<<endl;
cout <<"Dia = "<<diab<<" Mes = "<<mesb<<endl;
cout <<"Dia de Semana (Dom=1 Lun=2 Mar=3 Mie=4 Jue=5 Vie=6 Sab=7) = "<<Dia_sb<<endl<<endl;
//Determinamos los años en los cuales se cumple las mismas combinaciones
while(a<2099)
{
// bisiesto= divisible entre 4 y no es divisible entre 100 o es divisible entre 100 y 400
if ((a%4==0 and a%100!=0) or (a%100==0 and a%400==0))
{
bisiesto=1;
}
else
{
bisiesto=0;
}
//Incrementamos el día a revisar
dia=dia+1;
Dia_s=Dia_s+1;
/* Si es el octavo día activamos el turno (turno=1) de lo contrario
incrementamos el contador de 8 dias (1 día de turno siete libres)*/
if (Dia_s==8)
{
Dia_s=1;
}
/*Verificamos si el mes de 31 días se cumplió y
nos pasamos al mes siguiente*/
if (dia==31 and (mes==11 or mes==6 or mes==4 or mes==9))
{
dia=1;
mes=mes+1;
}
/*Verificamos si el mes de 28 dias + año Bisiesto
se cumplió y nos pasamos al mes siguiente*/
else if (dia>28 and mes==2 and bisiesto==0)
{
dia=1;
mes=mes+1;
}
/*Verificamos si el mes de 29 días + año Bisiesto
se cumplió y nos pasamos al mes siguiente*/
else if (dia>29 and mes==2 and bisiesto==1)
{
dia=1;
mes=mes+1;
}
/*Verificamos si el mes de 31 días
se cumplió y nos pasamos al mes siguiente*/
else if (dia==32)
{
dia=1;
mes=mes+1;
}
//Verificamos el cambio de año y nos cambiamos de año
if (mes==13)
{
mes=1;
a=a+1;
}
//Presentamos los resultados
if (dia==diab and mes==mesb and Dia_s==Dia_sb)
{
cout <<a<<" ";
}
}
}
2)
El programa presenta en pantalla los primeros veinte (20) números a partir de 100000 que al sacarle la raíz cuadrada el resultado genere un numero:
a.- Entero (sin parte decimal)
b.- Primo
c.- Que termine siete (7).
/*Programa tutorial inicial para el manejo de las variables tipo cadena de caracteres
autor: Carlos Ferrer
Rev. 1
Nota: Como es un programa Tutorial el mismo se va explicando
*/
#include <iostream>
#include <locale.h> //LIBRERIA PARA TRABAJAR CON LOS CARACTERES ACENTUADOS Y LA LETRA Ñ
using namespace std;
main()
{
char a;
int i,j;
setlocale(LC_ALL, "spanish"); //SETEAR EL LEGUAGE EN ESPAÑOL
cout <<"Programa elaborado por el Prof. Carlos Ferrer"<<endl;
cout <<"Rev Cs - abr 2025 "<<endl;
cout <<"Manejo de Variables Char (Caracter) y String (Cadena de Caracteres)"<<endl<<endl;
system ("pause");
system("cls");
cout <<"************************** (1) *****************************"<<endl<<endl;
cout <<"Las variables tipo Char se caracterizan por que almacenan"<<endl;
cout <<"un carácter alfanumérico o símbolo especial."<<endl<<endl;
cout <<"Las variables tipo Char se declaran de la siguiente forma"<<endl;
cout <<"char var1"<<endl<<endl;
cout <<"Se le puede asignar un valor directo usando var1='A', el dato"<<endl;
cout <<"debe ser colocado dentro de comillas simples"<<endl<<endl;
cout <<endl<<"por ejemplo"<<endl<<endl<<"caracter='a';"<<endl;
cout <<"caracter='1';"<<endl;
cout <<"caracter='*';"<<endl<<endl;
system ("pause");
system("cls");
cout <<"************************** (2) *****************************"<<endl<<endl;
cout <<"Si a Las variables tipo Char se le asigna un valor numérico (Sin comillas simples)"<<endl;
cout <<"la variable tomará el carácter de la tabla ascii de tu computadora"<<endl;
cout <<"correspondiente a esa posición"<<endl<<endl;
cout <<"Por ejemplo variable=78"<<endl;
cout <<"Para este caso el valor almacenado corresponde a la letra N en mayúscula"<<endl<<endl;
cout <<"este carácter ocupa la posición 78 en la tabla ascii de tu computador"<<endl<<endl;
cout <<""<<endl<<endl;
system ("pause");
system("cls");
cout <<"************************** (3) *****************************"<<endl<<endl;
cout <<"Procedamos a imprimir los caracteres de la tabla ascii ubicados "<<endl;
cout <<"en el rango desde el Nro.= 30 hasta el 199 "<<endl<<endl;
system ("pause");
for (i=30;i<=199;i=i+1)
{
a=i;
cout <<i<<"="<<a<<" ";
if(j==10)
{
j=0;
cout <<endl;
}
j=j+1;
}
cout <<endl<<"Nota: Observe como las letras mayúsculas y minúsculas "<<endl;
cout <<"estan separadas por 32 posiciones (80=P y 112=p) "<<endl<<endl;
system ("pause");
system("cls");
cout <<"************************** (4) *****************************"<<endl<<endl;
cout <<endl<<"Si usted intenta meter en una variable CHAR más de un carácter"<<endl;
cout <<"el carácter almacenado será el último de la cadena "<<endl;
cout <<"por ejemplo caracter1='Carlos' el valor almacenado será"<<endl;
cout <<"el carácter 's'"<<endl<<endl;
cout <<"Sin embargo el compilador te dará una advertencia (warning) "<<endl;
cout <<"indicando que la variable tiene overflow "<<endl;
cout <<"Recuerde que esto no impide que el programa compile "<<endl<<endl;
system ("pause");
system("cls");
cout <<"************************** (5) *****************************"<<endl<<endl;
cout <<endl<<"Si a una variable tipo char (sin comillas) se le aplica una operación"<<endl;
cout <<"matemática de suma o resta, básicamente lo que hacemos es "<<endl;
cout <<"cambiar de posición de la tabla ascci"<<endl;
cout <<"Por ejemplo "<<endl<<endl;
cout <<"Char var2= 'B'"<<endl;
cout <<"var2= var2+32"<<endl<<endl;
cout <<"Después de esa operación matemática la variable presentará"<<endl;
cout <<"el siguiente valor var2='b'"<<endl<<endl;
system ("pause");
system("cls");
cout <<"************************** (6) *****************************"<<endl<<endl;
cout <<"Las variables tipo string se caracterizan por que almacenan"<<endl;
cout <<"varios caracteres alfanumérico o símbolo especiales, incluyendo espacios en blanco"<<endl<<endl;
cout <<"Las variables tipo string se declaran de la siguiente forma"<<endl;
cout <<"string var2;"<<endl<<endl;
a=34;
cout <<"Se le puede asignar un valor directo de la siguiente manera: var2="<<a<<"Caracas"<<a<<"; el dato"<<endl;
cout <<"debe ser colocado dentro de comillas dobles"<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (7) *****************************"<<endl<<endl;
cout <<"Una variable string se recomienda sea declarada dentro del "<<endl;
cout <<"programa principal Main o dentro de las funciones."<<endl<<endl;
cout <<"No es recomendable declararla como una variable Global."<<endl<<endl;
cout <<"(Afuera del Main y de las funciones)"<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (8) *****************************"<<endl<<endl;
cout <<"El compilador de Dev C++ entiende a una variable string"<<endl;
cout <<"como un arreglo tipo Char[n] donde n será la cantidad"<<endl;
cout <<"de letras del string menos 1, dado que la primera posición"<<endl;
cout <<"se entiende como la posición 0."<<endl<<endl;
cout <<"Veamos un ejemplo:"<<endl;
cout <<"string cadena1"<<endl;
cout <<"cadena1"<<a<<"Carlos"<<a<<endl<<endl;
cout <<"cadena1[0]='C'"<<endl;
cout <<"cadena1[1]='a'"<<endl;
cout <<"cadena1[2]='r'"<<endl;
cout <<"cadena1[3]='l'"<<endl;
cout <<"cadena1[4]='o'"<<endl;
cout <<"cadena1[5]='s'"<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (9) *****************************"<<endl<<endl;
cout <<"Dos variables tipo string se pueden concatenar en otra variable"<<endl;
cout <<"usando el operador (+)"<<endl;
cout <<"veamos el ejemplo:"<<endl<<endl;
cout <<"string var1,var2,var3;"<<endl;
cout <<"var1="<<a<<"Carlos"<<a<<endl;
cout <<"var2="<<a<<"Ferrer"<<a<<endl;
cout <<"var3="<<"var1 +"<<a<<" "<<a<<"+ var2;"<<endl;
cout <<"El valor final de Var3 corresponderá"<<endl;
cout <<"Var3= "<<a<<"Carlos Ferrer"<<a<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (10) *****************************"<<endl<<endl;
cout <<"Si usted intenta leer una variable string"<<endl;
cout <<"desde la consola usando la instrucción cin"<<endl;
cout <<"el dato se almacenara hasta el primer espacio en blanco"<<endl<<endl;
cout <<"Por ejemplo:"<<endl<<endl;
a='"';
cout <<"string var2;"<<endl;
cout <<"cout <<"<<a<<"ingrese nombre y apellido"<<a<<"<<endl;"<<endl;
cout <<"cin >>var2;"<<endl<<endl;
cout <<"Si el usuario ingresa "<<a<<"Pedro Guerra"<<a<<endl;
cout <<"El único dato que se almacenará en la variable var2 será= "<<a<<"Pedro"<<a<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (10) Continuación *****************************"<<endl<<endl;
cout <<"Para poder almacenar la cadena de caracteres completa"<<endl;
cout <<"usted debe usar una una instrucción de la biblioteca "<<a<<"iostream"<<a<<endl;
cout <<"que permite leer líneas completa: getline()"<<endl;
cout <<"dentro de los paréntesis usted indicará que ejecutará la función"<<endl;
cout <<"Console input y la variable que recibirá el dato: getline(cin,var2);"<<endl;
cout <<"modifiquemos el código de la forma correcta"<<endl<<endl;
cout <<"string var2;"<<endl;
cout <<"cout <<"<<a<<"ingrese nombre y apellido"<<a<<"<<endl;"<<endl;
cout <<"cin.ignore(); /*Se se utiliza para ignorar lo que hay en el buffer o un dato anterior"<<endl;
cout <<" Normalmente el primer getline no requiere el comando ignorar*/"<<endl;
cout <<"getline(cin,var2);"<<endl<<endl;
cout <<"Si el usuario ingresa "<<a<<"Pedro Guerra"<<a<<endl;
cout <<"El dato que se almacenará en la variable var2 será= "<<a<<"Pedro Guerra"<<a<<endl;
cout <<"(Incluyendo el espacio en blanco como un carácter)"<<a<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (11) *****************************"<<endl<<endl;
cout <<"Nosotros podemos extraer una cadena de caracteres a partir de otra"<<endl;
cout <<"cadena de caracteres usando el parámetro "<<a<<"substr()"<<a<<endl;
cout <<"este parámetro actúa sobre el dato a extraer"<<endl;
cout <<"dentro de los paréntesis se indica en principio la posición del carácter"<<endl;
cout <<"a partir del cual se ejecutará la extracción, veamos un ejemplo:"<<endl<<endl;
cout <<"string var1,var2;"<<endl;
cout <<"var1="<<a<<"123456 89ABCD"<<a<<";"<<endl;
cout <<"var2=var1.substr(4);"<<endl<<endl;
cout <<"En var2 se guardará ="<<endl;
cout <<a<<"56 89ABCD"<<a<<endl<<endl;
cout <<"Recuerde que las cadenas de caracteres arrancan"<<endl;
cout <<"en la posición Cero (0), por eso el carácter de la posición 4 es el cinco (5)"<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (11) Continuación *****************************"<<endl<<endl;
cout <<"Al parámetro substr se le puede agregar en los paréntesis "<<endl;
cout <<"un segundo elemento que correspondería a la cantidad de"<<endl;
cout <<"caracteres que vas a extraer"<<endl<<endl;
cout <<"veamos un ejemplo:"<<endl<<endl;
cout <<"string var1,var2;"<<endl;
cout <<"var1="<<a<<"Profesión= Ingeniero Industrial"<<a<<";"<<endl;
cout <<"var2=var1.substr(11,9);"<<endl<<endl;
cout <<"En var2 se guardará ="<<endl;
cout <<a<<"Ingeniero"<<a<<endl<<endl;
cout <<"nota: recuerde la posición de la frase arranca en (0) cero"<<endl;
system ("pause");
system ("cls");
cout <<"************************** (12) *****************************"<<endl<<endl;
cout <<"El parámetro "<<a<<"size()"<<a<<" retorna la cantidad de caracteres"<<endl;
cout <<"de una cadena de caracteres"<<endl;
cout <<"veamos un ejemplo:"<<endl<<endl;
cout <<"string var1;"<<endl;
cout <<"int cantidad;"<<endl;
cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;
cout <<"cantidad=var1.size();"<<endl<<endl;
cout <<"En cantidad se guardará = 18"<<endl<<endl;
cout <<"Recuerde que las cadenas de caracteres arrancan"<<endl;
cout <<"en la posición Cero (0), como esta cadena tiene 18 caracteres"<<endl;
cout <<"terminará en la posición diecisiete (17)"<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (13) *****************************"<<endl<<endl;
cout <<"El parámetro "<<a<<"find()"<<a<<" retorna la posición en la que aparece"<<endl;
cout <<"una cadena de caracteres dentro de otra"<<endl;
cout <<"veamos un ejemplo:"<<endl<<endl;
cout <<"string var1;"<<endl;
cout <<"int Pos;"<<endl;
cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;
cout <<"Pos=var1.find("<<a<<"Pru"<<a<<");"<<endl<<endl;
cout <<"En Pos se guardará = 12"<<endl<<endl;
cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;
cout <<"de caracteres "<<a<<"Pru"<<a<<" dentro de var1"<<endl<<endl;
system ("pause");
system("cls");
cout <<"************************** (13) Continuación *****************************"<<endl<<endl;
cout <<"veamos otro ejemplo:"<<endl<<endl;
cout <<"string var1,var2;"<<endl;
cout <<"int Pos;"<<endl;
cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;
cout <<"var2="<<a<<" e"<<a<<";"<<endl;
cout <<"Pos=var1.find(var2);"<<endl<<endl;
cout <<"En Pos se guardará = 5"<<endl<<endl;
cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;
cout <<"de caracteres "<<a<<" e"<<a<<" dentro de var1"<<endl<<endl;
cout <<"Recuerde los espacios en blanco son caracteres existentes"<<endl<<endl;
system ("pause");
system ("cls");
cout <<"************************** (13) Continuación *****************************"<<endl<<endl;
cout <<"El parámetro find() tambien puede retornar la posición en la que aparece"<<endl;
cout <<"una cadena de caracteres a partir de una posición específica"<<endl;
cout <<"veamos un ejemplo:"<<endl<<endl;
cout <<"string var1;"<<endl;
cout <<"int Pos;"<<endl;
cout <<"var1="<<a<<"Esto es una Prueba especial"<<a<<";"<<endl;
cout <<"Pos=var1.find("<<a<<"es"<<a<<";10);"<<endl<<endl;
cout <<"En Pos se guardará = 19"<<endl<<endl;
cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;
cout <<"de caracteres "<<a<<"es"<<a<<" dentro de var1 después de la decima posición"<<endl<<endl;
cout <<"Nota: Observen como la primera cadena "<<a<<"es"<<a<<" se ignora porque esta antes de la posición 10"<<endl<<endl;
system ("pause");
system("cls");
cout <<"************************** (14) Actividad del estudiante *****************************"<<endl<<endl;
cout <<"Elabore un programa que permita capturar desde la consola"<<endl;
cout <<"una cadena de caracteres de 5 palabras en una variable string."<<endl<<endl;
cout <<"Este programa debera sustituir todas las vocales de las 5 palabras por asteriscos y después"<<endl;
cout <<"invertir el sentido de cada palabra"<<endl<<endl;
cout <<"Por ejemplo:"<<endl<<endl;
cout <<"Ingrese frase de tres palabras = La Florencia Caracas"<<endl<<endl;
cout <<"Resultado = *L **cn*r*lF s*c*r*C"<<endl<<endl;
cout <<"ÉXITO!!!!"<<endl<<endl;
system ("pause");
system ("cls");
}
Programa Solicitado al final del programa tutorial
/*Programa solicitado en tutorial inicial para el manejo de las variables
tipo cadena de caracteres
autor: Carlos Ferrer
Rev. Octubre de 2025
*/
#include <iostream>
#include <locale.h> //LIBRERIA PARA TRABAJAR CON LOS CARACTERES ACENTUADOS Y LA LETRA Ñ
using namespace std;
main()
{
string frase;
char aux;
int i, j, posicion, cantidad,cant_palabras,inicio;
string palabras[15];
cout <<"Ingrese Frase de 5 palabras como mínimo = ";
getline (cin,frase);
//contamos las palabras
for (i=0;i<frase.size();i=i+1)
{
if (frase[i]==' ')
{
cant_palabras=cant_palabras+1;
}
}
//Extraemos las palabras de la frase original
i=1;
posicion=0;
inicio=posicion;
cantidad=0;
while (posicion<=frase.size())
{
if (frase[posicion]==' ' or posicion==frase.size())
{
palabras[i]=frase.substr(inicio,cantidad);
posicion=posicion+1;
inicio=posicion;
cantidad=0;
i=i+1;
}
else
{
posicion=posicion+1;
cantidad=cantidad+1;
}
}
//Volteamos cada palabra
for (j=1;j<=i;j=j+1)
{
for (posicion=0;posicion<palabras[j].size()/2;posicion=posicion+1)
{
aux=palabras[j][posicion];
palabras[j][posicion]=palabras[j][palabras[j].size()-1-posicion];
palabras[j][palabras[j].size()-1-posicion]=aux;
}
}
//Concatenamos las nuevas palabras
frase=palabras[1];
j=2;
while (palabras[j].size()>0)
{
frase=frase+" "+palabras[j];
j=j+1;
}
//Reemplazamos las vocales por asterisco
for (i=0;i<frase.size();i=i+1)
{
if (frase[i]=='a' or frase[i]=='e' or frase[i]=='i' or frase[i]=='o' or frase[i]=='u')
{
frase[i]='*';
}
if (frase[i]=='A' or frase[i]=='E' or frase[i]=='I' or frase[i]=='O' or frase[i]=='U')
{
frase[i]='*';
}
if (frase[i]=='á' or frase[i]=='é' or frase[i]=='í' or frase[i]=='ó' or frase[i]=='ú')
{
frase[i]='*';
}
if (frase[i]=='Á' or frase[i]=='É' or frase[i]=='Í' or frase[i]=='Ó' or frase[i]=='Ú')
{
frase[i]='*';
}
}
//Presentamos la solución
cout <<"Frase con las palabras invertidas y las vocales sustituidas por * ="<<endl<<endl;
cout <<frase<<endl<<endl;
system("pause");
}