domingo, 24 de abril de 2011

Trabajo Pràctico Nº 4

1. Calcular y mostrar el máximo común divisor de dos números naturales.

Algoritmo 'Ejerc1'
[con el mètodo de restas sucesivas]
var
    Entero: a, b
 Inicio
    escribir 'INGRESE DOS Nº NATURALES'
    leer a, b
    mientras a <> b
            si a > b entonces
                        a < --  a – b
            sino
                       b < --  b - a
            finsi
    fin mientras.
    Escribir ‘EL MCD ES: ‘ a
fin

2. Calcular y mostrar la división entera de dos números enteros mediante restas sucesivas.
Algoritmo 'Ejerc02'
[                              ]
var
     Entero: a, b, Res

Inicio
    escribi 'INGRESE DIVIDENDO Y DIVISOR'

    leer a, b

    Si a > b entonces
            Res = 0           
            Mientras a >= b
                        Res < -- Res + 1
                        a < -- a - b
            fin mientras      
            escribir ‘ EL REsulTADO ES: ‘ Res
     sino
            escribir 'LA DIVISiON NO ES POSIBLE coN EsTE METODO'
     fin si
Fin 

6. Se tienen registros con los datos de los estudiantes de una universidad: código del estudiante, nombre y apellido, valor por materia, número de materias a matricular, valor del recargo por matrícula Se requiere leer los registros (suponga un código de 0 como condición de terminación) e imprimir un listado con la siguiente información por estudiante: código, nombre y apellido, valor por materia, número de materias, valor del recargo, total matricula; al final se debe mostrar el total a recibir por matrículas y el número total de estudiantes matriculados.

Algoritmo 'Ejerc06'
[                                ]
var 
     Entero: TotalAlumnos, Cantidad, Codigo
     Real: TotalMatriculas, Valor, Recargo
     Cadena: ApeYNom
Inicio
   TotalAlumnos = 0
   TotalMatriculas = 0
   Escribir ‘BIENVENIDO AL REGISTRO DE ESTUDIANTES’
   Escribir ‘Configuraciòn: - Ingrese Valor por materia: $ ‘, leer Valor
   Escribir ‘                         - Recargo $ ‘, leer Recargo

   Repetir
Escribir ‘Ingrese còdigo: ‘, Leer Codigo
si  Codigo <> 0 entonces
            Escribir ‘Apellido y Nombre: ‘, Leer ApeYNom
Escribir ‘Cantidad de materias: ‘, Leer Cantidad

Escribir ‘ALUMNO: ‘ ApeYNom , ‘CODIGO: ‘ Codigo
Escribir ‘Cantidad de Materias: ' Cantidad
Escribir ‘Total de matrìcula del alumno: ‘ Cantidad * Valor
Escribir ‘Total Recargos:’ Cantidad * Valor + Recargo

TotalAlumnos = TotalAlumnos + 1
TotalMatriculas = TotalMatriculas + Cantidad * Valor
            Finsi
   Hasta que Codigo = 0
   Escribir ‘TOTAL DE ALUMNOS MATRICuLADOS: ‘ TotalAlumnos
   Escribir ‘MONTO TOTAL DE MATRICULAS: ‘ TotalMatriculas
Finsi

11 comentarios:

  1. Profe le dejo el punto 8 y 9 del trabajo practico numero 9 en este link:
    http://hotfile.com/dl/116603937/64a9351/TPN4.rar.html

    Mi DNI:36226244

    ResponderEliminar
  2. Hola aqui dejo el punto 3 del practico 4 con la estructura para

    Proceso TP4E3A
    Escribir "INGRESE UN NUMERO"
    Leer N
    fact<-1
    Para I<-2 Hasta N Hacer
    fact<-fact*I
    FinPara
    Escribir "El factorial de ",N," es: ",fact
    FinProceso

    ResponderEliminar
  3. este es el ejercicio 6 con un mientras
    inicio

    cod<-0;
    NyA<-"";
    VMat<-0;
    NMat<-0;
    VRec<-0;
    total<-0;
    cont<-0
    total2<-0
    Escribir "Ingrese los datos del estudiante:";
    Escribir "0 para salir"
    Leer cod;
    Mientras (cod<>0) Hacer
    cont<-cont+1
    Escribir "Nombre y Apellido";
    Leer NyA;
    Escribir "Valor por Materia";
    Leer VMat;
    Escribir "Numero de Materias:";
    Leer NMat;
    Escribir "Valor por Recargo:";
    Leer VRec
    total<-VMat*NMat+VRec;
    total2<-total+total2
    Escribir "codigo del estudiante " ,cod
    escribir "nombre y apellido del alumno " ,NyA
    escribir "valor por materia " ,VMat
    escribir "numero de materias ",NMat
    escribir "recargo por materias ", VRec
    Escribir "Ingrese los datos del estudiante";
    Escribir "codigo"
    Leer cod
    FinMientras
    escribir " monto total x matriculas ", total2
    escribir " total de alumnos matriculados ",cont
    Fin

    ResponderEliminar
  4. hola!es posible que me digan como resolver el ejercicio doce del tp nº 4 y el punto 1 del tp nº5 , no entiendo como es lo de numero primos!!!muchas gracias

    ResponderEliminar
  5. hola te dejo el punto 12 del tpn4 y el 1ºpunto del tpn5


    Proceso TPN4E12
    BAND<- Falso
    I<-2
    Repetir
    ESCRIBIR "ESCRIBIR INGRESE UN NUMERO POSITIVO"
    LEER N
    Hasta Que N>0
    Mientras I<N Y NO BAND
    SI (N MOD I) =0 Entonces
    BAND<- Verdadero
    FinSi
    I<-I+1
    FINMientras
    SI BAND Entonces
    ESCRIBIR "NO ES PRIMO"
    Sino
    ESCRIBIR "ES PRIMO"
    FinSi
    FinProceso

    ResponderEliminar
  6. Proceso TPN5E1
    CP<-0
    CI<-0
    I<-2
    CNNP<-0
    NOPRIMO<-Falso
    Repetir
    Escribir "INGRESE UN NUMERO"
    LEER N
    Si (N MOD 2)=0 Entonces
    CP<-CP+1
    Sino
    CI<-CI+1
    FinSi
    Mientras I<N Hacer
    Si N MOD I =0 Entonces
    NOPRIMO<-VERDADERO
    FinSi
    I<-I+1
    FinMientras
    SI NOPRIMO=Verdadero ENTONCES
    CNNP<-CNNP+1
    Sino
    CNP<-CNP+1
    FinSi
    ESCRIBIR "CONTINUA ? PARA SALIR DE LA APLICACION PRESIONE 2 "
    LEER R
    Hasta Que R=2
    ESCRIBIR "TOTAL DE NUMEROS PARES " ,CP
    ESCRIBIR "TOTAL DE NUMEROS IMPARES" ,CI
    Escribir "TOTAL DE NUMEROS PRIMOS" ,CNP
    Escribir "TOTAL DE NUMEROS NO PRIMOS", CNNP
    FinProceso

    ResponderEliminar
  7. Juego del Nim. Algoritmo para Pseint.

    Proceso Juego_del_Nim
    Escribir "Ingrese cantidad de fosforos:";
    leer num;
    si num<=4 Entonces
    Repetir
    Escribir "Debes ingresar una cantidad mayor a 4.";
    Escribir "Vuelve a ingresar:";
    Leer num;
    Hasta Que num>4
    FinSi

    Escribir "Comienza usted?(si/no):";
    Leer resp;
    si (resp='si') o (resp='SI') Entonces
    turno<-Verdadero;
    Sino
    turno<-Falso;
    FinSi
    mientras num<>1 Hacer
    si turno=Falso Entonces
    turno<-Verdadero;

    si num mod 4=0 Entonces
    num<-num-3;
    Escribir "La computadora saca 3 fosforos.";
    Escribir "";
    Escribir "Quedan ",num," fosforos."
    Sino
    si (num mod 4=1) o (num mod 4=2) Entonces
    num<-num-1;
    Escribir "La computadora saca 1 fosforo";
    Escribir "";
    Escribir "Quedan ",num," fosforos";
    Sino
    si (num mod 4=3) Entonces
    num<-num-2;
    Escribir "La computadora saca 2 fosforos.";
    Escribir "";
    Escribir "Quedan ",num," fosforos.";

    FinSi




    FinSi
    FinSi

    Sino
    si turno=Verdadero Entonces
    turno<-Falso;
    Escribir "Cuantos fosforos saca?";
    Leer s;
    si (s<=0) o (s>3) Entonces
    Repetir
    Escribir "Error, vuelve a ingresar:(Mayor que cero y menor o igual a 3)";
    Leer s;
    Hasta Que s>0 y s<=3;
    FinSi

    num<-num-s;
    Escribir "Quedan ",num," fosforos.";


    FinSi
    FinSi



    FinMientras
    si turno=Verdadero Entonces
    Escribir "Usted pierde.";
    Sino
    Escribir "Usted gana.";
    FinSi



    FinProceso


    Les recomiendo que antes de ejecutarlo, seleccionen todo en pseint y aprieten el boton identado.

    ResponderEliminar
  8. TPN 4. Ejercicio 10:

    Proceso Promedios
    mayor<-0;
    band<-Verdadero
    cont<-0;
    contp<-0;
    Repetir
    prom<-0;
    Escribir "Ingresa nombre y apellido:";
    Leer nom;
    cont<-cont+1;
    Escribir "Cuantas notas vas a ingresar?";
    Leer notas;

    Para i<-1 Hasta notas Con Paso 1 Hacer
    Escribir "Ingrese nota ",i,":";
    Leer not;
    si not<0 Entonces
    Repetir
    Escribir "Ingreso erroneo, Vuelve a ingresar la nota:";
    Leer not;
    Hasta Que not>=0
    FinSi

    prom<-prom+not;


    FinPara

    promm<-(prom/notas);
    contp<-contp+promm;
    Escribir "Tu promedio es: ",promm;
    si band Entonces
    si mayor<promm Entonces
    mayor<-promm;
    primero<-nom;
    band<-Falso
    FinSi
    Sino
    si mayor<promm Entonces
    mayo<-promm;
    primero<-nom;
    FinSi


    FinSi
    Escribir "Hay mas alumnos?(si/no)";
    Leer resp;
    Hasta Que resp='no'
    Escribir "El promedio del curso es: ",(contp/cont);
    Escribir "El mayor promedio es: ",mayor;
    Escribir "Pertenece al alumno: ",primero;
    Escribir "Total de alumnos: ",cont;

    FinProceso

    ResponderEliminar
  9. ejercicio nº4 del tpn6

    Proceso TPN6E4
    R<-0.0820541
    T<-300
    V<-0
    A1<-3.592
    A2<-1.360
    A3<-1.390
    A4<-5.464
    B1<-0.04267
    B2<-0.03183
    B3<-0.03912
    B4<-0.03040
    ESCRIBIR "INGRESE TIPO DE GAS AL CUAL DESEA CALCULARLE EL VOLUMEN"
    ESCRIBIR "1:DIOXIDO DE CARBONO"
    ESCRIBIR "2:OXIGENO"
    Escribir "3:NITROGENO"
    ESCRIBIR "4:AGUA"
    LEER G
    Segun G Hacer
    1:
    EC<-P*V^3-(B1*P+R*T)*V^2+A1*V-A1*B1
    MIENTRAS EC>=-0.001 Y EC<=0.001
    V<-V+0.0000001
    EC<-P*V^3-(B1*P+R*T)*V^2+A1*V-A1*B1
    FinMientras
    ESCRIBIR "EL VALOR DEL VOLUMEN ES ", V

    2:
    EC<-P*V^3-(B2*P+R*T)*V^2+A2*V-A2*B2
    MIENTRAS EC>=-0.001) Y (EC<=0.001)
    V<-V+0.0000001
    EC<-P*V^3-(B2*P+R*T)*V^2+A2*V-A2*B2
    FinMientras
    ESCRIBIR "EL VALOR DEL VOLUMEN ES ", V
    3:
    EC<-P*V^3-(B3*P+R*T)*V^2+A3*V-A3*B3
    MIENTRAS EC>=-0.001) Y (EC<=0.001)
    V<-V+0.0000001
    EC<-P*V^3-(B3*P+R*T)*V^2+A3*V-A3*B3
    FinMientras
    ESCRIBIR "EL VALOR DEL VOLUMEN ES ", V
    4:
    EC<-P*V^3-(B4*P+R*T)*V^2+A4*V-A4*B4
    MIENTRAS EC>=-0.001) Y (EC<=0.001)
    V<-V+0.0000001
    EC<-P*V^3-(B4*P+R*T)*V^2+A4*V-A4*B4
    FinMientras
    ESCRIBIR "EL VALOR DEL VOLUMEN ES ", V
    De Otro Modo:
    ESCRIBIR "ERROR OPCION INCORRECTA"
    FinSegun
    FinProceso

    ResponderEliminar
  10. Hola dejo un ejemplo en Pascal utilizando procedimientos y funciones del TPNº8


    Program project1;
    uses
    Crt;
    var
    num,opc,borr:integer;
    resp: string;

    Function Primo(x:integer):boolean;
    var
    i,cont:integer;
    prim:boolean;

    begin
    prim:=true;
    cont:=0;
    if x<0 then
    x:=(x*-1);
    if x=0 then
    prim:=not(prim);
    for i:=2 to (x-1) do

    if x mod i=0 then
    cont:=(cont+1);
    if cont<>0 then
    prim:=not(prim);
    Primo:=prim;

    end;
    Procedure Bienvenida;
    var
    nom:string;
    begin
    writeln ('Escribe Tu Nombre: ');
    readln (nom);
    writeln;
    writeln ('Bienvenido ',nom,'.');
    end;
    Procedure Menu(var x:integer);

    begin
    writeln;
    writeln ('Ingresa una opcion:');
    writeln;
    writeln ('1- Calcular si el numero ingresado es Primo.');
    writeln ('2- Calcular Factorial del numero ingresado.');
    writeln;
    readln (x);
    if (x<>1) and (x<>2) then
    repeat
    writeln;
    writeln ('Ingreso Erroneo. Vuelve a ingresar:');
    readln (x);
    until (x=2) or (x=1);
    end;
    Function Facto(x:integer):integer;
    var
    i,f:integer;
    begin
    if x<0 then
    x:=x*-1;
    f:=1;
    for i:=1 to x do
    f:=f*i;
    Facto:=f;
    end;


    begin
    borr:=0;
    Bienvenida;
    repeat
    if borr<>0 then
    ClrScr;
    opc:=0;
    Menu(opc);
    case opc of
    1:Begin
    writeln;
    writeln ('Ingresa un Numero:');
    readln (num);
    if Primo(num) then
    writeln('El numero ',num,' si es Primo')
    else
    writeln('El numero ',num,' no es Primo');
    end;
    2: Begin
    writeln;
    writeln ('Ingresa un Numero Natural: ') ;
    readln (num);
    writeln;
    writeln ('El factorial es: ',Facto(num));
    end;
    end;
    writeln;
    writeln ('Finalizar? (si/no)');
    readln (resp);
    borr:=1;
    until (resp='si') ;

    end.

    ResponderEliminar
  11. Hola Dejo un algoritmo para pseint con vectores.

    Proceso Vectores

    Dimension V[200];
    Escribir "";
    Escribir "Ingresa la cantidad de datos:";
    Leer n;

    Para i<-1 Hasta n Hacer
    Escribir "";
    Escribir "Ingresa el dato ",i,":";
    Leer V[i];
    FinPara

    Repetir
    Escribir "";
    Escribir "Elegi una opcion: ";
    Escribir "1- Buscar Numeros pares y Posicion.";
    Escribir "2- Buscar Numeros Impares y Posicion.";
    Escribir "3- Eliminar un dato.";
    Escribir "4- Buscar Mayor y Posicion.";
    Escribir "5- Mostrar datos.";
    Escribir "6- Agregar datos.";
    Escribir "7- Salir.";
    Escribir "";
    Leer opc;
    Segun opc Hacer
    1: Para i<-1 Hasta n Hacer
    si V[i] mod 2=0 y V[i]<>0 Entonces
    Escribir V[i]," en posicion: ",i;
    FinSi
    FinPara

    2: Para i<-1 Hasta n Hacer
    si V[i] mod 2<>0 Entonces
    Escribir V[i]," en posicion: ",i;
    FinSi
    FinPara
    3: Escribir "1- Dada la posicion."
    Escribir "2- Dado el dato.";
    Leer opcc;
    Segun opcc Hacer
    1: Escribir "Ingrese Posicion:"
    Leer pos;
    Para i<-pos Hasta n-1 Hacer
    V[i]<-V[i+1];
    FinPara
    Escribir "Listo.";
    n<-n-1;
    2: Escribir "Ingrese dato:";
    Leer dat;
    Para i<-1 Hasta n Hacer
    si V[i]=dat Entonces
    pos<-i;
    FinSi
    FinPara
    Para i<-pos Hasta n-1 Hacer
    V[i]<-V[i+1];
    FinPara
    n<-n-1;
    Escribir "Listo.";
    de Otro Modo:
    Escribir "Ingreso Erroneo.";
    FinSegun


    4: band<-Verdadero;
    Para i<-1 Hasta n-1 Hacer

    si band Entonces
    si V[i]>V[i+1] Entonces
    may<-V[i];
    band<-no(band);
    pos<-i;
    Sino
    may<-V[i+1];
    band<-no(band);
    pos<-i
    FinSi
    Sino
    si V[i]>V[i+1] Entonces
    may<-V[i];
    pos<-i;
    Sino
    may<-V[i+1];
    pos<-i
    FinSi
    FinSi
    Escribir "El mayor es: ",may," en la posicion: ",pos;
    FinPara
    5: Para i<-1 Hasta n Hacer
    Escribir "Posicion: ",i," dato: ",V[i];
    FinPara
    6: Escribir "Cuantos datos desea agregar:?";
    Leer datos;
    n<-n+1;
    Para i<-n Hasta n+datos-1 Hacer
    Escribir "Ingrese Dato ",(i-n+1);
    Leer V[i];
    FinPara
    n<-n-1+datos;
    Escribir "Listo.";

    de Otro Modo:
    si opc<>7 Entonces

    Escribir "Ingreso Incorrecto.";
    FinSi

    FinSegun
    Hasta Que opc=7
    FinProceso

    ResponderEliminar