Anda di halaman 1dari 17

TAREA

ALGORITMOS
Desarrollar todo en Word - URGENTE

Pseudocdigo
C++
Diagrama de Flujo

Lo envan a mi correo:
uap_pucuhuayla@outlook.es

f_pucuhuayla@doc.uap.edu.pe

Fecha: hasta la hora del examen oral


PROBLEMAS
1. Leer tres nmeros que denoten una fecha (da, mes, ao). Comprobar que

es una fecha vlida. Si no es vlida escribir un mensaje de error. Si es


vlida escribir la fecha cambiando el nmero del mes por su nombre. Ej. si
se introduce 1- 2- 2006, se deber imprimir 1 de febrero de 2006. El ao
debe ser mayor que 0.
Pseudocodigo
Var dia, mes, ao: numerica
Inicio
Escribir "Introduce el dia"
Leer dia
Escribir "Introduce el mes"
Leer mes Escribir "Introduce el ao"
Leer ao
//comprobamos que la fecha es correcto
si ((dia<=31 y dia>=0) AND (mes<=12 y mes>=0) AND ao>0) Entonces
Escribir dia sin saltar
//usamos el segun sea para escribir el mes
Segun mes Hacer
1:
escribir " de enero de" sin saltar
2:
escribir " de febrero de " sin saltar
3:
escribir " de marzo de " sin saltar
4:
escribir " de abril de " sin saltar
5:
escribir " de mayo de " sin saltar
6:
escribir " de junio de " sin saltar
7:
escribir " de julio de " sin saltar

8:
escribir " de agosto de " sin saltar
9:
escribir " de septiembre de " sin saltar
10:
escribir " de octubre de " sin saltar
11:
escribir " de noviembre de " sin saltar
12:
escribir " de diciembre de " sin saltar
FinSegun
Escribir ao
Sino
Escribir "error"
FinSi
Fin

C++
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
int dia, mes, anio;
string mes_letras;
cout << "Ingrese la fecha en formato dd - mm - yyyy:\n";
// Dia
do
{

cout << "dia: ";


cin >> dia;

if (dia < 1 || dia > 31)


{
cout << "Dia debe estar entre 1 y 31\nVuelva a ingresar\n";
}
}while (dia < 1 || dia > 31);
// Mes
do
{

cout << "Mes: ";


cin >> mes;

if (mes < 1 || mes > 12)


{
cout << "Mes debe estar entre 1 y 12\nVuelva a ingresar\n";
}
}while (mes < 1 || mes > 12);
// Ao
do
{

cout << "Anio: ";


cin >> anio;

if (anio < 1)
{
cout << "Anio debe ser mayor que 0\n";
}
}while (anio < 1);
// Colocamos el mes en letras
switch (mes)
{
case 1:
mes_letras = "enero";
break;
case 2:
mes_letras = "febrero";
break;
case 3:
mes_letras = "marzo";
break;
case 4:
mes_letras = "abril";
break;
case 5:
mes_letras = "mayo";
break;
case 6:
mes_letras = "junio";
break;
case 7:
mes_letras = "julio";
break;
case 8:
mes_letras = "agosto";
break;
case 9:
mes_letras = "setiembre";
break;
case 10:
mes_letras = "octubre";
break;
case 11:
mes_letras = "noviembre";
break;
case 12:
mes_letras = "diciembre";
break;
}
// Retornamos la fecha en formato dd - mmmm - yyyy
cout << "La fecha ingresada es: " << dia << " de " << mes_letras << " de " << anio
<< "\n";
}

2.

return 0;

Algoritmo que dado un ao, nos diga si es bisiesto o no. Un ao es

bisiesto bajo las siguientes condiciones:


Un ao divisible por 4 es bisiesto y no debe ser divisible entre
100.
Si un ao es divisible entre 100 y adems es divisible entre 400,
tambin resulta bisiesto.
Pseudocodigo:
Var ao: numerica
Inicio
Escribir "Introduce un ao"
leer ao
si (ao MOD 4=0 y ao MOD 100<>0)Entonces
Escribir "El ao " ao " es bisiesto"
Sino
si (ao MOD 400=0 y ao MOD 100=0) Entonces
Escribir "El ao " ao " es bisiesto"
Sino
escribir "El ao " ao " no es bisiesto"
FinSi
FinSi
Fin

C++
#include "stdafx.h"
#include <iostream>
using namespace std;
void anio_bisiesto_cercano(int a)
{
int i, menor, mayor;
// Buscamos menor ao bisiesto
for(i = a; ; i--)
{
if (i % 4 == 0 && (i % 400 == 0 || i % 100 != 0))
{
menor = i;
break;
}
}
// Buscamos mayor ao bisiesto
for (i = a; ; i++)
{
if (i % 4 == 0 && (i % 400 == 0 || i % 100 != 0))
{
mayor = i;
break;
}
}

// Imprimimos los aos bisiestos anterior y posterior


cout << menor << " y " << mayor << "\n";

int main()
{
int anio;

cout << "Ingresa un anio: ";


cin >> anio;
if (anio % 4 == 0 && (anio % 400 == 0 || anio % 100 != 0))
{
cout << "Si es bisiesto\n";
}
else
{
cout << "No es bisiesto, los anios bisiestos mas cercanos son: ";
anio_bisiesto_cercano(anio);
}
return 0;
}

3. Una solicitante de trabajo presenta cinco prueba distintas (La puntuacin

mxima es 10). Se clasifican de la siguiente forma: CONTRATADO, si por


lo menos tienes dos pruebas con 9. ARCHIVAR si no se contrata pero
tiene todas las pruebas con al menos 7. RECHAZAR cuando ni se
contrata ni se archiva. Escribir un algoritmo que tenga como entrada el
nombre y las clasificaciones del solicitante y muestre el nombre y la
clasificacin, as como el total de puntos obtenidos en todas las
pruebas.
Pseudocodigo
Para Variable = Valor Inicial Hasta Valor Final................................ Fin Para
Inicio
SumaContratado = 0
SumaArchivar = 0
Suma = 0
Leer (Nombre)
Para Indice = 1 Hasta 5
Leer (Nota)
Si Nota 9 Entonces
SumaContratado = SumaContratado + 1
SumaArchivado = SumaArchivado + 1
Si No Si Nota 7 Entonces
SumaArchivado = SumaArchivado + 1
Fin Si
Suma = Suma + Nota
Fin Para
Mostrar (Nombre)
Si SumaContratado 2 Entonces
Mostrar (CONTRATADO)
Si No Si SumaArchivado = 5 Entonces
Mostrar (ARCHIVAR)

C++
#include "stdafx.h"
#include <iostream>

#include <string>
using namespace std;
int main()
{
int resultado, cant_9 = 0, cant_7 = 0, puntaje_total = 0;
string solicitante, situacion;
cout << "Nombre del solicitante: ";
cin >> solicitante;
cout << "\nIngrese los resultados de las 5 pruebas: \n";
for (int i = 1; i <= 5; i++)
{
do
{
cout << "Prueba " << i << ": ";
cin >> resultado;
if (resultado < 1 || resultado > 10)
{
cout << "Los resultados de las pruebas debe estar entre 1
y 10\n";

}
} while (resultado < 1 || resultado > 10);
// Contamos la cantidad de 9s, 7s que obtiene
if (resultado >= 9)
{
cant_9 = cant_9 + 1;
}
if (resultado >= 7)
{
cant_7 = cant_7 + 1;
}

// Almacenamos el puntaje total


puntaje_total = puntaje_total + resultado;

if (cant_9 >= 2)
{
situacion = "CONTRATADO";
}
else if (cant_7 == 5)
{
situacion = "ARCHIVAR";
}
else
{
situacion = "RECHAZAR";
}
// Mostramos la situacin del solicitante
cout << "\nSolicitante: " << solicitante << "\n";
cout << "Clasificacion: " << situacion << "\n";
cout << "Puntaje obtenido: " << puntaje_total << "\n";
return 0;
}

4. Escribir un algoritmo que lea dos nmeros cualesquiera e invoque una

funcin denominada MULTIPLO que determine si alguno de los nmeros


ledos el mltiplo del otro. El algoritmo deber mostrar un mensaje que
salga el resultado de la comprobacin
Pseudocodigo
Funcin MULTIPLO (A, B)
Si A MOD B = 0 OR B MOD A = 0 Entonces
MULTIPLO = Si es mltiplo
Si No
MULTIPLO = No es mltiplo
Fin Si
Fin Funcin
Inicio
Leer (X, Y)
Respuesta = MULTIPLO (X, Y)
Mostrar (Respuesta)
Fin

C++
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
void multiplo(int num1, int num2)
{
if (num1 % num2 == 0)
{
cout << num2 << " es multiplo de " << num1;
}
else if (num2 % num1 == 0)
{
cout << num1 << " es multiplo de " << num2;
}
else
{
cout << "Los numeros dados no son multiplos";
}
}
int main()
{
int num_1, num_2;
cout << "Ingrese dos numeros positivos para ver si uno es multiplo del otro\n";
cout << "Numero 1: ";
cin >> num_1;
cout << "Numero 2: ";
cin >> num_2;
cout << "\n";
multiplo(num_1, num_2);
cout << "\n";
return 0;
}

5. Escribir un algoritmo que: A) Lea un nmero entero positivo de

cuatro (4) dgitos. B) Invoque una funcin denominada ORDEN que


invierta el orden de dichos dgitos (Ejemplo: 1357 => 7531) y C)
Muestre el nmero ledo y el nmero invertido
Pseudocodigo
Funcin ORDEN(Nmero)
C1 = Nmero \ 1000
Nmero = Nmero MOD 1000
C2 = Nmero \ 100
C3 = Nmero \ 10
Nmero = Nmero MOD 10
ORDEN = Nmero * 1000 + C3*100 + C2*10 + C1
Fin Funcin
Inicio
Leer (Numeritos)
Respuesta = ORDEN (Numeritos)
Mostrar (Respuesta)

C++
int orden(int numero)
{
int inv = 0;
while(numero > 0)
{
inv = inv*10 + (numero%10);
numero = numero/10;
}
return inv;
}
int main()
{
int num;
cout << "Ingresar un numero entero : ";
cin >> num;
cout << "Numero invertido : " << orden(num) << "\n";
}

return 0;

6. Hacer un algoritmo que A) Lea cuatro (4) nmeros, B) Invoque dos

funciones, una para determinar el mximo comn divisor (MCD) y la


otra para determinar el mnimo
comn
mltiplo
(MCM)
de
los
nmeros ledos
y
C) Muestre los nmeros ledos y el valor de MCD y
del MCM de los mismos.
Pseudocodigo

Inicio
Leer (W, X, Y, Z)
Respuesta = (MCM (W, X, Y, Z), MCD (W, X, Y, Z))
Mostrar (Respuesta)
Fin
Funcin MCM (A, B, C, D)
Si A > B AND A > C AND A > D Entonces
Mayor = A
Si No Si B > A AND B > C AND B > D Entonces
Mayor = B
Si No Si C > A AND C > B AND C > D Entonces
Mayor = C
Si No
Mayor = D
Fin Si
MCM = 0
Repetir
Si Mayor MOD A=0 AND Mayor MOD B=0 AND Mayor MOD C=0 AND Mayor MOD D=0 Entonces
MCM = Mayor
Si No
Mayor = Mayor + 1
Fin Si
Hasta Que MCM <> 0
Fin Funcin
Funcin MCD (A, B, C, D)
Si A < B AND A < C AND A < D Entonces
Menor = A
Si No Si B < A AND B < C AND B < D Entonces
Menor = B
Si No Si C < A AND C < B AND C < D Entonces
Menor = C
Si No
Menor = D
Fin Si
MCD = 0
Repetir
Si Mayor MOD A=0 AND Mayor MOD B=0 AND Mayor MOD C=0 AND Mayor MOD D=0 Entonces
MCD= Menor
Si No
Menor = Menor - 1
Fin Si
Hasta Que MCD <> 0
Fin Funcin

C++
int mcd(int a, int b)

return (b == 0)? a : mcd(b, a % b);

}
int mcm(int a, int b)
{
return (a*b)/mcd(a,b);
}
int main()
{
int num1, num2, minimo, maximo;
cout << "Programa que calcula el MCD y MCM de dos numeros\n\n";
cout << "Ingrese numero 1: ";
cin >> num1;
cout << "Ingrese numero 2: ";
cin >> num2;
maximo = mcd(num1, num2);
if(maximo < 0)
{
maximo *= -1;
}
minimo = mcm(num1, num2);
if(minimo < 0)
{
minimo *= -1;
}
cout << "\nMCM(" << num1 << ", " << num2 << ") = " << minimo << "\n";
cout << "MCD(" << num1 << ", " << num2 << ") = " << maximo << "\n\n";
}

7.

return 0;

Disear un algoritmo que calcule cuanto de peso le recomienda un


nutricionista bajar a su paciente al mes de acuerdo a su sobrepeso y
gnero:

Kilos
de
sobrepe
15
6 10
11 ms

Gnero
Hombr
e
0.8%
0.7%
0.6%

Pseudocodigo

Proceso sin_titulo
Escribir "ingrese el tipo de genero:";
Escribir "hombre (h) ";
Escribir "mujer (m) ";
Leer g;
Escribir " ingrese su sobrepeso ";
Leer s;

Mujer
0.5%
0.4%
0.3%

Si g='h' Entonces
Si s>=1 & s<=5 Entonces
r<-s*0.8;
FinSi
Si s>=6 & s<=10 Entonces
r<-s*0.7;
FinSi
Si s>=11 Entonces
r<-s*0.6;
FinSi
FinSi
Si g='m' Entonces
Si s>=1 & s<=5 Entonces
r<-s*0.5;
FinSi
Si s>=6 & s<=10 Entonces
r<-s*0.4;
FinSi
Si s>=11 Entonces
r<-s*0.3;
FinSi
FinSi
Escribir " se recomineda bajar: ",r;
FinProceso

C++
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
float sobrepeso_hombre(float peso_extra)
{
if (peso_extra <= 5)
return 0.8;
else if (peso_extra <= 10)
return 0.7;
else
return 0.6;
}
float sobrepeso_mujer(float peso_extra)
{
if (peso_extra <= 5)
return 0.5;
else if (peso_extra <= 10)
return 0.4;
else
return 0.3;
}
int main()

cout
cout
cout
cout
cout

<<
<<
<<
<<
<<

"Nutricionista (recomendaciones de bajar peso)\n";


"Kilos
Hombres Mujeres\n";
"1 - 5
0.8%
0.5%\n";
"6 - 10
0.7%
0.4%\n";
"11 - ms 0.6%
0.3%\n\n";

int sexo;
float peso, porcentaje;
cout << "Ingrese los siguientes datos";
cout << "Sexo (Hombre 1, Mujer 0) = ";
cin >> sexo;
cout << "Sobrepeso: = ";
cin >> peso;
if (sexo == 1)
porcentaje = sobrepeso_hombre(peso);
else
porcentaje = sobrepeso_mujer(peso);
cout << "Debes perder un " << porcentaje << "% de tu peso\n\n";
return 0;
}

8.

Disear un algoritmo que calcule el monto que recaud el promotor del


concierto de Madonna en su ltimo concierto donde hubo 30,000
asistentes y 3 tipos de entradas.
Entradas
VIP
Platea
Mezanine

Precio $
900
600
300

Pseudocodigo
Proceso sin_titulo
Escribir " ingrese la cantidad de
asistentes"; Leer n;
Escribir " ingrese la cantidad de asistentes ZONA
VIP "; Leer v;
Escribir " ingrese la cantidad de asistentes ZONA
PLATEA ";
Leer p;
Escribir "ingrese la cantidad de asistentes ZONA
MEZANINE" ; Leer m;
montov<-v*900;
montop<-p*600;
montom<-m*300;
montototal<-montov+montop+montom;
Escribir "el monto recaudado
es :",montototal; Fin de proceso

C++
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout
cout
cout
cout
cout

<<
<<
<<
<<
<<

"Concierto de Madonna\n---------------------\n";
"Precio de entradas\n";
"Vip: $900\n";
"Platea: $600\n";
"Mezanine: $300\n\n";

int vip, platea, mezanine, dinero;


cout << "Ingrese la cantidad de entradas vendidas (30 000 asistentes) en cada estacion\n";
cout << "Vip: ";
cin >> vip;
cout << "Platea: ";
cin >> platea;
mezanine = 30000 - vip - platea;
cout << "Mezanine: " << mezanine << "\n\n";
dinero = vip * 900 + platea * 600 + mezanine * 300;
cout << "El dinero recaudado es de $ " << dinero << "\n\n";
return 0;
}

9.

Guardar en una matriz de 5 x 6 nmeros enteros, se pide calcular la


cuantos nmeros mltiplos de 3 hay en la matriz.
15
2
17
42
26
Respuesta:
edad es: 10

21
1
16
34
53

30
8
14
45
54

18
13
36
43
62

22
12
5
19
63

23
11
110
27
90

La cantidad de alumnos del primer ciclo mayores de

Pseudocodigo
Definir num_multidimensional como entero;
Definir num_unidimensional como entero;
Definir FILAS como entero
Definir COLUMNAS Como Entero
//Definimos las filas y columnas del array por teclado
escribir "Introduce las filas del array"
leer FILAS
escribir "Introduce las columnas del array"

leer COLUMNAS
//Definimos el array
Dimension num_multidimensional[FILAS, COLUMNAS]
Dimension num_unidimensional[FILAS*COLUMNAS]
//Invocamos laa funciones
rellenaArray(num_multidimensional, FILAS, COLUMNAS)
copiaArray(num_multidimensional,num_unidimensional, FILAS, COLUMNAS)
mostrarArray( num_unidimensional, FILAS, COLUMNAS)
FinProceso

SubProceso mostrarmultiplos( num, FILAS )


Para i<-1 Hasta FILAS Con Paso 1 Hacer
Si(num[i]%3==0)
i=i+1;
escribir " La cantidad de mltiplos de 3 ",i]
Fin Para
Fin SubProceso

C++
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int A[6][7], i, j, k = 0;
cout << "Introduzca valores de la matriz 5x6 " << endl;
{

for (i = 1; i < 6 ; i++)


for (j = 1; j < 7 ; j++)
{
cout << "A[" << i << ", " << j << "] = ";
cin >> A[i][j];
}
// Buscamos la cantidad de multiplos de 3
for (i = 1 ; i < 6 ; i++)
{
for
(j = 1 ; j < 7 ; j++)
{
if (A[i][j] % 3 == 0)
{
k = k + 1;
}
}

}
cout << "\nHay " << k << " multiplos de 3\n";
return 0;
}

10. Guardar en una matriz cuadrada de tamao 5 nmeros enteros de tres


dgitos.
Mostrar los dgitos que ocupan el lugar de las centenas de los nmeros
ubicados en filas pares con columnas impares. Como se muestra la tabla.
Finalmente, ordenar el vector resultado en forma descendente y mostrarlo.
365
217
122
787
895

453
383
987
645
432

756
651
432
998
332

345
358
388
847
634

863
532
745
456
589

Respuesta:
5

Pseudocodigo
Proceso sin_titulo
Dimension b[6],
a[5,5]; K<-1;
Escribir 'ingresenel tamao de la
matriz'; Leer n;
Para J<-1 Hasta 5 Hacer
Para I<-1 Hasta 5 Hacer
Leer a[I,J];
FinPara
FinPara
Para I<-1 Hasta 5 Hacer
Para J<-1 Hasta 5 Hacer
Escribir "
",a[I,J];
FinPara
FinPara
Para I<-1 Hasta 5 Hacer
Para J<-1 Hasta 5 Hacer
Si J%2=0 & I%2>0 Entonces
b[K]<-(a[I,J]/100);
K<-K+1;
FinSi
FinPar
a
FinPara

UAP

Docente: Mg. Flix Pucuhuayla Revatta

Escribir 'los dgitos que ocupan el lugar de las centenas de


los nmeros ubicados en filas pares con columnas
impares';
Para I<-1 Hasta 6 Hacer
Escribir " ",b[I];
FinPara
FinProceso
C++
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int A[6][6], i, j, B[7], k = 0, temp;
cout << "Introduzca valores de la matriz 5x5 " << endl;
for (i = 1; i < 6 ; i++)
{

for (j = 1; j < 6 ; j++)


{
cout << "A[" << i << ", " << j << "] = ";
cin >> A[i][j];
}

}
// Almacenamos los numeros de filas pares con columnas impares A21/A23/A25
//
A41/A43/A45
for (i = 1 ; i < 6 ; i++)
{
for
(j = 1 ; j < 6 ; j++)
{
if (i%2 == 0 && j%2 != 0)
{
k = k + 1;
// Seleccionamos las centenas del numero seleccionado
B[k] = A[i][j];
}
}
}
// Ordenamos los datos del arreglo
for (i = 1; i < (7 - 1); i++)
{
for (j = i + 1; j < 7; j++)
{
if (B[j] > B[i])
{

UAP

}
}

temp =B[j];
B[j] = B[i];
B[i] = temp;

// Imprimimos los datos


for (i = 1; i < 7; i++)
{
cout << B[i] << ", ";
}
cout << "\n";
return 0;
}

Docente: Mg. Flix Pucuhuayla Revatta