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.
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>
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>
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;
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)*; >
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/)>
// 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!