EJERCICIOS PSEINT

31
// Juego simple que pide al usuario que adivine un numero en 10 intentos Proceso Adivina Numero intentos<-9; num_secreto <- azar(100)+1; Escribir "Adivine el numero (de 1 a 100):"; Leer num_ingresado; Mientras num_secreto<>num_ingresado & intentos>0 Hacer Si num_secreto>num_ingresado Entonces Escribir "Muy bajo"; Sino Escribir "Muy alto"; FinSi Escribir "Le quedan ",intentos," intentos:"; Leer num_ingresado; intentos <- intentos-1; FinMientras Si intentos=0 Entonces Escribir "El numero era: ",num_secreto; Sino Escribir "Exacto! Usted adivino en ",11-intentos," intentos."; FinSi FinProceso Proceso Factorización Escribir "Ingrese el numero: "; Leer num; Escribir "Factorizacion: "; factorizar<-verdadero; Mientras factorizar & num>1 hacer div<-0; Si num/2 = trunc(num/2) Entonces Escribir 2; num<-num/2; Sino div<-1; factor_primo<-Verdadero; Mientras div<=rc(num) & factor_primo Hacer div <- div+2; Si num/div = trunc(num/div) Entonces factor_primo <- Falso;

Transcript of EJERCICIOS PSEINT

Page 1: EJERCICIOS PSEINT

// Juego simple que pide al usuario que adivine un numero en 10 intentos

Proceso Adivina Numero                    intentos<-9;          num_secreto <- azar(100)+1;                    Escribir "Adivine el numero (de 1 a 100):";          Leer num_ingresado;          Mientras num_secreto<>num_ingresado & intentos>0 Hacer                    Si num_secreto>num_ingresado Entonces                              Escribir "Muy bajo";                    Sino                               Escribir "Muy alto";                    FinSi                    Escribir "Le quedan ",intentos," intentos:";                    Leer num_ingresado;                    intentos <- intentos-1;          FinMientras                    Si intentos=0 Entonces                    Escribir "El numero era: ",num_secreto;          Sino                    Escribir "Exacto! Usted adivino en ",11-intentos," intentos.";          FinSi          FinProceso

Proceso Factorización                    Escribir "Ingrese el numero: ";          Leer num;                    Escribir "Factorizacion: ";                    factorizar<-verdadero;                    Mientras factorizar & num>1 hacer                    div<-0;                    Si num/2 = trunc(num/2) Entonces                              Escribir 2;                              num<-num/2;                    Sino                              div<-1; factor_primo<-Verdadero;                              Mientras div<=rc(num) & factor_primo Hacer                                        div <- div+2;                                        Si num/div = trunc(num/div) Entonces                                                  factor_primo <- Falso;                                        FinSi                              FinMientras                              Si factor_primo Entonces                                        escribir num;                                        factorizar<-falso;                              sino                                        escribir div;                                        num<-num/div;                                        factor_primo<-verdadero;

Page 2: EJERCICIOS PSEINT

                              FinSi                    FinSi          FinMientras          FinProceso

//    El objetivo del juego es mover los discos de la torre 1 a la 3 en la// menor cantidad de movimientos posible. No se puede colocar un disco de // un tamanio sobre otro mas chico

//     Hay una matriz que representa las torres, cada columna contiene//  nros que representan los tamanios de los discos en esas torres (solo//  interesan los valores hasta la cantidad de discos de esa torre).//  Cuantos discos tiene cada torre lo dice el vector cant_discos.

Proceso Hanoi                    Dimension torres[3,10], cant_discos[3];                    // pedir y validar cuantos discos colocar en la primer torre          Escribir "Ingrese el nro de discos (1-5):";          leer discos;          mientras discos<1 | discos>8 Hacer                    Escribir "El numero de discos debe ser mayor a 0 y menor a 5:";                    leer discos;          finmientras

          // inicializar los datos          cant_discos[1]<-discos;          cant_discos[2]<-0;          cant_discos[3]<-0;          para i<-1 hasta discos hacer                    torres[1,i]<-discos-i+1;          finpara                    cant_movs<-0;                    // jugar!          mientras (cant_discos[3]<>discos) Hacer // mientras no esten todos los discos en la tercer torre, el juego sigue                                        para i<-1 hasta 3 Hacer // dibujar las tres torres                              escribir "";                              escribir "Torre ",i;                              si cant_discos[i]=0 Entonces                                        Escribir "";                              sino                                        para j<-cant_discos[i] hasta 1 con paso -1 Hacer // recorrer los discos de la torre, de arriba hacia abajo                                                  segun torres[i,j] Hacer // dibujar cada disco                                                            1: escribir "                   XX";                                                            2: escribir "                 XXXXXX";                                                            3: escribir "               XXXXXXXXXX";

Page 3: EJERCICIOS PSEINT

                                                            4: escribir "             XXXXXXXXXXXXXX";                                                            5: escribir "           XXXXXXXXXXXXXXXXXX";                                                            6: escribir "         XXXXXXXXXXXXXXXXXXXXXX";                                                            7: escribir "       XXXXXXXXXXXXXXXXXXXXXXXXXX";                                                            8: escribir "     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";                                                  finsegun                                        FinPara                              finsi                              Escribir "   ----------------------------------";                              escribir "";                    FinPara                                        // solicitar movimiento                    Escribir "Mover desde la torre: ";                    leer t1;                    Escribir "hacia la torre: ";                    leer t2;                                        si t1<0 | t1>3 | t2<0 | t2>3 Entonces // controlar que el nro de torre sea valido                              escribir "Movimiento invalido";                    sino                              si cant_discos[t1]=0 Entonces // controlar que la torre 1 tengo al menos un disco                                        escribir "Movimiento invalido";                              Sino                                        disco_a_mover <- torres[t1,cant_discos[t1]]; // obtener tamanio del disco que se quiere mover                                        puede_mover<-verdadero;                                        si cant_discos[t2]<>0 entonces // controlar que la torre dos no tenga discos o tenga discos mas grandes                                                  si torres[t2,cant_discos[t2]]<disco_a_mover Entonces                                                            puede_mover<-Falso;                                                  FinSi                                        FinSi                                        si puede_mover Entonces // si paso todos los controles, mover                                                  cant_movs <- cant_movs+1;                                                  cant_discos[t2]<-cant_discos[t2]+1;                                                  torres[t2,cant_discos[t2]] <- disco_a_mover;                                                  cant_discos[t1]<-cant_discos[t1]-1;                                        Sino                                                  escribir "Movimiento invalido";                                        finsi                              FinSi                    finsi                    finmientras                    // mostrar resultado          escribir "";          escribir "";

Page 4: EJERCICIOS PSEINT

          escribir "Juego finalizado en ",cant_movs," movimientos!";          escribir "";          FinProceso

// Este ejemplo muestra el uso de expresiones, operadores y funciones matematicas

Proceso Matematicas   Salir<-0;   Escribir 'Ingresar Numero:';   Leer N;   Repetir      Escribir ' ';      Escribir 'Presione Enter para continuar';      Leer x;      Escribir '1 - Seno, Coseno, ArcoTangente';      Escribir '2 - Lograritmo Natural, Funcion Exponencial';      Escribir '3 - Truncar, Redondear';      Escribir '4 - Raiz Cuadrada';      Escribir '5 - Valor Absoluto';      Escribir '6 - Separar parte entera y decimal';      Escribir '7 - Hallar Factorial';      Escribir '8 - Averiguar si es primo';      Escribir '9 - Ingresar Otro Numero';      Escribir ' ';      Escribir '0 - para Salir';      Escribir ' ';      Leer Opcion;      Segun Opcion Hacer         1:             Escribir 'Seno:',Sen(N);            Escribir 'Coseno:',Cos(N);            Escribir 'ArcTangente:',Atan(N);         2:             Si N<=0               Entonces Escribir 'El numero debe ser mayor a cero!';               Sino                  Escribir 'Log Nat.:',ln(N);                  Escribir 'Func Expon.:',exp(N);            FinSi         3:             Escribir 'Turncar:',trunc(N);            Escribir 'Redondear:',redon(N);         4: Escribir 'Raiz Cuad.:',rc(N);         5: Escribir 'Valor Abs.:',abs(N);         6:             Escribir 'Parte Entera:',Trunc(n);            Escribir 'Parte Decimal:',n-Trunc(n);         7:             Si N<>Trunc(N)               Entonces                  Escribir 'El numero debe ser entero!';               Sino                  Si abs(N)>50                     Entonces Escribir 'Resultado muy grande!';                     Sino                        r<-1; f<-1;

Page 5: EJERCICIOS PSEINT

                        Mientras f<=abs(N) Hacer                           Si N<0                               Entonces r<-(-f)*r;                                    Sino r<-f*r;                           FinSi                           f<-f+1;                        FinMientras                        Escribir 'Factorial:',r;                  FinSi            FinSi         8:             Si N<>Trunc(N)               Entonces                  Escribir 'El numero debe ser entero!';               Sino                  Primo<-'Si';                   Si N/2=trunc(N/2)                     Entonces                         Primo<-'No';                  FinSi                  Si N<0                      entonces Nu<-N*-1;                     sino Nu<-N;                  FinSi                  Nu<-RC(Nu);                  f<-3;                  Mientras f<=Nu & Primo='Si' Hacer                     Si N/F=trunc(N/F)                        Entonces Primo<-'No';                     FinSi                     f<-f+2;                  FinMientras                  Escribir 'Numero Primo:',Primo;                  Si f=3                     Entonces F<-4;                  FinSi                  Si Primo='No'                     Entonces                         Escribir N,'=',f-2,'x',N/(f-2);                  FinSi            FinSi         9:            Escribir 'Ingrese Numero:';            Leer N;         0: Salir<-1;         De Otro Modo:            Escribir 'Opcion No Valida!';      FinSegun   Hasta que Salir=1FinProceso

Page 6: EJERCICIOS PSEINT

//   Se ingresa una lista de nombres (la lista termina// cuando se ingresa un nombre en blanco) no permitiendo// ingresar repetidos y luego se ordena y muestra

Proceso OrdenaLista                    Dimension lista[200];                    Escribir "Ingrese los nombres (enter en blanco para terminar):";                    // leer la lista          cant<-0;          Leer nombre;          Mientras nombre<>"" Hacer                    cant<-cant+1;                    lista[cant]<-nombre;                    Repetir // leer un nombre y ver que no este ya en la lista                              Leer nombre;                              se_repite<-Falso;                              Para i<-1 Hasta cant Hacer                                        Si nombre=lista[i] Entonces                                                  se_repite<-Verdadero;                                        FinSi                              FinPara                    Hasta Que ~se_repite          FinMientras                    // ordenar          Para i<-1 Hasta cant-1 Hacer                    // busca el menor entre i y cant                    pos_menor<-i;                    Para j<-i+1 Hasta cant Hacer                              Si lista[j]<lista[pos_menor] Entonces                                        pos_menor<-j;                              FinSi                    FinPara                    // intercambia el que estaba en i con el menor que encontro                    aux<-lista[i];                    lista[i]<-lista[pos_menor];                    lista[pos_menor]<-aux;          FinPara                              // mostrar como queda la lista          Escribir "La lista ordenada es:";          Para i<-1 Hasta cant Hacer                    Escribir "   ",lista[i];          FinPara          FinProceso

Page 7: EJERCICIOS PSEINT

// Calcula el promedio de una lista de N datos

Proceso Promedio

          Escribir "Ingrese la cantidad de datos:";          Leer n;                    acum<-0;                    Para i<-1 Hasta n Hacer                    Escribir "Ingrese el dato ",i,":";                    Leer dato;                    acum<-acum+dato;          FinPara                    prom<-acum/n;                    Escribir "El promedio es: ",prom;          FinProceso

// calcula las raices de una ecuacion de segundo grado

Proceso Resolvente                    // cargar datos          Escribir "Ingrese el coeficiente A:";          Leer a;          Escribir "Ingrese el coeficiente B:";          Leer b;          Escribir "Ingrese el coeficiente C:";          Leer c;                    // determinar si son reales o imaginarias          disc <- b^2-4*a*c;          Si disc<0 Entonces                    // si son imaginarias                    preal<- (-b)/(2*a);                    pimag<- rc(-disc)/(2*a);                    Escribir "Raiz 1: ",preal,"+",pimag,"i";                    Escribir "Raiz 2: ",preal,"-",pimag,"i";          Sino                    Si disc=0 Entonces // ver si son iguales o distintas                              r <- (-b)/(2*a);                              Escribir "Raiz 1 = Raiz 2: ",r;                    Sino                              r1 <- ((-b)+rc(disc))/(2*a);                              r2 <- ((-b)-rc(disc))/(2*a);                              Escribir "Raiz 1: ",r1;                              Escribir "Raiz 2: ",r2;                    FinSi          FinSi          FinProceso

Page 8: EJERCICIOS PSEINT

// Problema Ejemplo:      //    Se ingresan los precios de 5 articulos y las cantidades vendidas   // por una empresa en sus 4 sucursales. Informar:   //    * Las cantidades totales de cada articulo.   //    * La cantidad de articulos en la sucursal 2.   //    * La cantidad del articulo 3 en la sucursal 1.   //    * La recaudacion total de cada sucursal.   //    * La recaudacion total de la empresa.   //    * La sucursal de mayor recaudacion.   Proceso Sucursales      // Inicializar Prec=Arreglo de precios y Cant=Arreglo para cantidades   Dimension Prec[5], Cant[4,5];      // Leer Precios   Para I<-1 Hasta 5 Hacer      Escribir 'Ingrese Precio Articulo ',I,':';      Leer Prec[I];   FinPara      // Leer Cantidades   Para J<-1 Hasta 4 Hacer      Para I<-1 Hasta 5 Hacer         Escribir 'Ingrese Cant. de Articulo ',I,', en Sucursal ',J,':';         Leer Cant[J,I];      FinPara   FinPara      // Sumar cantidades por articulos   Escribir 'Cantidades por articulos:';   Para I<-1 Hasta 5 Hacer      Suma<-Cant[1,I]+Cant[2,I]+Cant[3,I]+Cant[4,I];      Escribir 'Total articulo ',I,':',Suma;   FinPara      // Informar Total de Articulos Sucursal 2   Suc2<-0;   Para I<-1 Hasta 5 Hacer      Suc2<-Suc2+Cant[2,I];   FinPara   Escribir 'Total Sucursal 2:',Suc2;      // Informar Sucursal 1, Articulo 3:   Escribir 'Sucursal 1, Articulo 3:',Cant[1,3];         // Acumular total de cada sucursal (TotSuc) y   // total de la empresa (TotEmp)   MayorRec<-0; NumMayor<-0; TotEmp<-0;   Para J<-1 Hasta 4 Hacer      TotSuc<-0;      Para I<-1 Hasta 5 Hacer         TotSuc<-TotSuc+(Cant[J,I]*Prec[i]);      FinPara      Escribir 'Recaudaciones Sucursal ',J,':',TotSuc;      Si TotSuc>MayorRec         entonces MayorRec<-TotSuc; NumMayor<-J;

Page 9: EJERCICIOS PSEINT

      FinSi      TotEmp<-TotEmp+TotSuc;   FinPara   Escribir 'Recaudacion total de la empresa:',TotEmp;   Escribir 'Sucursal de Mayor Recaudacion:',NumMayor;

FinProceso

//    Lee los tres lados de un triangulo rectangulo, determina // si corresponden (por Pitargoras) y en caso afirmativo // calcula el area

Proceso TrianguloRectangulo                    // cargar datos          Escribir "Ingrese el lado 1:";          Leer l1;          Escribir "Ingrese el lado 2:";          Leer l2;          Escribir "Ingrese el lado 3:";          Leer l3;                    // encontrar la hipotenusa (mayor lado)          Si l1>l2 Entonces                    cat1<-l2;                    Si l1>l3 Entonces                              hip<-l1;                              cat2<-l3;                    Sino                              hip<-l3;                              cat2<-l1;                    FinSi          Sino                    cat1<-l1;                    Si l2>l3 Entonces                              hip<-l2;                              cat2<-l3;                    Sino                              hip<-l3;                              cat2<-l2;                    FinSi          FinSi                    // ver si cumple con Pitagoras          Si hip^2 = cat1^2 + cat2^2 Entonces                    // calcualar area                    area<-(cat1*cat2)/2;                    Escribir "El area es: ",area;          Sino                    Escribir "No es un triangulo rectangulo.";          FinSi          FinProceso

Page 10: EJERCICIOS PSEINT

Para visualizar el diagrama de flujo copie este código en PSeInt y presione F7.

Proceso Programa    Escribir "Ingrese el valor de kilometros por hora:";    Leer kilometros_por_hora;    metros_por_segundo<-kilometros_por_hora*1000.0/60.0/60.0;    Escribir "Valor de metros por segundo: ", metros_por_segundo;FinProceso

1.-a)Funcion resto(a,b) : entero[entero: a,b parametro por valor]inicio resto<-a-a/b*bfin

b)Funcion primo(a) : logico[entero: a parametro por valor]variables:entero: iinicio  primo<-v para i<-2 hasta a/2 hacer  si resto(a,i)=0 entonces   primo<-f  finsi finparafin

c)Funcion mcd(a,b) : entero[entero: a,b parametro por valor]inicio  mientras a<>b  si a>b  a<-a-b   sino   b<-b-a  finsi finmientras mcd<-afin

d)funcion fact(a) : entero[entero: a parametro por valor]variablesentero: iinicio fact<-1 para i<-1 hasta a hacer  fact<-fact*i finpara

Page 11: EJERCICIOS PSEINT

fin

e)funcion fibo(a) : entero[entero: a parametro por valor]variablesentero: f,iinicio f<-1 fibo<-0 para i<-1 hasta a hacer  fibo<-f+fibo  f<-fibo-f finparafin

f)funcion nac(a) : cadena[entero: a parametro por valor]inicio segun a hacer  0 : nac<-'cero'  1 : nac<-'uno'  2 : nac<-'dos'  3 : nac<-'tres'  4 : nac<-'cuatro'  5 : nac<-'cinco'  6 : nac<-'seis'  7 : nac<-'siete'  8 : nac<-'hocho'  9 : nac<-'nuebe'  10 : nac<-'dies'  11 : nac<-'onse'  12 : nac<-'dose'  13 : nac<-'trese'  14 : nac<-'catorse'  15 : nac<-'quinse'  16 : nac<-'dihesiseis'  17 : nac<-'diesiete'  18 : nac<-'diezyocho'  19 : nac<-'diezynueve'  20 : nac<-'beinte' de otro modo  nac<-'n° fuera de rango' finsegunfin

g)procedimiento bienvenida(a)variablecadena: nombreinicio escribir 'Ingrese su nombre' leer nombre escribir '¡¡Bienvenid@ ',nombre,'!!'fin

h)

Page 12: EJERCICIOS PSEINT

procedimiento intercambio(a,b)[entero a,b parametro por referencia]variablesentero : auxinicio aux<-a a<-b b<-afin

j)procedimiento menormayor(a,b)[cadena: a,b parametro por referencia]inicio si b<a entonces  intercambio(a,b) finsifin

2.-Algoritmo TP7_EJ2Variablesentero: Ncaracter: respfuncion primo(A) : logico[entero: A parametro por valor]variablesentero: iinicio primo<-v para i<-2 hasta A/2 hacer  si A MOD i = 0 entonces   primo<-f  finsi finparafinprocedimiento mostrarfact(A)[entero: A parametro por valor]}variablesentero: i, factinicio fact<-1 para i<-1 hasta A hacer  fact<-fact*i finpara escribir 'Factorial de ',A,': ',factfinfuncion divisible(A,B) : logico[entero: A,B]inicio divisible<-f si A MOD B = 0 entonces  divisible<-v finsifinfuncion fibo(A): entero

Page 13: EJERCICIOS PSEINT

[entero: A parametro por valor]variablesentero: f, iinicio f<-1 fibo<-0 para i<-1 hasta A hacer  fibo<-f+fibo  f<-fibo-f finparafinprocedimiento letras(A)[entero: A parametro por valor]inicio Segun A hacer  0 : escribir 'cero'  1 : escribir 'uno'  2 : escribir 'dos'  3 : escribir 'tres'  4 : escribir 'cuatro'  5 : escribir 'cinco'  6 : escribir 'seis'  7 : escribir 'siete'  8 : escribir 'ocho'  9 : escribir 'nueve'  10 : escribir 'diez'  11 : escribir 'once'  12 : escribir 'doce'  13 : escribir 'trece'  14 : escribir 'catorce'  15 : escribir 'quince'  16 : escribir 'dieciseis'  17 : escribir 'diecisiete'  18 : escribir 'dieciocho'  19 : escribir 'diecinueve'  20 : escribir 'veinte' de otro modo  escribir 'n° fuera de rango' finsegunfinInicio Repetir  escribir 'Ingrese un N°'  Leer N  si primo(N) entonces   mostrarfact(N)  finsi  letras(N)  escribir 'continuar ? (S/N)'  leer resp hasta que resp='n' o resp'N'fin.

3.-Algoritmo TP7_EJ3variables

Page 14: EJERCICIOS PSEINT

entero: stockcaracter: opprocedimiento menu(opc)[caracter: opc parametro por referencia]inicio escribir '***************************' escribir '*                   MENU                  *' escribir '***************************' escribir '* 1 :     VALOR INICIAL STOCK      *'  escribir '* 2 :      RETIRAR CANTIDAD         *' escribir '* 3 :       AUMENTAR STOCK         *' escribir '* 4 :        MOSTRAR STOCK          *' escribir '* 5 :               SALIR                  *' escribir '***************************' escribir '*            ELIJA SU OPCION          *' escribir '***************************' leer opcfinprocedimiento segmenu(opp,stok)[caracter: opp parametro por valor][entero: stok parametro por referencia]varieblesentero: cantinicio segun opp  '1': escribir 'INGRESE STOCK INICIAL'       leer stok  '2' : escribir 'INGRESE CANTIDAD A RETIRAR'       leer cant       stok<-stok-cant  '3' : escribir 'INGRESE CANTIDAD A AUMENTAR'       leer cant       stok<-stok+cant  '4' : escribir 'STOCK ACTUAL: ',stok  '5' : escribir 'HASTA MAÑANA' finsegunfinInicio repetir  stock<-0  menu(op) hasta que op=1 o op=5 segmenu(op,stock) si op<>5 entonces  repetir   menu(op)   si op=1 entonces    escribir 'Opcion deshabilitada'   sino    si op>=2 y op<=4 entonces     segmenu(op,stock)    finsi   finsi  hasta que op=5 finsiFin.

4.-arreglo [1..100] de real : vectorvariablesvector: vecentero: op, numfuncion ordenado(v,n) : logico[vector: parametro por valor]

Page 15: EJERCICIOS PSEINT

[entero: n parametro por valor]variablesentero: iinicio ordenado<-v para i<-1 hasta n-1 hacer  si v(i)<v(i+1) entonces   ordenado<-f  finsi finparafinprocedimiento minimo(v,n)[vector: v parametro por valor][entero: n parametro por valor]variableslogico: bminentero: i, porreal: mininicio bmin<-v pos<-0 para i<-1 hasta n hacer  si bmin entonces   bmin<-f   min<-v(i)   pos<-i  sino   si v(i)<min entonces    min<-v(i)    pos<-i   finsi  finsi finpara escribir 'minimo: ',min escribir 'posicion: ',posfinprocedimiento cargar(v,n)[vector: v parametro por referencia][entero: n parametro por referencia]variablesentero iinicio escribir 'Ingrese cantidad de elementos' leer n para i<-1 hasta n hacer  leer v(i) finparafinprocedimiento mostrar(v,n)[vector: v parametro por valor][entero: n parametro por valor]variablesentero: iinicio para i<-1 hasta n hacer  escribir v(i) finparafin

Page 16: EJERCICIOS PSEINT

procedimiento menu()inicio escribir '***************************' escribir '*                  MENU                    *' escribir '***************************' escribir '* 1 :         CARGAR VECTOR         *' escribir '* 2 :        MOSTRAR VECTOR        *' escribir '* 3 :     SUPERAN AL PROMEDIO    *' escribir '* 4 :              ORDENADO           *' escribir '* 5 :               MINIMO              *' escribir '* 6 :               SALIR                 *' escribir '***************************' escribir '*             ELIJA SU OPCION         *' escribir '***************************'finfuncion promedio(v,n) : real[vector: v parametro por valor][entero: n parametro por valor]variablereal: sentero: iinicio s<-0 para i<-1 hasta n hacer  s<-s+v(i) finpara promedio<-s/nfinprocedimiento mayorprom(v,n)[vector: v parametro por valor][entero: n parametro por valor]variablesentero: ireal: proinicio pro<-promedio(v,n) para i<-1 hasta n hacer  si v(i)>pro entonces   escribir v(i)   escribir 'posicion: ',i  finsi finparafinInicio procedimiento menu() leer op segun op  1 : cargar(vec,num)  2 : mostrar(vec,num)  3 : mayorprom(vec,num)  4 : si ordenado(vec,num) entonces       escribir 'Quedate trankilo q esta ordenado'      sino       escribir 'Todo mal, esta re desordenado'      finsi  5 : minimo(vec,num)  6 : escribir 'Hasta mañana!' finsegun

Page 17: EJERCICIOS PSEINT

Fin.

Algoritmo TP7.EJ5tipoarreglo [1..1000] de entero: vectorconstantes:MAX: 1000variablesvector: vecentero: op, ter, var1, var2,elemprocedimiento menu(opc)[entero: opc parametro por referencia]inicio escribir '**MENU**' escribir '1: Cargar Vector' escribir '2: Listar' escribir '3: Insertar valor en posicion' escribir '4: Agregar Valor' escribir '5: Intercambias elementos iguales por otro' escribir '6: Cambiar elemento unico' escribir '7: Eliminar un elemento' escribir '8: Eliminar elementos que coincidan con un valor' escribir '0: Salir' escribir 'Elija su opcion:' leer opcfinprocedimiento cargar(v,n)[vector: v parametro por referencia][entero: n parametro por referencia]variablecaracter: opinicio n<-0 repetir  n<-n+1  escribir 'Ingrese el valor numero: ',n  leer v(n)  escribir 'mas datos? (s/n)'  leer op  hasta que op='n' o op='N'finprocedimiento listar(v,n)[vector: v parametro por valor][entero: n parametro por valor]variableenteor: iinicio para i<-1 hasta n hacer  escribir v(i) finparafinprocedimiento insertar(v,n,pos)[vector: v parametro por referencia][entero: n parametro por referencia][entero: pos parametro por valor]variables

Page 18: EJERCICIOS PSEINT

entero: iinicio para i<-n hasta pos con paso -1 hacer  v(i+1)<-v(i) finpara escribir 'Inserte valor' leer v(pos) n<-n+1finprocedimiento agregar(v,n)[vector: v parametro por referencia][entero: n parametro por referencia]inicio n<-n+1 escribir 'Ingrese el valor a agregar' leer v(n)finprocedimiento intercambiar(v,n,v1,v2)[vector: v parametro por referencia][entero: n, v1, v2 parametro por valor]variablesentero: iinicio para i<-1 hasta n hacer  si v(i)=v1 entonces   v(i)<-v2  finsi finparafinprocedimiento cambiar(v,n,pos)[vector: v parametro por referencia][entero: n, pos parametro por valor]inicio escribir 'Ingrese el valor' leer v(pos)finprocedimiento elimpos(v,n,pos)[vector: v parametro por referencia][entero: n parametro por referencia][entero: s parametro por valor]variablesentero: iinicio para i<-pos hasta n-1 hacer  v(i)<-v(i+1) finpara n<-n-1finprocedimiento elimelem(v,n,k)[vector: v parametro por referencia][entero: n parametro por referencia][entero: k parametro por valor]variablesentero: iinicio para i<-1 hasta n hacer  si v(i)=k entonces   elimpos(v,n,i)

Page 19: EJERCICIOS PSEINT

   i<-i-1  finsi finparafinfuncion leerpos() : enteroiniciorepetir escribir 'Ingrese posicion' leer leerpos si MAX<leerpos entonces  escribir 'El limite del vector es 1000' finsihasta que leerpos<MAXfinINICIO repetir  menu(op)  segun op hacer   1: cargarvector(vec,ter)    2: listar(vec,ter)   3: leerpos()       insertar(vec,ter,leerpos)   4: agregar(vec,ter)   5: escribir 'Ingrese termino a ser reemplazado por otro valor'       leer var1       escribir 'Ingrese valor a reemplazar'       leer var2       intercambio(vec,ter,var1,var2)   6: leerpos()       cambiar(vec,ter,leerpos)   7: leerpos()       elimpos(vec,ter,pos)   8: escribir 'Ingrese elemento a eliminar'        leer elem        elimelem(vec,ter,elem)   0: escribir 'Hasta mañana'  de otro modo   escribir 'Eleji una opcion de las que te di..(entre 0 y 8)'  finsegun hasta que op=0fin

iAlgoritmo TP7.EJ5arreglo [1..100] de caracter : vectorvariablesvector: vecentero: numprocedimiento cargar(v,n)[vector: v parametro por referencia][entero: n parametro por referencia]variablesentero iinicio escribir 'Ingrese cantidad de elementos' leer n para i<-1 hasta n hacer  leer v(i) finpara

Page 20: EJERCICIOS PSEINT

finprocedimiento mostrar(v,n)[vector: v parametro por valor][entero: n parametro por valor]variablesentero: iinicio para i<-1 hasta n hacer  escribir v(i) finparafinprocedimiento eliminar(v,n,pos)[vector: v parametro por referencia][entero: n parametro por referencia][entero: pos parametro por valor]variablesentero: iinicio para i<-pos hasta n-1 hacer  v(i)<-v(i+1) finpara n<-n-1finprocedimiento elimrepet(v,n)[vector: v parametro por valor][entero: n parametro por valor]variables entero: i,jinicio para i<-1 hasta n-1 hacer  para j<-1 hasta n hacer   si v(i)=v(j) entonces    eliminar(v,n,i)   finsi  finpara finparafinIniciocargar(vec,num)escribir "VECTOR ORIGINAL:"mostrar(vec,num)elimrepet(vec,num)escribir "VECTOR SIN ERRORES:"mostrar(vec,num)Fin.

tipoarreglo[1..100] de caracter: vectorvariablesvector: vecentero: ter, vent, repetprocedimiento cargar(v,n)[vector:v parametro por referencia][entero:n parametro por referencia]variablesentero: iInicioescribir 'Ingrese cantidad de terminos'leer npara i<1 hasta n hacerleer v(i)

Page 21: EJERCICIOS PSEINT

finparafinprocedimiento cambiar(v,n)[vector:v parametro por referencia][entero:n parametro por valor]variablesentero: icaracter: auxInicioaux<-v(1)para i<-1 hasta n hacerv(i)<-v(i+1)finparav(n)<-auxfinprocedimiento mostrar(v,n,m)[vector:v parametro por valor][entero:n,m parametro por valor]variablesentero: iiniciopara i<1 hasta m hacerescribir v(i)finparafinINICIOcargar(vec,ter)escribir 'Ingrese cantidad de elementos q desea ver en la ventana'leer ventescribir 'Ingrese cantidad de repeticiones'leer repetpara i<1 hasta repet hacermostrar (vec,ter,vent)cambiar (vec,ter)finparaFIN

Algoritmo TP8_EJ5tipoarreglo[1..100] de entero: vectorvariablesvector: vecentero: ter, opc, iprocedimiento cargar (v,n)[vector: v parametro por referencia][entero: n parametro por referencia]variablescaracter: respInicion<-0repetirn<-n+1leer v(n)escribir 'continua?'leer resphasta que resp='n' o resp='N'finprocedimiento mostrar(v,n)[vector: v parametro por valor][entero: n parametro por valor]variablesentero: i

Page 22: EJERCICIOS PSEINT

iniciopara i<-1 hasta n hacerescribir v(i)finparafinprocedimiento ordenar(v,n)[vector: v parametro por referencia][entero: n parametro por valor]variablesentero: i, lim, auxlogico: bandinicioband<-vlim<-n-1mientras band y limite >= 1 hacerband<-fpara i<-1 hasta lim hacersi v(i) > v(i+1) entoncesaux<-v(i)v(i)<-v(i+1)v(i+1)<-auxband<-vfinsifinparalim<-lim-1finmientrasfinprocedimiento elimpos(v,n,pos)[vector: v parametro por referencia][entero: n parametro por referencia][entero: pos parametro por valor]variableentero: iiniciopara i<-pos hasta n-1 hacerv(i)<-v(i+1)finparan<-n-1finfuncion primo(n): logico[entero: n parametro por valor]variableentero: iinicioprimo<-fpara i<-2 hasta n/2si n mod i = 0 entoncesprimo<-vfinsifinparafinprocedimiento elimprimo(v,n)[vector: v parametro por referencia][entero: n parametro por referencia]variablesentero: iiniciopara i<-1 hasta n hacersi primo(v(i)) entonceselimpos(v,n,i)finsifinparafinprocedimiento insertar(v,n,pos,k)[vector: v parametro por referencia][entero: n parametro por referencia]

Page 23: EJERCICIOS PSEINT

[entero: pos,k parametro por valor]variableentero: iiniciopara i<-n hasta pos con paso -1 hacerv(i+1)<-v(i)finparav(pos)<-kn<-n+1finprocedimiento insertenpospar(v,n)[vector: v parametro por referencia][entero: n parametro por referencia]variablesentero: i,kiniciopara i<-2 hasta n con paso 2 hacerrepetirescribir 'ingrese un n° impar y no primo para la pos',ileer khasta que primo(k) y k mod 2 <> 0insertar (v,n,i,k)finparafinprocedimiento ordenado(v,n)[vector: v parametro por valor][entero: n parametro por valor]variableentero: iinicioi<-1mientras v(i)>=v(i+1) y i<n haceri<-i+1finmientrassi v(i)<v(i+1)escribir 'esta desordenado'sinoescribir 'esta ordenado'finsifinprocedimiento menu(op)[entero: op parametro por referencia]Inicioescribir '1: cargar vector'escribir '2: mostrar vector'escribir '3: ordenar datos del vector de menor a mayor'escribir '4: eliminar los valores primos'escribir '5: insertar datos en posiciones pares'escribir '6: mostrar si estar ordenado en forma ascendente'escribir '0: salir'finINICIOrepetirmenu(opc)segun opc hacer1: cargar(vec,ter)2: mostrar(vec,ter)3: ordenar(vec,ter)4: elimprimo(vec,ter)5: insertenpospar(vec,ter)6: ordenado(vec,ter)0: escribir 'Hasta mañana'finsegunhasta que opc=0FIN.

Page 24: EJERCICIOS PSEINT

tipoarreglo[1..1000,1] de cadena: nombretipoarreglo[1..1000,1] de caracter: condiciontipoarreglo[1..1000,1] de real: notatipoarreglo[1..1000] de caracter: meritovariablesnombre: nombcondicion: condnota: notamerito: merientero: terprocedimiento cargar(nom,con,not,n)[nombre: nom parametro por referencia][condicion: con parametro por referencia][nota: not parametro por referencia][entero: n parametro por referencia]variablesentero: iinicioescribir 'ingrese numero de datos'leer npara i<1 hasta n hacerleer nom(i,1),con(i,1),not(i,1)nom(i,2)<-nom(i,1)con(i,2)<-con(i,1)not(i,2)<-not(i,1)finparafinprocedimiento mostraroriginal(nom,con,not,n)[nombre: nom parametro por valor][condicion: con parametro por valor][nota: not parametro por valor][entero: n parametro por valor]variablesentero: iiniciopara i<-1 hasta n hacerescribir nom(i,2),con(i,2),not(i,2)finparafinprocedimiento mostrar(nom,con,not,n)[nombre: nom parametro por valor][condicion: con parametro por valor][nota: not parametro por valor][entero: n parametro por valor]variablesentero: iiniciopara i<-1 hasta n hacerescribir nom(i,1),con(i,1),not(i,1)finpara

Page 25: EJERCICIOS PSEINT

finprocedimiento ordenpornota(nom,con,not,n)[nombre: nom parametro por referencia][condicion: con parametro por referencia][nota: not parametro por referencia][entero: n parametro por referencia]variablesentero: i, limreal: auxnotcadena: auxnomcaracter: auxconlogico: bandinicioband<-vlim<-n-1mientras band y 1 <= limite hacerband<-fpara i<-1 hasta lim hacersi not(i+1)<not(i) entoncesauxnot<-not(i,1)auxnom<-nom(i,1)auxcon<-con(i,1)not(i,1)<-not(i+1,1)nom(i,1)<-nom(i+1,1)con(i,1)<-con(i+1,1)not(i+1,1)<-auxnotnom(i+1,1)<-auxnomcon(i+1,1)<-auxconband<-vfinsifinparalim<-lim-1finmientrasfinprocedimiento addmerito(not,mer,n)[nota: not parametro por valor][merito: mer parametro por referencia][entero: parametro por valor]variablesentero: iiniciopara i<-1 hasta n hacersi not(i)>=6 entoncesmer(i)<-'A'sinosi not(i)>=4 entoncesmer(i)<-'B'sinomer(i)<-'C'finsifinsifinparafinprocedimiento ordenpornombre(nom,con,not,n)[nombre: nom parametro por referencia][condicion: con parametro por referencia][nota: not parametro por referencia][entero: n parametro por referencia]

Page 26: EJERCICIOS PSEINT

variablesentero: i, limreal: auxnotcadena: auxnomcaracter: auxconlogico: bandinicioband<-vlim<-n-1mientras band y 1 <= limite hacerband<-fpara i<-1 hasta lim hacersi nom(i+1)<nom(i) entoncesauxnot<-not(i,1)auxnom<-nom(i,1)auxcon<-con(i,1)not(i,1)<-not(i+1,1)nom(i,1)<-nom(i+1,1)con(i,1)<-con(i+1,1)not(i+1,1)<-auxnotnom(i+1,1)<-auxnomcon(i+1,1)<-auxconband<-vfinsifinparalim<-lim-1finmientrasfin