You are on page 1of 7

Comenzare con el primer problema en este pagina y los otros 3 luego del salto OK.

Escriba un algoritmo tal que solicite un grupo de N nmeros enteros y encuentre e imprima cul de ellos
es el segundo nmero mayor.
int pmax=0, smax=0, num, c=0;
for(int i=0; i < N ; i++) {
leer num;
if(c==0) {
smax = num;
c++;
} else {
if(num > pmax) {
smax = pmax;
pmax = num;
}
if(num > smax)
smax = num;
}
}
imprime smax;
SUSTENTACIN
Entiendo que la cantidad de nmeros es fia y definida por N. En caso fuere un numero infinito o
desconocido de lecturas solo seria cuestion de quitarle el for.
!porte de Edg422. "i comenzamos pma# en $ e ingresamos un numero negati%o& pma# no cambiara. 'or
este moti%o le agrego un contador c($ para identificar la primera %ez que se recibe un nmero para
asignarle& sin filtro alguno& este %alor a pma#.
!porte de Mile. )ue tal si tenemos un numero pma#(** y sma#(+ e ingresamos un num(,& num no es
mayor que pma# asi que no se -aria nada y la respuesta seguiria siendo sma#(+. sin embargo a-ora
deberia ser sma#(,& el segundo nmero mayor. 'or eso agrego una segunda comprobacion num / sma#.
Escriba un programa que solicite las notas de un grupo de estudiantes que rindieron el e#amen parcial de
'rogramacion Orientada a Obetos 0No se sabe la cantidad de notas que se leern1. El programa debe
reportar la nota mas alta& la nota mas baa& el promedio de notas y la cantidad de estudiantes que
rindieron el e#amen. 2enga en cuenta que las notas leidas son enteras y deben estar dentro del inter%alo
3$&4$5
//declarar como atributo o variable global
int nb=20, na=0, cant=0;
double prom=0;
//programa
int nota;
leer nota;
if(nota < 0 or nota>20) {
imprime Nota !n"alida;
} else {
if(nota > na) na = nota;
if(nota < nb) nb = nota;
prom += nota;
cant++;
imprime Nota + #lta$+na+Nota + ba%a$+nb+&romedio$+prom'cant+(antidad
de #lumnos$+cant;
}
SUSTENTACIN
Se necesita declarar como variables globales a aquellas que registraran la nota mas alta, la mas
baja, el promedio y la cantidad de alumnos puesto que si uesen locales se resetearian cada ve!
que se ejecute el programa y no sirviria de nada" Notese que declaro los valores de iniciales de la
na #nota mas alta$ y nb #nota mas baja$ en % y &% respectivamente con el in de que al ejecutarse
por primera ve! el programa la nota ingresada se almacene en ambas variables" Si nb uera %
nunca cambiaria o seria poco probable que lo 'aga puesto que no 'abria nota menor que % por
eso la pongo en &%"
Escriba una unci(n o metodo tal que reciba un n)mero entero y retorne el menor n)mero ormado
por las ciras e*tremas"
public int menorN(int N) {
int copia, cif), cif2, r, num;
copia = N;
for(int i=); i>0; i++) {
r = N*)0;
if(N == copia) cif) = r;
N '= )0;
if(N == 0) brea+;
}
cif2 = r;
if(cif) > cif2)
num = cif),)0 + cif2;
else
num = cif2,)0 + cif);
return num;
}
SUSTENTACIN
+acemos una copia al numero N recibido" ,uego reali!amos un bucle ininito #puede ser un do-
.'ile o .'ile$ que 'alle el cociente de dividir N por /% y que lo almacene en ci/ #solo en el primer
caso pues luego N cambia al ser dividido por /%$" Cuando N sea % terminara el bucle y el ultimo
valor almacenado en r ser0 puesto en ci&" ,uego comparamos cual cira es mayor para armar el
n)mero a ser devuelto"
Se tiene un programa que presenta el siguiente menu de opciones1
2/3 4rdenar 5ecrecientemente
2&3 E*traer valores primos
263 Salir
Sabiendo que ya se tiene ingresado un vector de n)mero enteros de tama7o N, se pide para dic'o
vector escribir el c(digo del programa que presenta el men) de opciones" 5onde la opci(n #/$
ordena decrecientemente los elementos del arreglo, la opci(n #&$ e*trae solo los n)mero primos
del arreglo y los almacena uno a uno en un nuevo arreglo 8, la opci(n #6$ termina o inali!a el
programa" Asuma que la unci(n ImprimeArreglo#A, N$, ya se encuentra deinida #A9Arreglo y
N9Tama77o del arreglo$"
//M es el vector ya ingresado
int &-.; int copia-.;
& = ne/ int-N.; copia = ne/ int-N.;
//PROGRAMA
int opc;
leer opc;
s/itc0(opc) {
case )$
decreciente();
brea+;
case 2$
primos();
brea+;
case 1$
salir();
brea+;
}
//Mtodos
public "oid decreciente() {
int a;
for(int i=0; i < N ; i++) {
copia-i. = 2-i.;
for(int %=i+); % < N; %++) {
if(2-i. > 2-%.) {
a = 2-i.;
2-i. = 2-%.;
2-%. = a;
}
}
}
!mprime#rre3lo(2, N);
}
public "oid primos() {
int c=0;
for(int i=0; i < N ; i++) {
if(es&rimo(2-i.)) {
&-c. = 2-i.;
c++;
}
}
!mprime#rre3lo(&, c);
}
public boolean es&rimo(int N) {
if(num4i"isores(N) == 2)
return true;
return false;
}
public int num4i"isores(int N) {
int c=0;
for(int i=); i <= N; i++) {
if(N * i == 0) c++;
}
return c;
}
public "oid salir() {
for(int i=0; i < N, i++) {
2-i. = copia-i.
copia-i. = 0;
}
limpiarcampos();
}
SUSTENTACIN
Como veran el programa principal solo 'ace una llamada a los metodos seg)n el
men)" Todo esta claro creo en el codigo" ,a parte inal, el m:todo salir#$ yo lo entiendo como un
orma de reseteo por eso asigno los valores originales nuevamente a ; desde copia y limpio esta
ultima"
Si alguien tiene una mejor idea
6er entrada completa en7 -ttp788999.code$,fim.com84$*$8$:8448mb:;:<programacion<orientada<a<
obetos<solucionario<e#amen<parcial<4$*$<*8=i#zz4ng>?@dsn

You might also like