You are on page 1of 91

C++ FISI UNMSM

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA
CURSO: C++
MODULO 01: Introduccin
!u" "# un $ro%&"'()
Un problema es definido por un conjunto de hiptesis y / o restricciones, y por lo menos un
objetivo.
Una instancia de un problema esta dada por un conjunto ordenado de datos particulares del
problema.
!u" "# un A&*orit'o)
Es un mtodo para resolver un problema mediante una serie de pasos precisos, definidos y
finitos.
Un algoritmo debe producir un resultado en un tiempo finito.
Los mtodos que utilian algoritmos se denominan mtodos algor!tmicos en oposicin a los
mtodos que implican alg"n juicio o interpretacin que se denominan mtodos heur!sticos.
!u" "# un $ro*r('()
Un programa es un conjunto de instrucciones que nos permite resolver problemas mediante
el uso de un ordenador, tambin se puede decir que es la traduccin de un algoritmo en
instrucciones que puede entender una maquina, para ello de hace uso de alg"n lenguaje de
programacin con en este caso el lenguaje #$$.
!u" "# un &"n*u(+" d" $ro*r('(cin)
Es un lenguaje, como cualquier otro, que tiene reglas de escritura que conforman su
sinta%is. &ara verificar la correcta escritura cuenta con un compilador quien identifica los
errores que se pueda cometer en la escritura de un programa. 'osotros utiliaremos el
lenguaje de programacin #$$.
F(#"# "n &( r"#o&ucin d" $ro%&"'(#,
El proceso de resolucin de un problema mediante el uso de una computadora nos lleva a la
escritura de un programa y la ejecucin de la misma.
Las fases de resolucin de un problema son(
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
).* +n,lisis del problema
-.* .ise/o del algoritmo
0.* #odificacin
1.* #ompilacin y ejecucin
2.* 3erificacin
4.* .epuracin
5.* 6antenimiento
7.* .ocumentacin

8odo esto es un repaso nada mas de la parte de teor!a, ahora nos dedicaremos a la parte
esencial del curso que es la resolucin del os problemas mediante el uso de este lenguaje
#$$.
E&"'"nto# %-#ico# d" $ro*r('(cin
).* Esquema de todo programa #$$
.. &i%r"ri(#
9
.. /uncion $rinci$(&
void main:;<
.. d"c&(r(cion d" 0(ri(%&"#
9
.. "ntr(d( d" d(to#
9
.. $roc"#o d" c(&cu&o
9.
.. #(&id( d" r"#u&t(do#
9.
=
-.* Librerias b,sicas a utiliar(
>include ?conio.h@
>include ?iostream.h@
0.* #mo declaro variablesA
Ti$o1d"1d(to nombreBdeBvariableC
Ti$o1d"1d(to nombre), nombre-, nombre0C
1.* Du tipos de dato puedo utiliarA
#2ort entero corto( *)-5 a )-7
%3t" entero corto( E a -22
int entero ( *0-545 a 0-547
&on* entero largo ( )) digitos positivos y negativos
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
/&o(t real de baja precision
dou%&" real de alta precision
c2(r caracter

Ejm (
int %, y C
dou%&" areaC

2.* #mo guardo valores en una variable A
variable 4 valorC
Fiempre la variable va al lado iquierdo. El valor puede ser fijo, variable o
e%presin.
Ejm(
% G )2C // valor fijo
y G %C // valor variable
%G -.2Hy$%C // valor e%presin

4.* #mo imprimo en pantalla en #$$A
cout ??Ite%toI??valor??variable??e%presin??endlC

Ejm( cout ??IEl valor de % es( J??%??endlC

5.* #mo leo los datos ingresados por teclado en #$$A
cin @@ variableC

Ejm( cout??Iingrese valor de %IC cin @@ %C

5RO6LEMA 1:
Encontr(r "& -r"( d" un t"rr"no r"ct(n*u&(r,
So&ucin:
// librerias
#include <conio.h>
#include <iostream.h>
//funcion principal
void main(){
// declaracion de variables
double ancho, alto, area;
// entrada
cout<<Ingrese valor del ancho: ; cin >>ancho;
cout <<Ingrese valor del alto : ; cin >>alto;
// proceso de calculo
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
area = ancho * alto;
// salida
cout<<El area es: <<area<<endl;
}
5RO6LEMA 7:
Un( ti"nd(8 $or &i9uid(cin8 o/r"c" :0; d" d"#cu"nto "n todo# #u# $roducto#, 5or &(
co'$r( d" ci"rt( c(ntid(d d" unid(d"# d" un $roducto8 #" d"#"( #(%"r "& 'onto d" &(
co'$r(8 "& 'onto d"& d"#cu"nto 3 "& 'onto ( $(*(r,
So&ucin:
// librerias
#include <conio.h>
#include <iostream.h>
//funcion principal
void main(){
// declaracion de variables
double precio, mcompra, mdscto,
mpago;
int cantidad;
// entrada
cout<<Ingrese precio: ;
cin>>precio;
cout<<Ingrese unidades: ;
cin>>cantidad;
// proceso
mcompra = precio * cantidad;
mdscto = mcompra*.!;
mpago = mcompra " mdscto;
// salida
cout << #onto de compra:
<<mcompra<<endl;
cout << #onto de dscto :
<<mdscto<<endl;
cout << #onto a pagar : <<mpago<<endl;
}

5RO6LEMA <:
D(do un c($it(&8 "ncu"ntr" &o# int"r"#"# corr"#$ondi"nt"# con#id"r(ndo un( t(#( d"
int"r"# d"t"r'in(d( 3 un ci"rto n='"ro d" $"r>odo# /in(nci"ro#, Con#id"r" &(#
#i*ui"nt"# /r'u&(#:
Monto 4 c($it(&?1+t(#(.100@An
Int"r"#"#4 Monto B c($it(&
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
So&ucin:
// librerias
#include <conio.h>
#include <iostream.h>
#include <math.h> $$ para la
%uncion po&'(ase, e)ponente*
//funcion principal
void main(){
$$ declarar varia(les
dou(le capital, tasa, n, intereses,
monto;

// entrada
cout<<Ingrese capital: ;
cin>>capital;
cout<<Ingrese tasa de interes: ;
cin >> tasa;
cout<<Ingrese numero de periodos: ;
cin>>n;
// proceso
monto = capital * po&'+,tasa$+,n*;
intereses = monto " capital;
// salida
cout<<#onto %inal: << monto<<endl;
cout<<Intereses :
<<intereses<<endl;
}
5RO6LEMA C:
Encontr(r "& (r"( d" un tri(n*u&o conoci"ndo #u# < &(do#, Con#id"r" &( #i*ui"nt"
/or'u&(:
Ar"( 4 r(iD cu(dr(d(?$?$E(@?$E%@?$Ec@@
Dond" $ "# "& #"'i$"ri'"tro,
So&ucin:
$*
-ame: .alculo de areas
/uthor: 0e1es #ar2ano, /le3andro
4escription: Encontrar el area de un triangulo conociendo
sus 5 lados.
.onsidere la siguiente %ormula: /rea = rai2
cuadrada'p'p6a*'p6(*'p6c**
4onde p es el semiperimetro.
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
4ate: 77$+$8 +7:75
.op1right:
*$
$$ li(rer9as
#include <conio.h>
#include <iostream.h>
#include <math.h> $$ para la %unci:n po&'(ase,
e)ponente*
$$%uncion principal
void main'*;
$$ declarar varia(les
%loat a, (, c, p, area,perimetro;
$$ entrada
cout<<<Ingrese el lado a del triangulo : <; cin>> a;
cout<<<Ingrese el lado ( del triangulo : <; cin >> (;
cout<<<Ingrese el lado c del triangulo : <; cin>> c;
$$ proceso
p = 'a,(,c*$7;$$semi perimetro del triangulo
area =po&''p*'p6a**'p6(**'p6c**,.!*;
perimetro=7*p;
$$ salida
cout<<<perimetro: <<<perimetro<<endl;
cout<<<=rea : <<<area<<endl;
getche '*;
>
5RO6LEMA ::
D(d( un( c(ntid(d 9u" r"$r"#"nt( *r(do# c"nt>*r(do#8 "ncontr(r #u "9ui0(&"nt" "n
*r(do# F(2r"n2"it8 r(nFin* 3 F"&0in,
So&ucin:
$*
-ame: cam(io de temperatura
/uthor: 0e1es #ar2ano, /le3andro
4escription: 4ada una cantidad ?ue representa grados
centigrados,encontrar su e?uivalente en
grados @ahrenheit,ranAing 1 Aelvin
4ate: 77$+$8 +7:++
.op1right: %isiBunmsm lima peru 78
*$
$$ li(rer9as
#include <stdli(.h>
#include <iostream.h>
#include <math.h> $$ para la %unci:n po&'(ase,
e)ponente*
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
$$%uncion principal
int main'*;
$$ declaracion varia(les
dou(le ., @, C, 0;
$$ entrada de datos
cout<<<Ingrese la temperatura en grados centigrados .:
Dn<;
cin>> .;
$$ proceso de datos
@='E*.$!*,57;
C=.,7F5;
0='E*.*$!,GE7;
$$ salida de datos
cout<<<Hos e?uivalentes en otros sistemas son: Dn<;
cout<<<@ahrenheit : <<<@<<endl;
cout<<<Aelvin : <<<C<<endl;
cout<<<0anAing : <<<0<<endl;
cout<<<.elcius : <<<.<<endl;
s1stem'<I/JKE<*; $$espera la pulsacion de una tecla
para salir
return ;
>
5RO6LEMA G:
D(do un n='"ro "nt"ro d" C ci/r(#8 o%t"n"r "& n='"ro in0"rtido,
So&ucin:
$* -ame: invertir numero de G ci%ras
/uthor: 0e1es #ar2ano, /le3andro
4escription: 4ado un numero de G ci%ras como dato de
entrada invierte el numero
4ate: 77$+$8 +7:57
.op1right: %isiBunmsm lima peru 78
*$
#include <conio.h>
#include <iostream.h>
void main'*;
int -,a,(,c,d,num;
cout<<<Ingrese un numero de cuatro ci%rasDn-umero =
<;cin>>-;
$$hallando ci%ras
a=-$+;
(='-$+*L+;
c='-$+*L+;
d=-L+;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
num=d*+,c*+,(*+,a;
cout<<<El numero invertido es :<<<num<<endl;
getche '*;
>
5RO6LEMA H:
E0(&u(r "& r"#u&t(do d" &( #i*ui"nt" /uncin:
F?I@ 4 r(>D c=%ic( d" ?:I+H
<
@
So&ucin:
$* -ame: evaluacion de una %uncion
/uthor: 0e1es #ar2ano, /le3andro
4escription: dado el valor de ) evalua la %uncion
4ate: 77$+$8 +7:GF
.op1right:
*$
#include <conio.h>
#include <iostream.h>
#include <math.h>
void main'*;
%loat ),%;
cout<<<%uncion a evaluarDn@')* = rai2 cu(ica de
'!),F5*Dn<;
cout<<<Ingrese el valor de ) = <;
cin>>);
%=po&''!*),po&'F,5**,.5*;
cout<<< M = <<<)<<endl;
cout<<< @'M* = <<<%<<endl;
getche '*;
>
5RO6LEMA J:
Un( $"r#on( ti"n" un( cu"nt( "n d&(r"#8 un( "n #&"# 3 un( "n "uro#, !ui"r" #(%"r
cu(nto din"ro ti"n" "n &(# tr"# cu"nt(# $"ro "I$r"#(do "n d&(r"#8 "n #o&"# 3 "n "uro#
$or #"$(r(do,
So&ucin:
$*
-ame: .am(io de monedas
/uthor: 0e1es #ar2ano, /le3andro
4escription: es un programa ?ue hace cam(io
de acuerdo al tipo de cam(io
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
4ate: 77$+$8 +7:!+
.op1right:
*$
$$li(rerias
#include <conio.h>
#include <iostream.h>
#include <math.h>
#de%ine tc+ 5.7
#de%ine tc7 .8
#de%ine tc5 G
$$%uncion principal
void main'*;
%loat a,(,c,/,N,.;
cout<<<Ingrese la cantidad en la cuenta en dolares
= <;cin>>a;
cout<<<Ingrese la cantidad en la cuenta en soles =
<;cin>>(;
cout<<<Ingrese la cantidad en la cuenta euros =
<;cin>>c;
/=a,(*+.$tc+,c*+.$tc7;
N=(,a*+.*tc+,c*+.*tc5;
.=c,a*+.*tc7,(*+.$tc5;
cout<<<Ha cantidad total en dolares es =
<<</<<endl;
cout<<<Ha cantidad total en soles es = <<<N<<endl;
cout<<<Ha cantidad total en euros es = <<<.<<endl;
getche '*;
>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Modu&o 07: E#tructur(# d" Contro&
Condicion(&"#:
L( #"nt"nci( I/
Sint(Ii#:
If(expresin_logica){
<secuencia de sentencias>
}
En espaol seria!
si(expresin_logica)entonces
<"ecuencia de sentencias>
#in_si
Fi la e%presin lgica es verdadera, entonces se ejecuta la secuencia de sentencias en caso
contrario se salta la estructura. .espus que la sentencia if se ha ejecutado, el control pasa a
la siguiente sentencia.
L( #"nt"nci( i/ B"&#"
Sint(Ii#:
if(expresin_logica){
<"ecuencia de sentencias $%>
}
else{
<"ecuencia de sentencias $&>
}
En espaol ser'a!
si(expresin_logica)entonces
<"ecuencia de sentencias $%>
"i_no
<"ecuencia de sentencias $&>
#in_si
Fi la e%presin lgica es verdadera, entonces se ejecuta la secuencia de sentencias E) en
caso contrario o sea cuando la e%presin lgica es falso se ejecuta la secuencia de
sentencias E-.
.espus que la sentencia if se ha ejecutado, el control pasa a la siguiente sentencia.
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
S"nt"nci(# i/ B"&#" (nid(do#:
#$$ permite anidar sentencias ifBelse anidados para crear una sentencia de alternativas
m"ltiples(
Sint(Ii#:
if(expresin_logica_$%){
<"ecuencia $%>
}
else{
if(expresin_logica_$&){
<"ecuencia $&>
}
else{
if(expresin_lgica_n){
<secuencia n>
}
}
}
En espaol ser'a!
si(expresin_logica_$%)entonces
<"ecuencia $%>
"i_no
si(expresin_logica_$&)entonces
<"ecuencia $&>
"i_no
si(expresin_lgica_n)entonces
<secuencia n>
#in_si
#in_si
#in_si
5RO6LEMA 1
Una tienda ofrece -EK de descuento sobre el monto de consumo si es que ste supera los
0E soles, caso contrario el descuento es del )EK. El monto de consumo no incluye
impuestos que se aplica al monto neto. Fe desea saber el monto del descuento, el monto
neto, el monto de los impuestos y el monto a pagar.
Folucin(
$$ li(rerias
#include <conio.h>
#include <iostream.h>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
#include <iomanip.h> $$ para
manipuladores set&, setios%lags, etc.

$$ de%inicion de constantes
#de%ine Idscto+ .7 $$ 7L descuento
#de%ine Idscto7 .+ $$ +L descuento
#de%ine Iimpto .+E $$ +EL impuesto

$$ %uncion principal
void main(){
$$ declaracion de varia(les
dou(le .onsumo,4scto,-eto,Impuesto,Iago;

$$ ingreso de consumo
cout << <Ingrese consumo : <; cin >> .onsumo;


$$ .alcular 4escuento
if ' .onsumo > 5*
4scto = .onsumo * Idscto+;
else
4scto = .onsumo * Idscto7;

$$ calcular el monto neto
-eto = .onsumo 6 4scto;

$$ .alcular monto del impuesto
Impuesto = -eto * Iimpto;

$$ .alcular monto del importe a pagar
Iago = -eto , Impuesto;

$$ Escri(ir resultados
cout << endl;
cout << setios%lags'ios::%i)edO
ios::sho&point*; $$ %ormato para reales
cout << <.onsumo : <
$$ ancho +, con 7 decimales, varia(le,
cam(io de linea
<< set&'+* << setprecision'7* <<
.onsumo << endl
<<<4escuento : <
<< set&'+* << setprecision'7* <<
4scto << endl
<<<-eto : <
<< set&'+* << setprecision'7* <<
-eto << endl
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
<< <Impuesto : <
<< set&'+* << setprecision'7* <<
Impuesto << endl
<< endl
<< <Importe a Iagar: <
<< set&'+* << setprecision'7* << Iago
<< endl;

getch'*;
}

nota +: el manipulador ios::%i)ed %i3a
%ormato para reales
el
manipulador ios::sho&point muestra punto decimal 1 decimales

nota 7: el manipulador set&'nn* esta(lece el
/-.PQ del dato
el
manipulador setprecision'7* esta(lece 7 decimales para un
real

nota 5: otra %orma de escri(ir los mismos
resultados es:

cprint%'<DrDn.onsumo : L+.7%<,.onsumo*;

cprint%'<DrDn4escuento : L+.7%<,4scto*;

cprint%'<DrDn-eto : L+.7%<,-eto*;

cprint%'<DrDnImpuesto : L+.7%<,Impuesto*;

cprint%'<DrDnImporte a Iagar : L+.7%<,Importe*;

para lo cual de(e incluir la li(reria
<stdio.h>



5RO6LEMA 7
.ado 2 numeros cualquiera, encontrar el mayor y el numero de veces que se repite.
Folucin(
$$ li(rerias
#include <conio.h>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
#include <iostream.h>

$$ %unction principal
void main(){
$$declaracion de varia(les
dou(le /,N,.,4,E,ma1or, veces;

$$ ingreso de ! numeros
cout << <Ingrese ! numeros separados por un
espacio: <;
cin >> / >> N >> . >> 4 >> E;

$$ 4eterminar el ma1or de los numeros ingresados
ma1or = /; $$ asume ?ue es el primero
if ' ma1or < N * ma1or = N;
if ' ma1or < . * ma1or = .;
if ' ma1or < 4 * ma1or = 4;
if ' ma1or < E * ma1or = E;

$$ cuantas veces se repite
veces=;
if 'ma1or == /* veces,,;
if 'ma1or == N* veces,,;
if 'ma1or == .* veces,,;
if 'ma1or == 4* veces,,;
if 'ma1or == E* veces,,;

$$ Escri(ir resultado
cout << endl;
cout << <#a1or valor ingresado: < << ma1or
<<endl;
cout << <-umero de veces ?ue se repite:
<<<veces<<endl;

getch'*;
}

5RO6LEMA <:
El estado ha puesto en marcha un plan de subsidio a las familias bajo las siguientes
consideraciones(
a; hasta - hijos se le otorga F/.5E.E
b; mas de - hasta 2 hijos se le otorga F/.LE.E
c; mas de 2 hijos se le otorga F/.)-E,E
d; por cada hijo escolar se le otorga F/.)E.E adicionales
e; si la madre es viuda se le otorga F/.2E adicionales
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM

Fe desea saber el subsidio total que debe recibir una familia.
Folucin(
$$ li(rerias
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <ct1pe.h> $$ para la %unction toupper'*

$$ %uncion principal
void main(){
$$ declaracion de varia(les
int -hi3os, -hi3osEsc;
char Ecivil;
dou(le Ku(sidio;

$$ ingreso de datos
cout << <ingrese nRmero de hi3os: <; cin >> -hi3os;
cout << <ingrese nRmero de hi3os escolares: <; cin >>
-hi3osEsc;
cout << <estado civil de la madre <Siuda,Qtro> : <;
cin>>Ecivil;
Ecivil = toupper' Ecivil *; $$ convierte a ma1uscula

$$ calcular su(sidio por total de hi3os
if ' -hi3os <= 7 *
Ku(sidio = F;
else
if ' -hi3os <= ! *
Ku(sidio = E;
else
Ku(sidio = +7;

$$ incrementar su(sidio por hi3os en edad escolar
Ku(sidio = Ku(sidio , -hi3osEsc * +;

$$ incrementar su(sidio por viude2 de la madre
if ' Ecivil == TST *
Ku(sidio = Ku(sidio , !;

$$ escri(ir su(sidio
cout << <DnKu %amilia reci(ie un su(sidio de <
<< Ku(sidio << < soles.<<< endl;

cin.ignore'*;$$ ignora la ultima entrada de datos
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
getch'*;
}

5RO6LEMA C:
Mesolver una ecuacin de -do grado.
-
+N $ ON $ # G E
solucin(
$$ li(rerias
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>

$$ de%inir constantes
#de%ine @alse
#de%ine Urue +

$$ %uncion principal
void main(){
$$ declaracion de varia(les
dou(le /,N,.,4isc,0ai2+,0ai27;
int Imaginario;

$$ ingreso de 5 coe%icientes
cout << <Ingresar los 5 coe%icientes separados por
espacios: <;
cin >> / >> N >> .;

$$ asumir ?ue no ha1 raices imaginarias
Imaginario = @alse;

$$ veri%icar si la ecuaci:n tiene solucion
if ' / == VV N == *
cout << <Ecuacion sin solucion<;
else;
if ' / == * {
0ai2+ = . $ N * '6+*;
0ai27 = 0ai2+;
}
else{
4isc = po&'N,7* 6 G * / * .;
i% ' 4isc < * ;
Imaginario = Urue;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
4isc = 64isc;
>
0ai2+ = '6N , s?rt'4isc** $ '7 * /*;
0ai27 = '6N 6 s?rt'4isc** $ '7 * /*;
}
$$ escri(ir resultados
cout << endl;
cout << setios%lags'ios::%i)ed O
ios::sho&point*;
cout << <Ecuacion a resolver: < << endl
<< set&'+7* << <7< << endl
<< set&'+* << setprecision'7* << / <<
<M , <
<< set&'* << setprecision'7* << N <<
<M , <
<< set&'* << setprecision'7* << .
<< < = <
<< endl
<< <0ai2 + = < << set&'8* <<
setprecision'5* << 0ai2+ << endl
<< <0ai2 7 = < << set&'8* <<
setprecision'5* << 0ai27 << endl;
if ' Imaginario *
cout << <Kon raices imaginarias<<<endl;

>
cin.ignore'*;
getch'*;
}

nota: otra %orma de escri(ir resultados es:
cprint%'<DrDnEcuacion a resolver: DrDn
L+7s<,<7<*;
cprint%'<DrDnL+.7%M , L.7%M , L.7% =
<,/,N,.*;
cprint%'<DrDn0ai2 + = L8.5%<,0ai2+*;
cprint%'<DrDn0ai2 7 = L8.5%<,0ai27*;
cprint%'<DrDn<*;
i% ' Imaginario *
cprint%'<Kon raices imaginarias<*;

para lo cual de(e incluir la li(reria <stdio.h>
5RO6LEMA ::
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Una compa/!a de telfonos necesita la siguiente informacin de cada cliente para emitir su
recibo de pago( nombre, direccin, n"mero telefnico y cantidad de minutos consumidos en
el mes. &ara el c,lculo del importe de pago considere lo siguiente(
Los 2E primeros minutos son libres, los )EE siguientes tienen un costo de F/E.2E cada
minuto. Los )EE siguientes tienen un costo de F/E.0E cada minuto. Los siguientes minutos
tienen un costo de F/E.)E cada minuto. Fe requiere emitir el recibo de pago correspondiente
mostrando los montos calculados.
Folucin(
$$ li(rerias
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>

$$ de%inicion de constantes
#de%ine tari%a .
#de%ine tari%a+ .!
#de%ine tari%a7 .5
#de%ine tari%a5 .+


$$ %uncion principal
void main(){
$$ declaracion de varia(les
char nom(reWGX, direccionW8X, tele%onoW+X;
int minutos, e)ceso, e)ceso+, e)ceso7, e)ceso5;
dou(le importe, importe, importe+,importe7, importe5;

$$ ingreso de datos
cout << <ingrese nom(re : <;
cin.getline'nom(re,G*;
cout << <ingrese direccion : <;
cin.getline'direccion,8*;
cout << <ingrese tele%ono : <;
cin.getline'tele%ono,+*;
cout << <minutos consumidos: <; cin >> minutos;

$$ iniciali2ar minutos en e)ceso
e)ceso = e)ceso+ = e)ceso7 = e)ceso5 = ;

$$ calcular minutos en e)ceso
if ' minutos <= ! *
e)ceso = minutos;
else if ' minutos <= +! *{
e)ceso = !;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
e)ceso+ = minutos 6 !;
} else if 'minutos <= 7!*{
e)ceso = !;
e)ceso+ = +;
e)ceso7 = minutos6+!;
} else{
e)ceso = !;
e)ceso+ = +;
e)ceso7 = +;
e)ceso5 = minutos67!;
}

$$ calcular importes a pagar
importe = e)ceso * tari%a;
importe+ = e)ceso+ * tari%a+;
importe7 = e)ceso7 * tari%a7;
importe5 = e)ceso5 * tari%a5;
importe = importe , importe+ , importe7 , importe5;

$$ mostrar resultados
cout << endl;
cout << <-om(re : < << nom(re << endl
<< <4ireccion : < << direccion << endl
<< <Uele%ono : < << tele%ono << endl
<< endl;
cout << setios%lags'ios::%i)ed O ios::sho&point*;
cout << set&'7* << <#I-JUQK< << set&'+* << <U/0I@/<
<< set&'+!* << <I#IQ0UE< << endl
<< set&'7* << e)ceso << set&'+* <<
setprecision'7* << tari%a
<< set&'+!* << setprecision'7* << importe <<
endl
<< set&'7* << e)ceso+ << set&'+* <<
setprecision'7* << tari%a+
<< set&'+!* << setprecision'7* << importe+ <<
endl
<< set&'7* << e)ceso7 << set&'+* <<
setprecision'7* << tari%a7
<< set&'+!* << setprecision'7* << importe7 <<
endl
<< set&'7* << e)ceso5 << set&'+* <<
setprecision'7* << tari%a5
<< set&'+!* << setprecision'7* << importe5 <<
endl;

cout << set&'7* << minutos << set&'+* << < UQU/H<
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
<< set&'+!* << setprecision'7* << importe <<
endl;

cin.ignore'*;
getch'*;
}

S"nt"nci( d" (&t"rn(ti0( 'u&ti$&": #Kitc2
La sentencia sPitch ofrece una forma de realiar decisiones de alternativas multiples.
Finta%is(
s(itc) (varia(le) {
case valor+: acci:n+; brea*;
case valor7: acci:n7; brea*;
case valor5: acci:n5; brea*;
$$ ...
default! acci:n);
}

#ompara el valor contenido en la variable con cada uno de los valores situados despus del
case, ejecutando en caso de que e%ista coincidencia la accin correspondiente. Fi no e%iste
coincidencia, se ejecuta la accin% correspondiente al caso d"/(u&t, Q si no se pusiera el
default, simplemente no ejecuta ninguna instruccin dentro del sPitch.
La orden %r"(F hace que la ejecucin salga del sPitchC de no ponerlo se ejecutar,n todas
las rdenes hacia abajo sin importar el valor de los case hasta encontrar un %r"(F o la llave
de cierre del sPitch.

La variable del sPitch debe ser "nt"r( o de un solo c(r(ct"r

Ejemplo )( ingresar como numero entero el estado civil de una persona e imprimir su
descripcin(
inicio
int ecivil;
Heer ecivil
s(itc)'ecivil*{
case +: Imprimir soltero (reaA;
case 7: Imprimir casado (reaA;
case 5: Imprimir casado (reaA;
case G: Imprimir casado (reaA;
default: $$ ningun caso anterior
Imprimir error
}
%in

5RO6LEMA G:
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
.ado 2 n"meros cualquiera, encontrar el mayor valor positivo si es que lo hubiera, de lo
contrario de un mensaje adecuado.
Folucin(
$*
-ame: comparador de numeros
/uthor: 0e1es #ar2ano, /le3andro
4escription: 4ado ! nYmeros cual?uiera, encontrar el
ma1or valor
positivo si es ?ue lo hu(iera, de lo
contrario de un
mensa3e adecuado.
4ate: 77$+$8 +G:75
.op1right: %isiB78 lima peru
*$
$$ li(rerias
#include <conio.h>
#include <iostream.h>
$$ %unction principal
void main'*;
$$declaracion de varia(les
dou(le /,N,.,4,E,ma1or, veces;
$$ ingreso de ! numeros
cout <<<Ingrese ! numeros enteros = <;cin>>/>>N>>.>>4>>E;
$$ 4eterminar el ma1or de los numeros ingresados
ma1or = /; $$ asume ?ue es el primero
i% ' ma1or < N *
ma1or = N;
i% ' ma1or < . *
ma1or = .;
i% ' ma1or < 4 *
ma1or = 4;
i% ' ma1or < E *
ma1or = E;
cout << endl;
i% 'ma1or>*;
cout << <#a1or valor positivo es : <<<ma1or<<endl;
>
else;
cout << < -o ha1 un ma1or valor positivoDn<<<endl;
>
getche'*;
>

Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
5RO6LEMA H:
.ado la cantidad de votos totales de 0 candidatos +, O, #. .eterminar el ganador si es que
lo hubiera, caso contrario indicar quienes pasan a la segunda vuelta. #onsidere que el
ganador debe superar el 2EK del total de los votos y pasan a la segunda vuelta quienes
tengan los - puntajes m,s altos. .e no darse las condiciones para una segunda vuelta se
anula la eleccin.
Folucin(
$*
-ame: Escruta votos
/uthor: 0e1es #ar2ano, /le3andro
4escription: ingrese los votos de los candidatos
4ate: 77$+$8 +G:5G
.op1right:
*$
#include <iostream.h>
#include <conio.h>
void main'*;
int /,N,.,ganador,mitad,totalvotos,porcganador;
cout<<<Ingrese los votos de / = <;cin>>/;
cout<<<Ingrese los votos de N = <;cin>>N;
cout<<<Ingrese los votos de c = <;cin>>.;
totalvotos=/,N,.;
cout<<<Uotal de votos = <<<totalvotos;
ganador=/;
i%'ganador<N*
ganador=N;
i%'ganador<.*
ganador=.;
cout<<endl;
i%'ganador>totalvotos$7*;
i%'ganador==/*
cout<<<Zanador /<<<endl;
i%'ganador==N*
cout<<<Zanador N<<<endl;
i%'ganador==.*
cout<<<Zanador .<<<endl;
cout<<<%elicitaciones<<<endl;
>
else;
cout<<<-o ha1 ganador<<<endl;
cout<<<Pa(ra segunda vuelta<<<endl;
>
i%'/==N==.*;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
cout<<<-o ha1 ganador<<<endl;
cout<<<Ke anulan las elecciones<<<endl;
>
getche'*;
>

5RO6LEMA J:
.ado un n"mero natural de 0 cifras, determine si es o no es un n"mero capic"a. Fe
considera que un n"mero es capic"a cuando se lee igual de derecha a iquierda que de
iquierda a derecha. 3erifique que le n"mero dado tenga slo 0 cifras, de lo contrario de un
mensaje adecuado.
Folucin(
$*
-ame: -umero .apicua
/uthor: 0e1es #ar2ano, /le3andro
4escription: ingrese un numero
4ate: 77$+$8 +G:GG
.op1right:
*$
$$li(rerias
#include <iostream.h>
#include <stdio.h>
#include <stdli(.h>
#include <conio.h>
void main'*;
int -,a,(,c,n;
cout<<<Ingrese un numero de tres ci%ras = <;cin>>-;
cout<<endl;
i%'->=+ VV -<+*;
a=-$+;
(='-$+*L+;
c=-L+;
n=c*+,(*+,a;
cout<<<El numero invertido es = <<<n<<endl;
cout<<endl;
>
else;
cout<<<El numero no cumple con la condicion<<<endl;
>
i%'-==n*;
cout<<<El numero ingresado es capicua<<<endl;
>
else ;
cout<<<El numero ingresado no es capicua<<<endl;
>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
getche'*;
>

5RO6LEMA L:
.ado un n"mero natural de no m,s de 0 cifras, determine su escritura en el formato
romano.
Folucin(
$*
-ame: convierte un decimal a romano
/uthor: 0e1es #ar2ano, /le3andro
4escription: 4ado un nYmero natural de no m=s de 5
ci%ras,
determine su escritura en el %ormato
romano.
4ate: 77$+$8 +G:G8
.op1right:
*$
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
void main'*;
int -,digito,r,3;
cout<<<Ingrese un numero de ma)imo tres ci%rasDn =
<;cin>>-;
i%'-> VV -<+*;
cout<<<E- 0Q#/-QK:Dn<;
r=-;
digito=r$+;
r=rL+;
i%'digito==E*
cout<<<.<<<<#<;
else;
i%'digito>G*;
cout<<<4<;
%or'3=+;3<='digito6!*;3,,*;
cout<<<.<;
>
>
else;
i% 'digito==G*
cout<<<.<<<<4<;
else;
%or'3=+;3<=digito;3,,*
cout<<<.<;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
>
>
>
digito=r$+;
r=rL+;
i%'digito==E*
cout<<<M<<<<.<;
else;
i%'digito>G*;
cout<<<H<;
%or'3=+;3<='digito6!*;3,,*
cout<<<M<;
>
else;
i% 'digito==G*
cout<<<M<<<<H<;
else;
%or'3=+;3<=digito;3,,*
cout<<<M<;
>
>
>
digito=r;
i%'digito==E*
cout<<<I<<<<M<;
else;
i%'digito>G*;
cout<<<S<;
%or'3=+;3<='digito6!*;3,,*
cout<<<I<;
>
else;
i%'digito==G*
cout<<<I<<<<S<;
else;
%or'3=+;3<=digito;3,,*
cout<<<I<;
>
>
>
>
else;
cout<<<-o se encuentra en el rango pedidoDn<;
>
getche '*;
>

Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
5RO6LEMA 10(
.ado 0 valores numricos determine si pueden corresponder a un tri,ngulo o no.
Folucin(
$*
-ame: veri%ica si es un triangulo
/uthor: 0e1es #ar2ano, /le3andro
4escription: 4ado 5 valores num[ricos determine
si pueden corresponder a un tri=ngulo o
no.
4ate: 77$+$8 +!:7F
.op1right:
*$
#include <conio.h>
#include <iostream.h>
void main'*;
int /,N,.,ma1or,medio,menor,n,m,r,),1,2;
cout<<<Ingrese tres numeros separados por un espacio en
(lanco = <;
cin>>/>>N>>.;
n=/;
m=N;
r=.;
)=n;
1=m;
2=r;
ma1or=/;
i%'ma1or<N*
ma1or=N;
i%'ma1or<.*
ma1or=.;
cout<<endl;
medio=n;
i%'medio<m*
medio=m;
i%'medio<r*
medio=r;
cout<<endl;
menor=);
i%'menor<1*
menor=1;
i%'menor<2*
menor=2;
cout<<endl;
i%'ma1or6menor<medio VV medio<ma1or,menor*;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
i%'ma1or6medio<menor VV menor<ma1or,medio*
i%'medio6menor<ma1or VV ma1or<medio,menor*
cout<<<Es un triangulo<<<endl;>
else;
cout<<<-o es un triangulo<<<endl;
>
getche '*;
>
MODULO 0<: ESTRUCTURAS RE5ETITIVAS
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM

+ntes de describir el funcionamiento y la utilidad de las estructuras repetitivas, hagamos un
repaso de los o$"r(dor"# disponibles en el lenguaje #$$.
O$"r(dor"#
Los operadores sirven para unir identificadores y literales formando e%presiones, que son el
resultado de una operacin.
+ continuacin se muestran los operadores aritmticos(
Descripcin Smbolo
Expresin
de
ejemplo
Resultado del
ejemplo
Multiplicacin
* 7*G 8
Residuo de dividir
enteros
L !L7 +
Suma
, 7,7 G
Resta
6 F67 !
Aumenta en uno
,, c,, c = c , +
Disminuye en uno
66 c66 c = c 6 +
Menos unario
6 6'7,G* 6\
Suma al contenido
,= M ,= G M = M , G
Resta al contenido
6= M 6= G M = M 6 G
Multiplica al contenido
*= M *= G M = M * G
Divide al contenido
$= M $= G M = M $ G
Residuo del contenido
L= M L= G M = M L G
Los operadores de comparacin o tambin conocidos como relacionales y que devuelven
un valor lgico que ser, true si la comparacin fue verdad y false en caso contrario son los
siguientes(
Descripcin Smbolo
Expresin
de ejemplo
Resultado del
ejemplo
Igualdad
== 7 == 7 true
Desigualdad
]= 7 ]= 7 %alse
Menor que
< 7 < 7 %alse
Mayor que
> 5 > 7 true
Menor o igual
que
<= 7 <= 7 true
Mayor o igual
que
>= + >= 7 %alse
Los operadores lgicos que permiten evaluar e%presiones lgicas compuestas son los
siguientes(
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Descripcin Smbolo Expresin de ejemplo
Resultado del
ejemplo
egacin
] ]'7 == 7* %alse
! lgico
VV '7 == 7* VV '7 >= * true
" lgico
OO '7 == 7* OO '7 ]= 7* true
Separadores
Existen otros caracteres con significado especial. Son los separadores:
Separador Descripcin
()
Contienen listas de parmetros, tanto en la
definicin de un mtodo como en la llamada al
mismo. Tambin se utilizan para modificar la
precedencia en una expresin, contener
expresiones para control de flujo realizar
con!ersiones de tipo.
{}
Se utilizan para definir blo"ues de cdigo,
definir mbitos contener los !alores iniciales
de los !ectores.
+,
Se utiliza tanto para declarar !ectores o
matrices como para referenciar !alores dentro
de los mismos.
-
Separa sentencias.
.
Separa identificadores consecuti!os en la
declaracin de !ariables en las listas de
parmetros. Tambin se utiliza para encadenar
sentencias dentro de una estructura for.
/
Separa un nombre de propiedad o mtodo de
una !ariable de referencia # objeto.
ESTRUCTURA RE5ETITIVA: K2i&"
Mepite la ejecucin de la accin mientras la e%presin lgica siga siendo verdad. #uando
sea falsa, el proceso termina.
Rnicialiacin
()ile (condici:n) {
acci:n
variaci:n
}

&or ejemplo, imprimir los )EE primeros n"meros naturales(
int n=+; $$ iniciali2aci:n
()ile (n <0%$$) {
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Imprimir n
n,, $$ aumenta en +
}
6ientras que la condicin sea verdad, se seguir, ejecutando la accin

ESTRUCTURA RE5ETITIVA: do B K2i&"
Rgual que la anterior, con la "nica diferencia que la anterior eval"a la condicin antes de
ejecutar la accin. En cambio, el do Phile eval"a la condicin despus de realiar la accin
por lo menos una ve.
Esta estructura de programacin repetitiva es recomendable cuando la accin se va a
realiar de todas maneras, por lo menos una ve, o cuando no se sabe la cantidad de veces
que se va a repetir la accin.
iniciali2aci:n
do M
accin
variacin
NK2i&" ?condicin@O

&or ejemplo, imprimir los )EE primeros n"meros naturales(

int n=+; $$ iniciali2aci:n
do {
Imprimir n
n,, $$ aumenta en +
} ()ile (n <0%$$)-


ESTRUCTURA RE5ETITIVA: /or
Es un Phile simplificado, mucho mas r,pido y efica. 6uy preferido por los
programadores. 3eamos su forma general(
/or :inicialiacinC condicinC variacin; M
accinC
N

&or ejemplo, imprimir los )EE primeros n"meros naturales(
for (int n0%- n <0%$$- n11) {
Imprimir n;
}-

La variacin se relaciona con la variable utiliada en la condicin.
En este caso lo primero que har, ser, la inicialiacin : nG)C; luego comprobar, si es cierta
la comparacin :n ?G)EE; y de ser verdad, ejecutar, las instrucciones. Sinalmente ejecutar,
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
la variacin : n$$ ; . Luego comprobar, de nuevo la comparacin para continuar con el
proceso repetitivo o para finaliar cuando el resultado de la comparacin sea falsa.

Tbserve que todo proceso repetitivo necesita de una previa inicialiacin de alg"n
contador, acumulador, estado, lo cual permite la evaluacin de la condicin que controla la
repeticin del proceso.

La inicialiacin puede incluir la declaracin de la variable pero no necesariamente debe
ser as!, por ejemplo(

int );
for ')=+; )<=+; ),,*;
m=s ordenes
>

#u,l es la diferencia entre declararlo antes del for con hacer la declaracin dentro de la
inicialiacinA. Fimplemente el alcance para la utiliacin de la variable.
#uando se declara (nt"# del for, el alcance de la variable se e%tiende dentro y fuera de las
llaves del forC es decir que podemos utiliar la variable dentro y tambin fuera de las llavesC
en cambio, cuando se declara d"ntro de la inicialiacin, el alcance se limita solamente
dentro de las llaves del forC es decir que slo se puede utiliar la variable dentro de las
llaves del for y n fuera de ellas.

5RO6LEMA 1:
.ado el n"mero de mes, determinar su nombre y la estacin a la que pertenece. 3erificar
que el n"mero est entre ) y )-, caso contrario dar un mensaje de error adecuado.
Folucin(
#include <conio.h>
#include <iostream.h>

$$ %uncion principal
void main(){
$$ declaracion de varia(les
int n;

$$ ingreso del numero de mes
cout << <Ingrese -umero de #es: <; cin >> n;

$$ 4eterminar estaci^n
cout<<endl<<<Estacion: <;
s(itc) ' n * {
case +: case 7: case 5:
cout<<<Serano<; (reaA;
case G: case !: case \:
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
cout<<<Qto_o<; (reaA;
case F: case 8: case E :
cout<<<Invierno<; (reaA;
case +: case ++: case +7 :
cout<<<Irimavera<;(reaA;
de%ault:
cout<<<Error en estaci:n<;
}

$$ 4eterminar nom(re del mes
cout<<endl<<<-om(re del #es: <;
s(itc) ' n * {
case + : cout<<<Enero<; (reaA;
case 7 : cout<<<@e(rero<; (reaA;
case 5 : cout<<<#ar2o<; (reaA;
case G : cout<<</(ril<; (reaA;
case ! : cout<<<#a1o<; (reaA;
case \ : cout<<<`unio<; (reaA;
case F : cout<<<`ulio<; (reaA;
case 8 : cout<<</gosto<; (reaA;
case E : cout<<<Ketiem(re<; (reaA;
case +: cout<<<Qctu(re<; (reaA;
case ++: cout<<<-oviem(re<; (reaA;
case +7: cout<<<4iciem(re<; (reaA;
de%ault: cout<<<4esconocido<;
}
cout<<endl;

getch'*;
>

5RO6LEMA 7:
El mismo problema anterior ejecutarlo repetidamente hasta que el n"mero de mes sea
incorrecto.
Folucin(
#include <conio.h>
#include <iostream.h>

$$ %uncion principal
void main'*;
$$ declaracion de varia(les
int n;

do { // )acer esto
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
$$ ingreso del numero de mes
cout << <Ingrese -umero de #es: <; cin >> n;

$$ 4eterminar estaci^n
cout<<endl<<<Estacion: <;
s&itch ' n * ;
case +: case 7: case 5:
cout<<<Serano<; (reaA;
case G: case !: case \:
cout<<<Qto_o<; (reaA;
case F: case 8: case E :
cout<<<Invierno<; (reaA;
case +: case ++: case +7 :
cout<<<Irimavera<; (reaA;
de%ault:
cout<<<Error en estaci:n<;
>

$$ 4eterminar nom(re del mes
cout<<endl<<<-om(re del #es: <;
s&itch ' n * ;
case + : cout<<<Enero<; (reaA;
case 7 : cout<<<@e(rero<; (reaA;
case 5 : cout<<<#ar2o<; (reaA;
case G : cout<<</(ril<; (reaA;
case ! : cout<<<#a1o<; (reaA;
case \ : cout<<<`unio<; (reaA;
case F : cout<<<`ulio<; (reaA;
case 8 : cout<<</gosto<; (reaA;
case E : cout<<<Ketiem(re<; (reaA;
case +: cout<<<Qctu(re<; (reaA;
case ++: cout<<<-oviem(re<; (reaA;
case +7: cout<<<4iciem(re<; (reaA;
de%ault: cout<<<4esconocido<;
>
cout<<endl;

} ()ile (n>0% 22 n <0%&)-
>


5RO6LEMA <:
.ado un n"mero entero, determinar cu,ntos d!gitos tiene y cu,nto suman entre ellos.
Folucin(
#include <conio.h>
#include <iomanip.h>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM

void main'*;
int n, cont=, digito, suma=;
cout<<<-umero entero: <; cin>>n;
do{
digito=nL+;
suma ,= digito;
cont,,;
n $= +;
}()ile(n30$)-
cout<<<cantidad de digitos: <<<cont<<endl;
cout<<<suma de digitos: <<<suma<<endl;
>

5RO6LEMA C:
Uenerar un n"mero aleatorio entre E y )EE y trate de adivinarlo. El programa debe orientar
seg"n el resultado con los mensajes JaltoI, JbajoI. +l final debe mostrar el n"mero de
intentos en los que adivin el n"mero.
Folucin(
#include <conio.h>
#include <iomanip.h>
#include <iostream.h>
#include <stdli(.h> $$ para numeros aleatorios

$$ adivina un numero

void main'*;
int num, adivina, intentos=;

$$ genera numero aleatorio
randomi2e'*;
num = random'++*;
do{
cout <<</divina: <; cin>>adivina;
intentos,,;
i% 'adivina>num* cout <<<alto<<<endl;
i% 'adivina<num* cout <<< (a3o<<<endl;
}()ile(num30adivina)-
cout<<<%elicitaciones, <<<<adivinaste en <<<intentos<<<
intentos<<<endl;
>

5RO6LEMA ::
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Rmprimir n trminos de la serie de fibonacci( ), ), -, 0, 2, 7, )0,..
Folucin(
#include <conio.h>
#include <iomanip.h>

void main'*;
int n, a=+, (=+, c;
cout<<<-umero de terminos: <; cin>>n;
for (int i0%- i<0n- i11){
i% 'i==+* cout <<a<<<, <;
else i% 'i==7* cout <<(<<<, <;
else;
c = a , (;
cout<<c<<<, <;
a=(;
(=c;
>$$ %in del else

}// fin del for
cout<<endl;
>

5RO6LEMA G:
.eterminar la suma de los n primeros trminos de la siguiente serie(

), 1, 5, )E, )0,9
Folucin(
$*
-ame: serie p5\
/uthor: 0e1es #ar2ano, /le3andro
4escription: 4eterminar la suma de los n primeros
t[rminos de
la siguiente serie:+,G,F,+,+5, ...
4ate: 77$+$8 +\:+
.op1right: %isiB78 lima6peru
*$
#include <iostream.h>
#include <conio.h>
void main'*;
int -,i,3;
%loat Kuma;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
cout<<<Ingrese la cantidad de terminos a sumar = <;
cin>>-;
i=+;3=+;Kuma=;
&hile'i<=-*;
cout<<3<<<, <;
Kuma,=3;
i,,;
3,=5;
>
cout<<< = <<<Kuma<<endl;
cout<<endl;
cout<<<presione una tecla para continuar...<<<endl;
getche'*;
>

5RO6LEMA H:
.eterminar la suma de los n primeros trminos de la siguiente serie(

Folucin(
$*
-ame: p5F
/uthor: 0e1es #ar2ano,/le3andro
4escription: 4eterminar la suma de los n
primeros t[rminos de la siguiente serie:
aMb+,Mab7,Mb'5 *,Mb'G *,a
4ate: 77$+$8 +\:77
.op1right:
*$
#include <iostream.h>
#include <conio.h>
void main'*;
int -,i,);
%loat Kuma,3;
cout<<<Ingrese la cantidad de terminos a sumar = <;
cin>>-;
cout<<<ingrses ): <;cin>>);
i=+;3=);Kuma=;
&hile'i<=-*;
cout<<3<<<, <;
Kuma,=3;
i,,;
3*=);
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
>
cout<<< = <<<Kuma<<endl;
cout<<endl;
cout<<<presione una tecla para continuar...<<<endl;
getche'*;
>
5RO6LEMA J:
Escriba un programa que calcule el promedio de cualquier n"mero de calificaciones.
Folucin(
$*
-ame: p58
/uthor: 0e1es #ar2ano, /le3andro
4escription: Escri(a un programa ?ue calcule el promedio
4e cual?uier nYmero de cali%icaciones
4ate: 77$+$8 +\:7\
.op1right: %isiBunmsm lima6peru
*$
#include <conio.h>
#include <iostream.h>
#include <math.h>
void main'*;
int i=+,n;
%loat nota,suma=,promedio,c;
cout<<<Ingrese la cantidad de notas = <;cin>>n;
&hile'i<=n*;
cout<<<Ingrese nota = <;cin>>nota;
c=nota;
suma=suma,c;
i,,;
c,=nota;
>
promedio=suma*+.$n;
cout<<<El promedio de notas es = <<<promedio<<endl;
getche'*;
>
5RO6LEMA L:
Lea los pesos y tallas de los alumnos de una clase y determine la media de pesos y tallas.
Folucin(
$*
-ame: p5E
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
/uthor: 0e1es #ar2ano, /le3andro
4escription: Hea los pesos 1 tallas de los alumnos de
una
clase 1 determine la media de pesos 1
tallas.
4ate: 77$+$8 +\:5
.op1right: %isiBunmsm lima peru
*$
#include <conio.h>
#include <iostream.h>
void main'*;
int -,i=+,3=+;
%loat talla,peso,suma+=,suma7=,promedio+,promedio7,c,v;
cout<<<Ingrese la cantidad de alumnos = <;cin>>-;
&hile'i<=-*;
cout<<<Ingrese talla = <;cin>>talla;
c=talla;
suma+=suma+,c;
i,,;
c,=talla;
>
promedio+=suma+*+.$-;
cout<<<El promedio de tallas es = <<<promedio+<<endl;
&hile'3<=-*;
cout<<<Ingrese peso = <;cin>>peso;
v=peso;
suma7=suma7,v;
3,,;
v,=peso;
>
promedio7=suma7*+.$-;
cout<<<El promedio de pesos es = <<<promedio7<<endl;
getche'*;
>
5RO6LEMA 10:
Escriba un algoritmo que permita calcular N
n
.
Folucin(
$*
-ame: p5+
/uthor: 0e1es #ar2ano, /le3andro
4escription: Escri(a un algoritmo ?ue permita calcular
Mn
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
4ate: 77$+$8 +\:5G
.op1right: %isiBunmsm lima peru
*$
#include <iostream.h>
#include <conio.h>
void main'*;
int n,),i=+;
%loat e)p=+;
cout<<<Ingrese el valor del e)ponente = <;cin>>n;
cout<<<ingrses el valor de ): <;cin>>);
&hile'i<=n*;
e)p*=);
i,,;
>
cout<<<El resultado es = <<<e)p<<endl;
cout<<endl;
cout<<<presione una tecla para
continuar...<<<endl;
getche'*;
>

MODULO 0C: ARREGLOS UNIDIMENSIONALES
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
En esta parte del curso empearemos con los tipos de datos estructurados, y con el m,s
sencillo, los arrays :vector o arreglo;.
Los arreglos permiten agrupar datos usando un mismo identificador. 8odos los elementos
de un arreglo son del mismo tipo, y para acceder a cada elemento se usan sub!ndices.
Finta%is(
?tipo@ ?identificadorBdelBarreglo@P?n"mero de elementos@QVP?n"mero de elementos@Q...WC
Los valores para el n"mero de elementos deben ser constantes, y se pueden usar tantas
dimensiones como queramos, limitado slo por la memoria disponible.
#uando slo se usa una dimensin se suele hablar de listas o vectores, cuando se usan dos,
de tablas.
+hora podemos ver que las cadenas de caracteres son un tipo especial de arreglos. Fe trata
en realidad de arreglos de una dimensin de tipo char.
Los sub!ndices son enteros, y pueden tomar valores desde E hasta
?n"meroBdeBelementos@*). Esto es muy importante, y hay que tener mucho cuidado, por
ejemplo(
int vector[25];
#rear, un arreglo con -2 enteros a los que accederemos como vectorVEW a vectorV-1W.
#omo sub!ndice podremos usar cualquier e%presin entera.
En general #$$ no verifica el ,mbito de los sub!ndices. Fi declaramos un arreglo de -2
elementos, no obtendremos errores al acceder al elemento -4. Fin embargo, si asignamos
valores a elementos fuera del ,mbito declarado, estaremos accediendo a onas de memoria
que pueden pertenecer a otras variables o incluso al cdigo ejecutable de nuestro programa,
con consecuencias generalmente desastrosas.
Ejemplo(
int 4abla+&$,+&$,-
double 5uin4abla+6,+%6,+%6,+%$,+&6,-
5uin4abla+7,+%%,+$,+8,+9, 0 5uin4abla+$,+%&,+6,+7,+%,-
4abla+$,+$, 10 4abla+:,+:,-
#ada elemento de 8abla, desde 8ablaVEWVEW hasta 8ablaVLWVLW es un entero. .el mismo
modo, cada elemento de Duin8abla es un real de alta precisin.
ASIGNACION DE ARREGLOS:
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Los arreglos pueden ser inicialiados en la declaracin.
Ejemplos(
float MV)EW G <-, 0-, 1.4, -, ), E.2, 0, 7, E, )-=C
float 6VW G <-, 0-, 1.4, -, ), E.2, 0, 7, E, )-=C
int +VW G <), -, 0, 4=C
int LVWV0W G < -)0, 0-, 0-, 0-, 10, 0-, 0, 10, -)=C
char 6ensajeVW G XError de lecturaXC
En estos casos no es obligatorio especificar el tama/o para la primera dimensin, como
ocurre en los ejemplos de las l!neas -, 0, 1 y 2. En estos casos la dimensin que queda
indefinida se calcula a partir del n"mero de elementos en la lista de valores iniciales.
En el caso -, el n"mero de elementos es )E, ya que hay die valores en la lista.
En el caso 0, ser, 1.
En el caso 1, ser, 0, ya que hay L valores, y la segunda dimensin es 0( L/0G0.
Q en el caso 2, el n"mero de elementos es )5, )4 caracteres m,s el cero de fin de cadena.
ALGORITMOS DE ORDENACION8 METODO DE LA 6UR6URA:
Una operacin que se hace muy a menudo con los arreglos, sobre todo con los de una
dimensin, es ordenar sus elementos.
.edicaremos m,s cap!tulos a algoritmos de ordenacin, pero ahora veremos uno de los m,s
usados, aunque no de los m,s eficaces, se trata del mtodo de la burbuja.
#onsiste en recorrer la lista de valores a ordenar y compararlos dos a dos. Fi los elementos
est,n bien ordenados, pasamos al siguiente par, si no lo est,n los intercambiamos, y
pasamos al siguiente, hasta llegar al final de la lista. El proceso completo se repite hasta que
la lista est, ordenada.
Lo veremos mejor con un ejemplo(
Trdenar la siguiente lista de menor a mayor(
)2, 0, 7, 4, )7, ).
Empeamos comparando )2 y 0. #omo est,n mal ordenados los intercambiamos, la lista
quedar,(
0, )2, 7, 4, )7, )
8omamos el siguiente par de valores( )2 y 7, y volvemos a intercambiarlos, y seguimos el
proceso...
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
#uando llegamos al final la lista estar, as!(
0, 4, 7, )2, ), )7
Empeamos la segunda pasada, pero ahora no es necesario recorrer toda la lista. Fi observas
ver,s que el "ltimo elemento est, bien ordenado, siempre ser, el mayor, por lo tanto no ser,
necesario incluirlo en la segunda pasada. .espus de la segunda pasada la lista quedar,(
0, 4, 7, ), )2, )7
+hora es el )2 el que ocupa su posicin final, la pen"ltima, por lo tanto no ser, necesario
que entre en las comparaciones para la siguiente pasada. Las sucesivas pasadas dejar,n la
lista as!(
0Y 0, 4, ), 7, )2, )7
1Y 0, ), 4, 7, )2, )7
2Y ), 0, 4, 7, )2, )7
5RO6LEMA 1:
Rnicialiar un arreglo con 7 n"meros enteros y determinar el primer mayor, el primer
menor, la suma de sus valores y el valor promedio entre ellos.
Folucin(
#include <conio.h>
#include <iostream.h>

$$ declaraciones glo(ales
int ;+, 0 {&&.7&.&6.9<.68.<=.&9.%<}-
int n=8;

$$ %uncion principal
void main'*;
$$ declaracion de varia(les
int ma1or, menor, suma;
int ind#a1, ind#en, i;
dou(le promedio;

$$ 4eterminar indice del primer ma1or 1 del primer
menor
ma1or = ;+$,- ind#a1 =; $$ supuesto del primer
valor
menor = ;+$,- ind#en =; $$ supuesto del primer
valor
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
suma = ; $$ acumulador de
suma
%or 'i = ; i < n; i,,*;
i% ' ;+i, > ma1or *
ind#a1 = i;

i% ' ;+i, < menor *
ind#en = i;

suma ,= ;+i,-
>

$$ calcular promedio
promedio = suma*+.$n;
$$ #ostrar resultados
cout << set&'G* << </rreglo Iniciali2ado< << endl;
%or 'i = ; i < n; i,,*
cprint%'<L!dL+dDrDn<,i,;+i,*;

cprint%'<DrDn#a1or valor = L+d<,;+ind>a?,*;
cprint%'< corresponde al elemento nro. L+d<,ind#a1*;
cprint%'<DrDn#enor valor = L+d<,;+ind>en,*;
cprint%'< corresponde al elemento nro. L+d<,ind#en*;
cprint%'<DrDnHa suma es = L+d<,suma*;
cprint%'<DrDnEl promedio es = L+.7%<,promedio*;
getch'*;
>


5RO6LEMA 7:
#onsidere un arreglo para guardar un m,%imo de -E nombres y otro arreglo para guardar -E
notas correspondientes a los alumnos de un saln. Luego, ingrese los datos
correspondientes y emita un reporte donde se asigne un grado de JsatisfactorioI si la nota
esta en el rango del promedio mas menos )EC JsobresalienteI si la nota esta por encima del
promedio mas )E y, JdeficienteI si la nota esta por debajo del promedio Z )E.
Folucin(

#include <conio.h>
#include <iostream.h>
#include <string.h> $$ para strcp1'*

$$ de%inicion de constantes
#de%ine Ita3e#a) + $$ punta3e ma)imo
#de%ine #a)/lum 7 $$ ma)ima cantidad de alumnos

Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
$$ declaraciones glo(ales
int @otas+>ax;lum,; $$ arreglo de notas
char @ombres+>ax;lum,+&$,; $$ arreglo de nom(res
int n =; $$ cu=ntos se ingresaron
$$ %uncion principal
void main'*;
$$ varia(les
int i, suma;
dou(le Iromedio;
char gradoW5X;
$$ ingresar numero de alumnos
do ;
cout << <Ingresar numero de alumnos <+..<
<< #a)/lum << <>: <;
cin >> n;
cin.ignore'*; $$ ignorar el enter
> &hile 'n > #a)/lum OO n < +*;

$$ Ingreso de datos
%or 'i = ; i < n; i,,* ;
cprint%'<L+sL!dDrDn<,</lumno # < ,i,+*;
cout << <-om(re : <;
cin.getline'@ombres+i,,7*;
do ;
cout << <-ota <..< << Ita3e#a) << <> : <;
cin >> @otas+i,;
cin.ignore'*; $$ ignorar el enter
> &hile ' @otas+i, > Ita3e#a)*;
>

$$ calcular promedio
suma = ;
%or 'i = ; i < n; i,,*
suma ,= @otas+i,;

Iromedio = 'dou(le* suma $ n;

$$ #ostrar resultados
%or 'i = ; i < n; i,,* ;
cprint%'<L7d*L67sL+!d<,i,+,@ombres+i,,@otas+i,*;
i% ' '@otas+i, > Iromedio 6 +* VV
'@otas+i, < Iromedio , +* *
strcp1'grado,< Katis%actorio<*;
else
i% ' @otas+i, > Iromedio , + *
strcp1'grado,< Ko(resaliente<*;
else
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
strcp1'grado,< 4e%iciente <*;
cprint%'<L7sDrDn<,grado*;
>

cprint%'<DrDnIunta3e Iromedio: L+.7%<,Iromedio*;

getch'*;
>


5RO6LEMA <:
#onsidere un arreglo para un m,%imo de -E n"meros enteros e ingrselos evitando que se
repitan.
Folucin(
$*
-ame: pG5
/uthor: 0e1es #ar2ano, /le3andro
4escription: .onsidere un arreglo para un m=)imo de 7
nYmeros
enteros e ingr[selos evitando ?ue se repitan.
4ate: 75$+$8 7:
.op1right:
*$
#include <iostream.h>
#include <stdli(.h>
int main'*;
int /W7X,au),cont=;
(ool s&=%alse;
cout<<<Ingrese los numero :Dn<;
&hile'cont<7*;
cin>>au);
int i=;
&hile'i<cont VV ]s&*;
i%'/WiX==au)*
s&=true;
i,,;
>
i%']s&*;
/WcontX=au);
cont,,;
>
else;
cout<<<-umero 0epetido :<;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
s&=%alse;
>
>
cont=;
cout<<<Hos numeros son:Dn<;
&hile'cont<7*;
au)=/WcontX;
cout<<au)<<endl;
cont,,;
>
s1stem'<I/JKE<*;
return ;
>

5RO6LEMA C:
#onsidere dos arreglos de )E n"meros enteros cada uno. Rnicialice los arreglos y en un
tercer arreglo guarde la suma de cada casillero. Luego muestre el contenido de los 0
arreglos en forma de tabla marcando con un H aquellos que tengan la mayor suma.
Folucin(
$*
-ame: pGG
/uthor: 0e1es #ar2ano, /le3andro
4escription: .onsidere dos arreglos de + nYmeros enteros
cada uno.
Inicialice los arreglos 1 en un tercer
arreglo guarde
la suma de cada casillero. Huego muestre el
contenido
de los 5 arreglos en %orma de ta(la marcando
con un * a?uellos ?ue tengan la ma1or suma.
4ate: 75$+$8 7:+F
.op1right: %isiBunmsm Hima6Ieru
*$
#include <iostream.h>
#include <stdli(.h>
int main'*;
int /W+X=;+!,+\,7,55,5\,58,E7,8!\,!,+7>;
int HW+X=;+7,E,!8!,+!,\E,F!,75\,!G,!7,5!>;
int EW+X;
%or'int i=;i<+;i,,*;
EWiX=/WiX,HWiX;
>
int suma=,med;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
%or'int i=;i<+;i,,*;
suma,=EWiX;
>
med=suma$+;
cout<<<DnIromedio = <<<med<<endl;
%or'int i=;i<+;i,,*;
cout<<< <<<EWiX<<< = <<</WiX<<< , <<<HWiX;
i%'EWiX>med*
cout<<< * <<<endl;
else
cout<<endl;
>
s1stem'<I/JKE<*;
return ;
>

5RO6LEMA ::
#onsidere un arreglo para guardar un m,%imo de )E nombres de producto diferentes, otro
arreglo para guardar el precio de cada producto y otro arreglo para guardar la cantidad en
stoc[. Escriba un programa que permita desarrollar el siguiente men" de opciones(
V)W Rngreso de datos
V-W Listado general
V0W Listado de productos m,s caros
V1W Listado de productos bajo stoc[ :menos de )E;
VEW Sin
Folucin(
-ame: pGG
/uthor: 0e1es #ar2ano, /le3andro
4escription: .onsidere dos arreglos de + nYmeros enteros
cada uno.
Inicialice los arreglos 1 en un tercer
arreglo guarde
la suma de cada casillero. Huego muestre el
contenido
de los 5 arreglos en %orma de ta(la marcando
con un * a?uellos ?ue tengan la ma1or suma.
4ate: 75$+$8 7:+F
.op1right: %isiBunmsm Hima6Ieru
*$
#include <iostream.h>
#include <stdli(.h>
#include <stdio.h>
#de%ine -J#B#/M +
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
int main'*;
char nom(resW-J#B#/MXW+X;
%loat stocAW-J#B#/MX;
%loat preciosW-J#B#/MX;
int op,tope=;
do;
s1stem'<cls<*;
cout<<<W+X para ingresar datosDn<;
cout<<<W7X para Ser listado ZeneralDn<;
cout<<<W5X para Ser los precios mas altosDn<;
cout<<<WGX para Ser los stocA mas (a3osDn<;
cout<<<WX Kalir del IrogramaDn<;
cout<<<DnIngrese la opccion : <;
cin>>op;
s&itch'op*;
case +:; s1stem'<cls<*;
$$leer datos
int val;
cout<<<ingrese numero de Iroductos:<;
cin>>val;
i%'tope,val<-J#B#/M*;
%or'int i=;i<val;i,,*;
cout<<<DnIngrese nom(res del
<<<tope,i,+<<< producto: <;
gets'nom(resWtope,iX*;
cout<<<DnIngrese el precio del :
<<<nom(resWtope,iX<<< : <;
cin>>preciosWtope,iX;
cout<<<DnIngrese el stocA del :
<<<nom(resWtope,iX<<< : <;
cin>>stocAWtope,iX;
>
tope,=val;
>
else;
cout<<<%uera de rango Dn<;
>
>(reaA;
case 7:;s1stem'<cls<*;
$$mostrar datos
cout<<<IroductoDtDtIrecioDtDtDtKtocADn<;
cout<<<********DtDt******DtDtDt*******Dn<;
%or'int i=;i<tope;i,,*;
print%'<LsDtDtDtL%DtDt
L%Dn<,nom(resWiX,preciosWiX,stocAWiX*;
>
print%'<Dn<*;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
s1stem'<I/JKE<*;
>(reaA;
case 5:;s1stem'<cls<*;
$$productos mas caros
cout<<<I0E.IQK #/K /HUQK : DnDn<;
%loat temp+,temp7;
char temp5W+X;
%or'int 3=;3<tope;3,,*;
%or'int i=;i<tope6+;i,,*;
i%'preciosWiX<preciosWi,+X*;
temp+=preciosWiX;
temp7=stocAWiX;
temp5=nom(resWiX;
preciosWiX=preciosWi,+X;
stocAWiX=stocAWi,+X;
nom(resWiX=nom(resWi,+X;
preciosWi,+X=temp+;
stocAWi,+X=temp7;
nom(resWi,+X=temp5;
>
>
>
$$mostrar datos
cout<<<IroductoDtDtIrecioDtDtDtKtocADn<;
cout<<<********DtDt******DtDtDt*******Dn<;
%or'int i=;i<tope;i,,*;
print%'<LsDtDtDtL%DtDt
L%Dn<,nom(resWiX,preciosWiX,stocAWiX*;
>
print%'<Dn<*;
s1stem'<I/JKE<*;
>(reaA;
case G:;s1stem'<cls<*;
$$stocATs mas (a3os
cout<<<KUQ.C #/K N/`QK:Dn<;
%loat temp+,temp7;
char temp5W+X;
%or'int 3=;3<tope;3,,*;
%or'int i=;i<tope6+;i,,*;
i%'stocAWiX>stocAWi,+X*;
temp+=preciosWiX;
temp7=stocAWiX;
temp5=nom(resWiX;
preciosWiX=preciosWi,+X;
stocAWiX=stocAWi,+X;
nom(resWiX=nom(resWi,+X;
preciosWi,+X=temp+;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
stocAWi,+X=temp7;
nom(resWi,+X=temp5;
>
>
>
$$mostrar datos
cout<<<IroductoDtDtIrecioDtDtDtKtocADn<;
cout<<<********DtDt******DtDtDt*******Dn<;
%or'int i=;i<tope;i,,*;
print%'<LsDtDtDtL%DtDt
L%Dn<,nom(resWiX,preciosWiX,stocAWiX*;
>
print%'<Dn<*;
s1stem'<I/JKE<*;
>(reaA;
case : e)it'*;
(reaA;
de%ault:cout<<<-o e)iste esa opcion Dn<;
>
>&hile'op]=*;
s1stem'<I/JKE<*;
return ;
>
MODULO 0:: FUNCIONES
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
CONCE5TO(
Las funciones son un conjunto de instrucciones que realian una tarea espec!fica. En
general toman unos valores de entrada, llamados par,metros y proporcionan un valor de
salida o valor de retornoC aunque tanto unos como el otro pueden no e%istir.
8al ve sorprenda que las introduca tan pronto, pero como son una herramienta muy
valiosa, y se usan en todos los programas #$$, creo que debemos tener, al menos, una
primera nocin de su uso. +l igual que con las variables, las funciones pueden declararse y
definirse. Una declaracin es simplemente una presentacin, una definicin contiene las
instrucciones con las que realiar, su trabajo la funcin.
En general, la definicin de una funcin se compone de las siguientes secciones, aunque
pueden complicarse en ciertos casos(
Tpcionalmente, una palabra que especifique el tipo de almacenamiento, puede ser
Xe%ternX o XstaticX. Fi no se especifica es Xe%ternX. 'o te preocupes de esto todav!a, de
momento slo usaremos funciones e%ternas, slo lo menciono porque es parte de la
declaracin. Una pista( las funciones declaradas como e%tern est,n disponibles para todo el
programa, las funciones static pueden no estarlo.
El tipo del valor de retorno, que puede ser XvoidX, si no necesitamos valor de retorno. Fi no
se establece, por defecto ser, XintX. +unque en general se considera de mal gusto omitir el
tipo de valor de retorno.
6odificadores opcionales. 8ienen un uso muy espec!fico, de momento no entraremos en
este particular, lo veremos en cap!tulos posteriores.
El nombre de la funcin. Es costumbre, muy "til y muy recomendable, poner nombres que
indiquen, lo m,s claramente posible, qu es lo que hace la funcin, y que permitan
interpretar qu hace el programa con slo leerlo. #uando se precisen varias palabras para
conseguir este efecto e%isten varias reglas aplicables de uso com"n. Una consiste en separar
cada palabra con un XBX, la otra, que yo prefiero, consiste en escribir la primera letra de
cada palabra en may"scula y el resto en min"sculas. &or ejemplo, si hacemos una funcin
que busque el n"mero de telfono de una persona en una base de datos, podr!amos llamarla
XbuscaBtelefonoX o XOusca8elefonoX.
Una lista de declaraciones de par,metros entre parntesis. Los par,metros de una funcin
son los valores de entrada :y en ocasiones tambin de salida;. &ara la funcin se comportan
e%actamente igual que variables, y de hecho cada par,metro se declara igual que una
variable. Una lista de par,metros es un conjunto de declaraciones de par,metros separados
con comas. &uede tratarse de una lista vac!a. En # es preferible usar la forma Xfunc:void;X
para listas de par,metros vac!as. En #$$ este procedimiento se considera obsoleto, se usa
simplemente Xfunc:;X.
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Un cuerpo de funcin que representa el cdigo que ser, ejecutado cuando se llame a la
funcin. El cuerpo de la funcin se encierra entre llaves X<=X.

Una funcin muy especial es la funcin XmainX. Fe trata de la funcin de entrada, y debe
e%istir siempre, ser, la que tome el control cuando se ejecute un programa en #$$.
Los programas \indoPs usan la funcin \in6ain:; como funcin de entrada, pero esto se
e%plica en otro lugar.
E%isten reglas para el uso de los valores de retorno y de los par,metros de la funcin
XmainX, pero de momento la usaremos como Xint main:;X o Xint main:void;X, con un entero
como valor de retorno y sin par,metros de entrada. El valor de retorno indicar, si el
programa ha terminado sin novedad ni errores retornando cero, cualquier otro valor de
retorno indicar, un cdigo de error.
En #$$ es obligatorio usar prototipos. Un prototipo es una declaracin de una funcin.
#onsiste en una definicin de la funcin sin cuerpo y terminado con un XCX. La estructura de
un prototipo es(
<tipo> func(<lista de declaracin de parAmetros>)-
&or ejemplo(
int >a?or(int a. int b)-
Firve para indicar al compilador los tipos de retorno y los de los par,metros de una funcin,
de modo que compruebe si son del tipo correcto cada ve que se use esta funcin dentro del
programa, o para hacer las conversiones de tipo cuando sea necesario. Los nombres de los
par,metros son opcionales, y se incluyen como documentacin y ayuda en la interpretacin
y comprensin del programa. El ejemplo de prototipo anterior ser!a igualmente v,lido y se
podr!a poner como(
int >a?or(int.int)-
Esto slo indica que en alg"n lugar del programa se definir, una funcin X6ayorX que
admite dos par,metros de tipo XintX y que devolver, un valor de tipo XintX. 'o es necesario
escribir nombres para los par,metros, ya que el prototipo no los usa. En otro lugar del
programa habr, una definicin completa de la funcin.
'ormalmente, las funciones se declaran como prototipos dentro del programa, o se
incluyen estos prototipos desde un fichero e%terno, :usando la directiva X>includeX, ya lo
hemos dicho m,s arriba, pero las funciones son Xe%ternX por defecto. Esto quiere decir que
son accesibles desde cualquier punto del programa, aunque se encuentren en otros ficheros
fuente del mismo programa. En contraposicin las funciones declaradas XstaticX slo son
accesibles dentro del fichero fuente donde se definen.
La definicin de la funcin se hace m,s adelante o m,s abajo, seg"n se mire. Lo habitual es
hacerlo despus de la funcin XmainX.
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
La estructura de un programa en # o #$$ quedar!a as!(
+directivas del preBprocesador! includes ? defines,
+declaracin de variables globales,
+prototipos de funciones,
funcin main
+definiciones de funciones,
Una definicin de la funcin X6ayorX podr!a ser la siguiente(
int >a?or(int a. int b){
if(a > b)
return a-
else
return b-
}
Los programas complejos se escriben normalmente usando varios ficheros fuente.
Estos ficheros se compilan separadamente y se enlaan juntos. Esto es una gran ventaja
durante el desarrollo y depuracin de grandes programas, ya que las modificaciones en un
fichero fuente slo nos obligar,n a compilar ese fichero fuente, y no el resto, con el
consiguiente ahorro de tiempo. La definicin de las funciones puede hacerse dentro de los
ficheros fuente o enlaarse desde librer!as pres compilados. La diferencia entre una
declaracin y una definicin es que la definicin posee un cuerpo de funcin.
En #$$ es obligatorio el uso funciones prototipo, y aunque en # no lo es, resulta altamente
recomendable.
O6RETIVO(
Fimplificar y reducir el cuerpo de cualquier funcin hacindola m,s entendible y mejor
organiada.

ES!UEMA(
&ara incorporar funciones en un programa #$$, debe considerarse el siguiente esquema
general(
$$ li(rerias
c
$$ prototipos de las %unciones
tipoBdeBdato nom(re'lista de par=metros*;
$$ varia(les glo(ales
c.
$$ %uncion principal
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
void main'*;
$$4eclaraciones locales
c.
$$llamadas
c
>
$$ desarrollo de los prototipos
tipoBdeBdato nom(re'lista de par=metros*;
$$ declaraciones locales
$$ cuerpo de la %unci:n
>
$$ li(rerias
c

$$ prototipos de las %unciones
tipoBdeBdato nom(re'lista de par=metros*;

$$ varia(les glo(ales
c.
$$ %uncion principal
void main'*;
$$4eclaraciones locales
c.
$$llamadas
c
>
$$ desarrollo de los prototipos
tipoBdeBdato nom(re'lista de par=metros*;
$$ declaraciones locales
$$ cuerpo de la %unci:n
>

5ROTOTI5OS
E%isten 1 formas de escribir un prototipo de alguna funcin(
#uando la funcin es FR' ME8TM'T y FR' &+M+6E8MTF
void nombre()-

#uando la funcin es FR' ME8TM'T y #T' &+M+6E8MTF
void nombre(lista de parAmetros)-

Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
#uando la funcin es #T' ME8TM'T y FR' &+M+6E8MTF
tipo_de_dato nombre()-

#uando lafuncin es #T' ME8TM'T y#T' &+M+6E8MTF
tipo_de_dato nombre(lista de parAmetros)-

LLAMADAS:
Feg"n el prototipo de una funcin, las llamadas pueden realiarse de las siguientes formas(
&ara funciones FR' ME8TM'T(
nom(re'lista de valores separados por comas*;
&ara funciones #T' ME8TM'T(
variable 0 nombre()-
variable 0 nombre(lista de valores separados por comas)-

DESARROLLO DE LOS 5ROTOTI5OS:
Feg"n el prototipo de una funcin, el desarrollo tiene el siguiente esquema(

&ara funciones FR' ME8TM'T y FR' &+M+6E8MTF
void nombre(){
// declaraciones locales
Cuerpo de la funcin
}

&ara funciones FR' ME8TM'T(y #T' &+M+6E8MTF(
void nombre(lista de parAmetros separados por comas){
// declaraciones locales
Cuerpo de la funcin
}
&ara funciones #T' ME8TM'T y FR' &+M+6E8MTF
tipo_de_dato nombre(){
// declaraciones locales
Cuerpo de la funcin
return valor-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
}

&ara funciones #T' ME8TM'T y #T' &+M+6E8MTF
tipo_de_dato nombre(lista de parAmetros separados por comas){
// declaraciones locales
Cuerpo de la funcin
return valor-
}

La lista de par,metros no es otra cosa que una lista de 0(ri(%&"# que tienen ti$o d" d(to y
no'%r".

Los par,metros sirven para que la funcin r"ci%( valores cuando sea llamada. 8ambin
sirven para que la funcin retorne valores. Fin embargo, para ste propsito el nombre de la
variable debe estar precedido por el s!mbolo S que indica que el par,metro se pasa por
referencia, es decir lo que se pasa es la referencia a la direccin de memoria de la variable,


5RO6LEMA 1:
.eterminar la suma de los n primeros trminos de la siguiente serie(

), 1, 5, )E, )0, 99

Utilice funciones CON variables globales en su solucin(
Folucin(

/D
@ame! p$6$%
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Heterminar la suma de los n primeros
tIrminos de la siguiente serie!%.8.<.%$.%7
Hate! &8/$%/$= %$!68
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Jinclude <conio/)>
Jinclude <conio/c>
Jinclude <iostream/)>
Jinclude <iomanip/)>

// prototipos
void leer()-
void proceso()-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
void resultado()-

// variables globales
int n. suma0$. valor0%-

// funcion principal
void main(){
// llamadas
leer()-
proceso()-
resultado()-
}
// desarrollo de prototipos
//funcin leer lee la cantidad de elementos
void leer(){
cout <<KCuantos terminos! K-
cin >> n-
}
//funcion de procesamiento
void proceso(){
for (int i0%- i<0n- i11){
cout<<valor-
if (i<n) cout <<K.K-
suma 10 valor-
valor 10 7-
}
}
//funcion Lue muestra en pantalla los resultados
void resultado(){
cout<<endl<<K"uma! K<<suma<<endl-
getc)()-
}
5RO6LEMA 7:
.eterminar la suma de los n primeros trminos de la siguiente serie(
Utilice funciones SIN variables globales en su solucin(
Folucin(

/D
@ame! p$6$&
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Heterminar la suma de los n primeros
tIrminos de la siguiente serie!expresion
de ta?lor
Hate! &8/$%/$= %$!68
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Jinclude <conio/)>
Jinclude <conio/c>
Jinclude <iostream/)>
Jinclude <iomanip/)>
Jinclude <mat)/)>
// prototipos
int lee@()-
double leeM()-
double suma"erie(int n. double x)-
int factorial(int n)-
void imprime(double rpta)-
// funcion principal
void main(){
int n0lee@()- // llamada a lee@()
double x0leeM()- // llamada a leeM()
double suma0suma"erie(n.x)- // llamada a suma"erie()
imprime(suma)- // llamada a imprime()
}
// desarrollo de prototipos
int lee@(){
int n-
cout <<KCuantos terminos! K- cin >> n-
return n-
}
double leeM(){
double x-
cout <<KNalor de M! K- cin >> x-
return x-
}
double suma"erie(int n. double x){
double suma0$-
for (int cont0%- cont<0n- cont11){
suma 10 po((x.cont)/factorial(cont)-
}
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
return suma-
}
int factorial(int n){
int f0%-
for (int c0%- c<0n- c11){
f D0 c- // f 0 f D c-
}
return f-
}
void imprime(double rpta){
cout << endl<< Ksuma de serie! K<<rpta-
getc)()-
}

5RO6LEMA <:
.ado un n"mero entero, determinar la suma de sus d!gitos, el n"mero de d!gitos que tiene y
el n"mero que resulta de invertir sus d!gitos. &resentar un men" de opciones para elegir el
proceso que se desea desarrollar.

Utilice funciones SIN variables globales en su solucin(
Folucin(

/D
@ame! p$6$7
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Hado un nOmero entero. determinar la suma
de sus
d'gitos. el nOmero de d'gitos Lue tiene ?
el nOmero
Lue resulta de invertir sus d'gitos/
Presentar un menO de opciones para elegir
el proceso
Lue se desea desarrollar/
Hate! &8/$%/$= %%!$=
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Jinclude <conio/)>
Jinclude <conio/c>
Jinclude <iostream/)>
Jinclude <iomanip/)>
Jinclude <mat)/)>
// prototipos
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
int menu()-
int lee@umero()-
int sumaHigitos(int n)-
int numeroHigitos(int n)-
int invierte(int n)-

// funcion principal
void main(){
int opcion. n-
do{
opcion0menu()-
s(itc)(opcion){
case %!
n0lee@umero()-
cout<<KQa suma de digitos es!
K<<sumaHigitos(n)<<endl-
brea*-
case &!
n0lee@umero()-
cout<<K@umero de digitos!
K<<numeroHigitos(n)<<endl-
brea*-
case 7!
n0lee@umero()-
cout<<K@umero invertido es!
K<<invierte(n)<<endl-
brea*-
}
}()ile(opcion30$)-
}
//desarrollo de funciones propias
int menu(){
int opcion-
cout<<KDDDDDDDDDDDDDDDDDDDDDDDDDDDDDK<<endl-
cout<<K+%, suma digitosK<<endl-
cout<<K+&, cuantos digitosK<<endl-
cout<<K+7, invierte numeroK<<endl-
cout<<K+$, finK<<endl-
cout<<KRPCIR@! K-
cin>>opcion-
cout<<KDDDDDDDDDDDDDDDDDDDDDDDDDDDDDK<<endl-
return opcion-
}
int lee@umero(){
int n-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
cout<<Kingresa un numero entero! K- cin>>n-
return n-
}
int sumaHigitos(int n){
int suma0$. digito-
()ile(n>$){
digito0nS%$-
suma 10 digito-
n /0%$-
}
return suma-
}
int numeroHigitos(int n){
int cont0$-
()ile(n>$){
cont11-
n /0 %$-
}
return cont-
}
int invierte(int n){
int digito. ninv0$. ndig-
ndig0numeroHigitos(n)-
for (int i0%- i<0ndig- i11){
digito0nS%$-
ninv 10 digitoD(int)po((%$.ndigBi)- //parte entera
n /0 %$-
}
return ninv-
}
5RO6LEMA C:
Escriba un programa que permita dibujar un rect,ngulo relleno con asteriscos. El largo y el
ancho deben ser datos ingresados.
Utilice funciones FR' variables globales en su solucin.
Folucin(
/D
@ame! p$6$8
;ut)or! Ee?es >arFano. ;leGandro
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Hescription! Escriba un programa Lue permita dibuGar un
rectAngulo
relleno con asteriscos/ El largo ? el
anc)o deben
ser datos ingresados/
Hate! &8/$%/$= %%!%9
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Jinclude <iostream/)>
Jinclude <conio/)>
//prototipos
void rectangulo(int a. int b)-
int leer;ltura()-
int leer;nc)o()-
//funcion principal rectangulo
void main(){
// llamadas
int a0leer;ltura()-
int b0leer;nc)o()-
rectangulo(a.b)-
getc)e ()-
}
// desarrollo de prototipos
int leer;ltura(){
int a-
cout<<KI@TEE"E ;Q4UE;!K-
cin>>a-
return a-
}
int leer;nc)o(){
int b-
cout<<KI@TEE"E ;@CVR!K-cin>>b-
return b-
}
void rectangulo(int a. int b){
int i.G-
for (int i0%- i<0a- i11){
for (int G0%- G<0b- G11)
cout <<KDK-
cout<<endl-
}
getc)e()-
}

5RO6LEMA ::
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Escriba un programa que permita dibujar un tri,ngulo rect,ngulo issceles relleno con
asteriscos. El lado debe ser ingresado.
Utilice funciones FR' variables globales en su solucin.
Folucin(
/D
@ame! p$6$6
;ut)or! Ee?es >arFano. ;leGandro
Hescription! grafica un triangulo con contorno de
asteriscos
Hate! &8/$%/$= %%!%9
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Jinclude <iostream/)>
Jinclude <conio/)>
//prototipos
int leerQado()-
void trianguloisosceles(int l)-
//funcion principal triangulo
void main(){
//llamadas
int l0leerQado()-
trianguloisosceles(l)-
getc)e ()-
}
//desarrollo de prototipos
int leerQado(){
int l-
cout<<KI@TEE"E Q;HR!K-cin>>l-
return l-
}
void trianguloisosceles(int l){
int i.G-
for(i0%-i<0l-i11) {
for(G0%-G<0i-G11)
cout<<KDK-
cout<<endl-
}
getc)e()-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
}

5RO6LEMA G:
Escriba un programa que permita dibujar un rombo relleno con asteriscos. El tama/o debe
ser ingresado.
Utilice funciones FR' variables globales en su solucin.
Folucin(
/D
@ame! p$6$9
;ut)or! Ee?es >arFano. ;leGandro
Hescription! grafica un rombo con relleno de asteriscos
Hate! &8/$%/$= %%!&:
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Jinclude <conio/)>
Jinclude <iostream/)>
//prototipos
int leerHiagonal()-
void rombo(int d)-
//funcion principal
void main(){
//llamadas
int d0leerHiagonal()-
rombo(d)-
getc)e()-
}
//desarrollo de los prototipos
int leerHiagonal(){
int d-
cout<<KIngrese diagonal del romboK-cin>>d-
return d-
}
void rombo(int d){
int v.).f.c-
f0%-
v0d/&1%-
)0d/&1%-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
()ile(f<0d/&1%){
for(c0%-c<0d-c11){
if(v<0c 22 c<0))
cout<<KDK-
else
cout<<K K-
}
cout<<endl-
v0vB%-
)0)1%-
f0f1%-
}
v0&-
)0dB%-
()ile(f<0d){
for(c0%-c<0d-c11){
if(v<0c 22 c<0))
cout<<KDK-
else
cout<<K K-
}
cout<<endl-
v0v1%-
)0)B%-
f0f1%-
}
getc)e()-
}

5RO6LEMA H:
.ado un n"mero entero positivo escriba una funcin que retorne un nuevo n"mero pero
slo con las cifras pares que contenga.
Folucin(
/D
@ame! p$6$<
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Hado un nOmero entero positivo escriba una
funcin
Lue retorne un nuevo nOmero pero slo con
las cifras
pares Lue contenga/
Hate! &8/$%/$= %%!8:
Cop?rig)t! fisi_unmsm limaBperu
D/
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
// librerias
Jinclude <conio/)>
Jinclude <iostream/)>
Jinclude <mat)/)>
//prototipos
long leer@()-
long numCifrasPares(long n)-
//funcion principal
void main(){
//llamadas
long n0leer@()-
n0numCifrasPares(n)-
if(n00$){
cout<<KWn@o tiene cifras pares ///WnK-
}
else{
cout<<KWnel numero formado por las cifras pares es!W
nK<<n<<endl-
}
getc)e()-
}
long leer@(){
long n-
cout<<KIngrese un numero!WnK-
cin>>n-
return n-
}
long numCifrasPares(long n){
long a.aux0$-
int i0$-
()ile(n30$){
a0nS%$-
n0n/%$-
if(aS&00$){
aux10aD(int)po((%$.i)-
i11-
}
}
return aux-
}

5RO6LEMA J:
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
.ado un n"mero entero positivo escriba una funcin que retorne el mayor n"mero posible
con sus cifras.
Folucin(
/D
@ame! p$6$=
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Hado un nOmero entero positivo escriba una
funcin
Lue retorne el ma?or nOmero posible con
sus cifras/
Hate! &8/$%/$= %&!%=
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Jinclude <conio/)>
Jinclude <iostream/)>
Jinclude <mat)/)>
//prototipos
long leer@()-
long num>a?or(long n)-
int numCifars(long n)-
void ordenar(int v+,.int n)-
//funcion principal
void main(){
//llamadas
long n0leer@()-
cout<<KEl ma?or numero con cifras de K<<n<<K es !
K<<num>a?or(n)-
getc)e()-
}
long leer@(){
long n-
cout<<KIngrese un numero!WnK-
cin>>n-
return n-
}
long num>a?or(long n){
int t0numCifars(n)-
int v+t,.i0$-
()ile(n30$){
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
v+i,0nS%$-
i11-
n0n/%$-
}
ordenar(v.t)-
long aux0$-
for(i0$-i<t-i11){
aux10v+i,D(int)po((%$.i)-
}
return aux-
}
void ordenar(int v+,.int n){
int temp-
for(int G0$-G<n-G11){
for(int i0$-i<nB%-i11){
if(v+i,>v+i1%,){
temp0v+i,-
v+i,0v+i1%,-
v+i1%,0temp-
}
}
}
}
int numCifars(long n){
int num0$-
()ile(n30$){
n0n/%$-
num11-
}
return num-
}
5RO6LEMA L:
.ado un n"mero entero positivo escriba una funcin que retorne la cifra que m,s se repite.
&or ejm( dado el n"mero 102-2, la respuesta debe ser( 2
Folucin(
/D
@ame! p$6$:
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Hado un nOmero entero positivo escriba una
funcin
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Lue retorne la cifra Lue mAs se repite/
Por eGm!
dado el nOmero 876&6. la respuesta debe
ser! 6
Hate! &8/$%/$= %&!7&
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Jinclude <conio/)>
Jinclude <iostream/)>
Jinclude <mat)/)>
//prototipos
long leer@()-
int numCifars(long n)-
int cifraEepetida(long n)-
//funcion principal
void main(){
//llamadas
long n0leer@()-
cout<<KQa cifra L mas se repite es K<<cifraEepetida(n)-
getc)e()-
}
long leer@(){
long n-
cout<<KIngrese un numero!WnK-
cin>>n-
return n-
}
int numCifars(long n){
int num0$-
()ile(n30$){
n0n/%$-
num11-
}
return num-
}
int cifraEepetida(long n){
int t0numCifars(n).i.G-
int v+t,-
for(i0$-i<t-i11){
v+i,0nS%$-
n/%$-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
}
int ma?or0$.aux0v+$,-
for(i0$-i<tB%-i11){
int cont0$-
for(G0i1%-G<t-G11){
if(v+i,00v+G,){
cont11-
}
}
if(cont>ma?or){
ma?or0cont-
aux0v+i,-
}
}
return aux-
}
FUNCIONES RECURSIVAS
CARACTERISTICAS:
Fe llaman as! mismo tantas veces como lo permite la condicin de finaliacin.
'o se debe declarar variables locales.
'o se debe utiliar estructuras iterativas en su desarrollo :/or, K2i&";
Folamente el i/,
Fimplifican las estructuras de cdigo a cambio de un mayor consumo de memoria.
&ueden ser de dos tipos(
Fin retorno
#on retorno
Sin r"torno
:0oid '(in?@M ;
Rda antes de llamada
3uelta despus de llamada
E+"rcicio#
). .ada un n"mero entero positivo muestra los n"meros naturales hasta dicho n"mero en
forma descendente.
/D
@ame! p$6rec$%
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Hada un nOmero entero positivo muestra los
nOmeros
naturales )asta dic)o nOmero en forma
descendente
Hate! &8/$%/$= %7!8<
Cop?rig)t! fisi_unmsm limaBperu
D/
// librerias
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Jinclude <conio/)>
Jinclude <iostream/)>
Jinclude <mat)/)>
//prototipos
long leer@()-
void mostraEec(long n)-
//variables globales
long >;M_@U>0$-
//funcion principal
void main(){
//llamadas
long n0leer@()-
>;M_@U>0n-
mostraEec(n)-
getc)e()-
}
long leer@(){
long n-
cout<<KIngrese un numero!WnK-
cin>>n-
return n-
}
void mostraEecHescendente(long n){
if(n30$){
cout<<K K<<n-
mostraEec(nB%)-
}
}
-. .ada un n"mero entero positivo muestra los n"meros naturales pares hasta dicho n"mero
en forma ascendente.
void mostraEec;scendente(long n){
if(n30>;M_@U>1%){
cout<<K K<<n-
mostraEec(n1%)-
}
}
0. .ada un n"mero entero positivo muestra los n"meros naturales impares hasta dicho n"mero
en forma ascendente.
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
void mostraEecHescendente(long n){
if(n30$){
cout<<K K<<n-
mostraEec(nB&)-
}
}
1. .ada un n"mero entero positivo muestra los n"meros naturales hasta dicho n"mero en
forma ascendente.
void mostraEec;scendente(long n){
if(n30>;M_@U>1%){
cout<<K K<<n-
mostraEec(n1%)-
}
}
Con r"torno
E+"rcicio#
). .ada un numero natural que retorne la suma de dichos n"meros incluyendo al numero dado
long sumaEec(long n){
if(n>$)
return sumaEec(nB%)1n-
else
return $-
}
-. .ada un n"mero natural que retorne el factorial de dichos numero.
long factorial(int n){
if(n00% XX n00$){
return %-
}
else{
return factorial(nB%)Dn-
}
}
0. .ada un numero natural que retorne la suma de los naturales pares comprendidos hasta el
numero dado.
long sumaEec(long n){
if(n>$){
cout<<K 1 K<<n-
return sumaEec(nB&)1n-
}
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
else
return $-
}
1. .ada un numero natural que retorne la suma de los naturales impares comprendidos hasta
el numero dado.
long sumaEec(long n){
if(n>$){
cout<<K 1 K<<n-
return sumaEec(nB&)1n-
}
else
return $-
}
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
MODULO 0G: ARREGLOS 6IDIMENSIONALES CON FUNCIONES
+rreglos bidimensionales se puede considerar como vector de vectores. Es por consiguiente
un conjunto de elementos todos del mismo tipo, en cual el orden de los componentes es
significativo y en el que se necesita especificar dos sub!ndices para poder identificar cada
elemento del arreglo.
Un arreglo bidimensional tambin se denomina matri o tabla, se considera que tiene dos
dimensiones una dimensin por cada sub!ndice y necesita un valor para cada sub!ndice para
poder identificar un elemento individual.
En la notacin est,ndar normalmente el primer sub!ndice se refiere a la fila del arreglo,
mientras que el segundo sub!ndice se refiere a la columna del arreglo.
Ejemplo(
Rnt +V7WV4WC
Es un arreglo de enteros con 7 filas y 4 columnas
)2 - 0 44 77 75
44 L7 44 44- 22 47
0 2- )L7 )-2 )11 -
000 0 ---2 222 -- 0-
--2 2 )L 2 -4 L
772 4 )) 2 -- 44
27 2-- )) -242 -- 0
22 2 )) ))) -- ---
Fi se quiere acceder al elemento de la fila 0 y columna 2 seria de la siguiente forma +V0W
V2WC y elemento en referencia seria cuyo valor es )11.
5RO6LEMA 1:
#onsidere una matri de n"meros enteros de 2 filas % 2 columnas y desarrolle el siguiente
men" de opciones(
V)W Uenerar n"meros aleatorios de - cifras
V-W Fumar filas
V0W Fumar columnas
V1W Fumar diagonal principal
V2W Fumar diagonal secundaria
VEW Sin
Folucin(
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
/D
@ame! p$9$%
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Considere una matriF de nOmeros enteros
de 6 filas x
6 columnas ? desarrolle el siguiente menO
de opciones!
Hate! &8/$%/$= %6!8$
Cop?rig)t! fisi_unmsm limaBperu
D/
//librerias
Jinclude <cstdlib>
Jinclude <iostream>
Jinclude <conio/)>
Jinclude <stdlib/)>
Jinclude <stdio/)>
using namespace std-
//constantes
Jdefine #IQ;" 6
Jdefine CRQU>@;" 6
//prototipos
int menu()-
void opcion%()-
void opcion&()-
void opcion7()-
void opcion8()-
void opcion6()-
void listar()-
int aleatorio(int li. int ls)-
int suma#ila(int f)-
int sumaColumna(int c)-
int sumaHiagonal()-
int sumaHiagonalsec()-
//variables globales
int matriF+#IQ;",+CRQU>@;",-
//funcion principal
int main(int argc. c)ar Dargv+,){
int op-
do{
op0menu()-
s(itc)(op){
case %! opcion%()- brea*-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
case &! opcion&()- brea*-
case 7! opcion7()- brea*-
case 8! opcion8()- brea*-
case 6! opcion6()- brea*-
}
}()ile(op30$)-
s?stem(KP;U"EK)-
return EMI4_"UCCE""-
}
//desarrollo
int menu(){
int op-
cout<<K+%, TeneraK<<endl-
cout<<K+&, "uma #ilasK<<endl-
cout<<K+7, "uma ColumnasK<<endl-
cout<<K+8, "uma Hiagonal PrincipalK<<endl-
cout<<K+6, "uma Hiagonal "ecundariaK<<endl-
cout<<K+$, #inK<<endl-
cout<<KRPCIR@! K- cin>>op-
return op-
}
void opcion%(){
for(int f0$- f<#IQ;"-f11){
for(int c0$- c<CRQU>@;"- c11)
matriF+f,+c,0aleatorio(%$.::)-
}
listar()-
getc)e()-
}
void listar(){
for(int f0$- f<#IQ;"-f11){
for(int c0$- c<CRQU>@;"- c11)
printf(KS6dK. matriF+f,+c,)-
printf(KWrWnK)-
}
}
int aleatorio(int inic. int fin){
int n-
do{
n0rand()D(finBinic1%)/7$$$1inic-
}()ile(n<inicXXn>fin)-
return n-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
}
void opcion&(){
listar()-
for(int f0$- f<#IQ;"- f11)
cout<<K"uma de la fila+K<<f<<K,!
K<<suma#ila(f)<<endl-
getc)e()-
}
int suma#ila(int f){
int suma0$-
for(int c0$- c<CRQU>@;"- c11)
suma 10 matriF+f,+c,-
return suma-
}
void opcion7(){
listar()-
for(int c0$- c<CRQU>@;"- c11)
cout<<K"uma de la columnas+K<<c<<K,!
K<<sumaColumna(c)<<endl-
getc)e()-
}
int sumaColumna(int c){
int suma0$-
for(int f0$- f<#IQ;"- f11)
suma 10 matriF+f,+c,-
return suma-
}
void opcion8(){
cout<<K"uma de la diagonal! K<<sumaHiagonal()<<endl-
getc)e()-
}
int sumaHiagonal(){
int suma0$-
for(int f0$-f<0#IQ;"-f11){
for(int c0$-c<0CRQU>@;"-c11)
if(f00c)
suma10matriF+f,+c,-
}
return suma-
}
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
void opcion6(){
cout<<K"uma de la diagonal secundario!
K<<sumaHiagonalsec()<<endl-
getc)e()-
}
int sumaHiagonalsec(){
int suma0$.i-
i0#IQ;"B%-
for(int c0$-c<0CRQU>@;"-c11){
for(int f0$-f<0#IQ;"-f11)
if((c1f)00i)
suma10matriF+c,+f,-
}
return suma-
}

5RO6LEMA 7:
#onsidere un arreglo de cadenas para los nombres de un m,%imo de )E alumnos. Una
matri de )E % 1 para las notas y otro arreglo para los promedios de cada alumno y
desarrolle el siguiente men" de opciones(
V)W Rngresar datos( nombre y 1 notas por alumno
V-W &romediar sin considerar la nota menor en todos los alumnos
V0W Meportar en forma de tabla mostrando K de aprobados y K de desaprobados
V1W Rdentificar el/los alumnos que hayan alcanado el mayor promedio
V2W Rdentificar el/los alumnos que hayan alcanado el menor promedio
VEW Sin
Folucin(
/D
@ame! p$9$&
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Considere una matriF de nOmeros enteros
de 6 filas x
6 columnas ? desarrolle el siguiente menO
de opciones!
Hate! &8/$%/$= %9!$$
Cop?rig)t! fisi_unmsm limaBperu
D/
//librerias
Jinclude <cstdlib>
Jinclude <iostream>
Jinclude <conio/)>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
Jinclude <stdlib/)>
Jinclude <iomanip/)>
using namespace std-
//constantes
Jdefine filas %$
Jdefine nomb %$
Jdefine col 8
//prototipos
int menu()-
void opcion%()-
void opcion&()-
void prom()-
void opcion7()-
void opcion8()-
void opcion6()-
//variables globales
c)ar nombre+nomb,+&$,-
int notas+filas,+col,-
int promedio+nomb, -
int n-
//funcion principal
int main(int argc. c)ar Dargv+,){
int op-
do{
op0menu()-
s(itc)(op){
case %! opcion%()- brea*-
case &! opcion&()- brea*-
case 7! opcion7()- brea*-
case 8! opcion8()- brea*-
case 6! opcion6()- brea*-
}
}()ile(op30$)-
s?stem(KP;U"EK)-
}
//desarrollo
int menu(){
int op-
cout<<K+%, Ingresar datos! nombre ? 8 notas por
alumnoK<<endl-
cout<<K+&, Promediar sin considerar la nota menor en
todos los alumnosK<<endl-
cout<<K+7, Eeportar en forma de tabla mostrando S de
aprobados ? S de desaprobadosK<<endl-
cout<<K+8, Identificar el/los alumnos Lue )a?an alcanFado
el ma?or promedioK<<endl-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
cout<<K+6, Identificar el/los alumnos Lue )a?an alcanFado
el menor promedio K<<endl-
cout<<K+$, #inK<<endl-
cout<<KRPCIR@! K- cin>>op-
return op-
}
void opcion%(){
int i.d.r-
cout<<KIngrese numero de alumnosK<<endl- cin>>n-
for(d0$-d<n-d11){
cout<<KIngrese nombreK-
cin>>nombre+d,-
cout<<endl-
for( i0$-i<col-i11){
cout<<KIngrese nota K<<i1%<<K ! K-
cin>>r-
notas+d,+i,0r-
cout<<endl-
}
cout<<endl<<endl-
}
getc)e()-
}
void opcion&(){
int temp-
for(int m0$-m<n-m11){
for(int i0$-i<col-i11){
for(int *0%-*<col-*11){
if(notas+m,+i,>notas+m,+*,){
temp0notas+m,+i,-
notas+m,+i,0notas+m,+*,-
notas+m,+*,0temp-
}
}
}
}
int suma0$-
for(int x0$-x<n-x11){
suma0$-
for(int r0%-r<col-r11){
suma10notas+x,+r,-
}
promedio+x,0suma/(colB%)-
cout<<KPromedio de
K<<nombre+x,<<K0K<<promedio+x,<<endl-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
}
getc)e()-
}
void opcion7(){
int ap0$.des0$-
float a.b-
cout<<set((%$)<<K;QumnoK<<set((9)<<set((%$)<<KestadoK<<en
dl<<endl-
for(int i0$-i<n-i11){
if(promedio+i,>%%){
cout<<set((%$)<<nombre+i,<<set((9)<<set((%$)<<K
;PERY;HRK<<endl-
ap0ap1%-
}
else{
cout<<set((%$)<<nombre+i,<<set((9)<<set((%$)<<K
HE";PERY;HRK<<endl-
des0des1%-
}
}
a0(apD%$$)D%/$/n-
b0(desD%$$)D%/$/n-
cout<<set((%$)<<K;PERY;HRK<<set((&$)<<set((&$)<<KHE";PERY
;HRK<<endl<<endl-
cout<<set((%$)<<a<<KSK<<set((9)<<set((%$)<<b<<KSK<<endl-
}
void opcion8() {
int s.?.suma.aux.m.ma?or-
for(int ?0$-?<n-?11){
suma0$-
for(int s0%-s<col-s11){
suma10notas+?,+s,-
promedio+?,0suma/(colB%)-
}
ma?or0promedio+$,-
for(int m0$-m<n-m11){
if(promedio+m,>ma?or)
ma?or0promedio+m,-
}
}
for(m0$-m<n-m11){
if(promedio+m,00ma?or)
cout<<KK<<nombre+m,<<endl-
}
cout<<Kma?or promedio 0K<<ma?or<<endl-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
}
void opcion6(){
int s.?.suma.aux.m.menor-
for(int ?0$-?<n-?11){
suma0$-
for(int s0%-s<col-s11){
suma10notas+?,+s,-
promedio+?,0suma/(colB%)-
}
menor0promedio+$,-
for(int m0$-m<n-m11){
if(promedio+m,<menor)
menor0promedio+m,-
}
}
for(m0$-m<n-m11){
if(promedio+m,00menor)
cout<<KK<<nombre+m,<<endl-
}
cout<<Kmenor promedio 0K<<menor<<endl-
}

5RO6LEMA <:
#onsidere una matri de n"meros enteros de )E filas % -E columnas y desarrolle el
siguiente men" de opciones(
V)W Uenerar n"meros aleatorios binarios :E,);
V-W 6uestre un H por cada ) que encuentre en toda la matri
V0W 6uestre en K la cantidad de ) y la cantidad de E que hay en la matri
V1W .etermine la mayor cantidad de E continuos que encuentre en forma horiontal y en qu
fila lo encontr
V2W .etermine la mayor cantidad de ) continuos que encuentre en forma vertical y en qu
columna lo encontr
VEW Sin
Folucin(
/D
@ame! p$9$7
;ut)or! Ee?es >arFano. ;leGandro
Hescription! Considere una matriF de nOmeros enteros
de %$ filas
x &$ columnas ? desarrolle el siguiente
menO de
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
opciones!
Hate! &8/$%/$= %9!$:
Cop?rig)t! fisi_unmsm limaBperu
D/
//librerias
Jinclude <iostream/)>
Jinclude <stdlib/)>
Jinclude <stdio/)>
Jinclude <conio/)>
Jinclude <iomanip/)>
Jinclude <mat)/)>
Jdefine #IQ;" %$
Jdefine CRQU>@;" &$
//prototipos
int menu()-
void opcion%()-
void opcion&()-
void opcion7()-
void opcion8()-
void opcion6()-
int aleatorio(int li.int ls)-
void generar()-
void listar()-
//variables globales
int matriF+#IQ;",+CRQU>@;",-
int aux+#IQ;",-
//funcion principal
int main(){
int op-
do{
op0menu()-
s(itc)(op){
case %! opcion%()- brea*-
case &! opcion&()- brea*-
case 7! opcion7()- brea*-
case 8! opcion8()- brea*-
case 6! opcion6()- brea*-
}
}()ile(op30$)-
s?stem(KP;U"EK)-
return $-
}
int menu(){
int op-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
cout<<K>E@UK<<endl-
cout<<K0000K<<endl-
cout<<K+%, Tenerar nOmeros aleatorios binarios
($.%)K<<endl-
cout<<K+&, >uestre un D por cada % Lue encuentre en toda
la matriFK<<endl-
cout<<K+7, >uestre en S la cantidad de % ? la cantidad de
$ Lue )a? en la matriFK<<endl-
cout<<K+8, Hetermine la ma?or cantidad de $ en Lue
filaK<<endl-
cout<<K+6, Hetermine la ma?or cantidad de % en Lue
columnaK<<endl-
cout<<K+$, #inK<<endl-
cout<<KRPCIR@! K- cin>>op-
return op-
}
void opcion%(){
cout<<endl<<set((86)<<Knumeros aleatorios ($.%)K-
cout<<endl<<set((86)<<KBBBBBBBBBBBBBBBBBBBBK<<endl-
cout<<endl-
generar()-
listar()-
getc)e()-
}
void generar(){
for(int f0$-f<#IQ;"-f11){
for(int c0$-c<CRQU>@;"-c11){
matriF+f,+c,0aleatorio($.%)-
}
}
}
int aleatorio(int inic.int fin){
int n-
do{
n0rand()D(finBinic1%)/&$$1inic-
}()ile(n<inicXXn>fin)-
return n-
}
void listar(){
for(int f0$-f<#IQ;"-f11){
for(int c0$-c<CRQU>@;"-c11){
cout<<set((&)<<matriF+f,+c,<<K K-
cout<<set((&)-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
}
cout<<endl<<endl-
}
}
void opcion&(){
cout<<endl<<set((86)<<Kmuestra D por cada %K-
cout<<endl<<set((86)<<KBBBBBBBBBBBBBBBBBBBBK<<endl-
cout<<endl-
for(int f0$-f<#IQ;"-f11){
for(int c0$-c<CRQU>@;"-c11)
if(matriF+f,+c,00%)
cout<<set((8)<<K D K-
cout<<endl-
}
}
void opcion7(){
float suma0$.porc.porcs.total-
cout<<endl<<set((86)<<KporcentaGe de % ? de $ K-
cout<<endl<<set((87)<<K BBBBBBBBBBBBBBBBBBBBBK<<endl-
cout<<endl-
for(int f0$-f<#IQ;"-f11){
for(int c0$-c<CRQU>@;"-c11)
if(matriF+f,+c,00%)
suma10matriF+f,+c,-
}
total0#IQ;"DCRQU>@;"-
porc0sumaD%/$D%$$/total-
porcs0%$$Bporc-
cout<<set((%$)<<Kel porcentaGe de % es
K<<set((%$)<<porc<<set((9)<<KSK<<endl-
cout<<set((%$)<<Kel porcentaGe de $ es
K<<set((%$)<<porcs<<set((9)<<KSK<<endl-
}
void opcion8(){
int cont0$.ma?or.indma?-
cout<<endl<<set((86)<<Kcantidad de $ K-
cout<<endl<<set((86)<<KBBBBBBBBBBBBBBK<<endl-
cout<<endl-
for(int f0$-f<#IQ;"-f11){
for(int c0$-c<CRQU>@;"-c11)
if(matriF+f,+c,00$)
cont10%-
aux+f,0cont-
cont0$-
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
}
for(int f0$-f<#IQ;"-f11)
cout<<set((7)<<aux+f,-
cout<<endl-
ma?or0aux+%,-
for(int f0$-f<#IQ;"-f11){
if(ma?or<aux+f,){
ma?or0aux+f,-
indma?0f1%-
}
}
cout<<set((&$)<<Kcantidad de $K<<set((&$)<<K#IQ;K<<endl-
cout<<set((&$)<<ma?or<<set((&$)<<indma?<<endl-
getc)e()-
}
void opcion6(){
int cont0$.ma?or.indma?.auxi+CRQU>@;",-
cout<<endl<<set((86)<<Kcantidad de % K-
cout<<endl<<set((86)<<KBBBBBBBBBBBBBK<<endl-
cout<<endl-
for(int c0$-c<CRQU>@;"-c11){
for(int f0$-f<#IQ;"-f11)
if(matriF+f,+c,00%)
cont10%-
auxi+c,0cont-
cont0$-
}
for(int i0$-i<CRQU>@;"-i11)
cout<<set((7)<<aux+i,-
cout<<endl-
ma?or0auxi+%,-
for(int i0$-i<CRQU>@;"-i11){
if(ma?or<aux+i,){
ma?or0auxi+i,-
indma?0i1%-
}
}
cout<<set((&$)<<Kcantidad de
%K<<set((&$)<<KCRQU>@;K<<endl-
cout<<set((&$)<<ma?or<<set((&$)<<indma?<<endl-
getc)e()-
}
5RO6LEMA C:
#onsidere una matri de n"meros enteros de )E filas % )E columnas y desarrolle el
siguiente men" de opciones(
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
V)W Uenerar n"meros aleatorios menores a )EEE
V-W Trdene slo las filas
V0W Trdene slo las columnas
V1W Trdene toda la matri por filas
V2W Trdene toda la matri por columnas.
VEW Sin
Folucin(
$*
-ame: p\G
/uthor: 0e1es #ar2ano, /le3andro
4escription: .onsidere una matri2 de nYmeros enteros
de + %ilas
) + columnas 1 desarrolle el siguiente
menY de
opciones:
4ate: 7G$+$8 +\:E
.op1right: %isiBunmsm lima6peru
*$
$$li(rerias
#include <iostream.h>
#include <stdli(.h>
#include <stdio.h>
#include <conio.h>
#include <iomanip.h>
#include <math.h>
#de%ine @IH/K +
#de%ine .QHJ#-/K +
$$prototipos
int menu'*;
void opcion+'*;
void opcion7'*;
void opcion5'*;
void opcionG'*;
void opcion!'*;
int aleatorio'int li,int ls*;
void generar'*;
void mostrar'*;
void ordenar%ilas'*;
void ordenarcolumnas'*;
void ordenar'*;
void por%ilas'*;
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
void porcolumnas'*;
$$varia(les glo(ales
int matri2W@IH/KXW.QHJ#-/KX;
int au)iW+X;
$$%uncion principal
int main'*;
int op;
do;
op=menu'*;
s&itch'op*;
case +: opcion+'*; (reaA;
case 7: opcion7'*; (reaA;
case 5: opcion5'*; (reaA;
case G: opcionG'*; (reaA;
case !: opcion!'*; (reaA;
>

>&hile'op]=*;
s1stem'<I/JKE<*;
return ;
>
int menu'*;
int op;
cout<<<#E-J<<<endl;
cout<<<====<<<endl;
cout<<<W+X Zenerar numeros aleatorios menores a
+<<<endl;
cout<<<W7X Qrdene solo las %ilas<<<endl;
cout<<<W5X Qrdene solo las columnas<<<endl;
cout<<<WGX Qrdene toda la matri2 por %ilas<<<endl;
cout<<<W!X Qrdene toda la matri2 por columnas<<<endl;
cout<<<WX @in<<<endl;
cout<<<QI.IQ-: <; cin>>op;
return op;
>
void opcion+'*;
cout<<endl<<set&'G*<<<-J#E0QK /HE/UQ0IQK
',+*<<<endl;
cout<<set&'G*<<<===========================<<<endl;
generar'*;
mostrar'*;
getche'*;
>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
void generar'*;
%or'int %=;%<@IH/K;%,,*;
%or'int c=;c<.QHJ#-/K;c,,*;
matri2W%XWcX=aleatorio',EEE*;
>
>
>
int aleatorio'int inic,int %in*;
int n;
do;
n=rand'**'%in6inic,+*$7,inic;
>&hile'n<inicOOn>%in*;
return n;
>
void mostrar'*;
%or'int %=;%<@IH/K;%,,*;
%or'int c=;c<.QHJ#-/K;c,,*;
cout<<set&'\*;
cout<<matri2W%XWcX<<< <;
>
cout<<endl<<endl;
>
>
void opcion7'*;
cout<<endl<<set&'G*<<<-J#E0QK Q04E-/4QK IQ0
@IH/K<<<endl;
cout<<set&'G*<<<===========================<<<endl;
ordenar%ilas'*;
mostrar'*;
getche'*;
>
void ordenar%ilas'*;
int temp;
%or'int %=;%<@IH/K;%,,*;
%or'int (=;(<.QHJ#-/K6+;(,,*;
%or'int c=;c<.QHJ#-/K6+;c,,*;
i%'matri2W%XWcX>matri2W%XWc,+X*;
temp=matri2W%XWcX;
matri2W%XWcX=matri2W%XWc,+X;
matri2W%XWc,+X=temp;
>
>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
>
>
>
void opcion5'*;
cout<<endl<<set&'G*<<<-J#E0QK Q04E-/4QK IQ0
.QHJ#-/K<<<endl;
cout<<set&'G*<<<==============================<<<endl;
ordenarcolumnas'*;
mostrar'*;
getche'*;
>
void ordenarcolumnas'*;
int temp;
%or'int c=;c<.QHJ#-/K;c,,*;
%or'int (=;(<@IH/K6+;(,,*;
%or'int %=;%<@IH/K6+;%,,*;
i%'matri2W%XWcX>matri2W%,+XWcX*;
temp=matri2W%XWcX;
matri2W%XWcX=matri2W%,+XWcX;
matri2W%,+XWcX=temp;
>
>
>
>
>
void opcionG'*;
cout<<endl<<set&'G*<<<-J#E0QK Q04E-/4QK 4EK4E
@IH/K<<<endl;
cout<<set&'G*<<<=============================<<<endl;
ordenar'*;
por%ilas'*;
mostrar'*;
getche'*;
>
void por%ilas'*;
int i=;
%or'int %=;%<@IH/K;%,,*;
%or'int c=;c<.QHJ#-/K;c,,*;
matri2W%XWcX=au)iWiX;
i,,;
>
>
>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!
C++ FISI UNMSM
void opcion!'*;
cout<<endl<<set&'G*<<<-J#E0QK Q04E-/4QK 4EK4E
.QHJ#-/K<<<endl;
cout<<set&'G*<<<================================<<<endl;
ordenar'*;
porcolumnas'*;
mostrar'*;
getche'*;
>
void porcolumnas'*;
int i=;
%or'int c=;c<.QHJ#-/K;c,,*;
%or'int %=;%<@IH/K;%,,*;
matri2W%XWcX=au)iWiX;
i,,;
>
>
>
void ordenar'*;
int i=,temp;
$$guardamos la matri2 en un vector au)iliar
%or'int %=;%<@IH/K;%,,*;
%or'int c=;c<.QHJ#-/K;c,,*;
au)iWiX=matri2W%XWcX;
i,,;
>
>
$$ordenamos el vector
%or'int a=;a<EE;a,,*;
%or'int (=;(<EE;(,,*;
i%'au)iW(X>au)iW(,+X*;
temp=au)iW(X;
au)iW(X=au)iW(,+X;
au)iW(,+X=temp;
>
>
>
>
Alejandro Reyes Marzano chuly_1280@ho!a"l#co!