Foros-FIUBA Foros HostingPortal
 FAQ  •  Buscar  •  Wiki  •  Apuntes  •  Planet  •  Mapa  •  Eyeon  •  Chat
Preferencias  •  Grupos de Usuarios
Registrarse  •  Perfil  •  Entrá para ver tus mensajes privados  •  Login
Ver tema siguiente
Ver tema anterior

Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente
Autor Mensaje
dedosveloces
Nivel 3


Edad: 38
Registrado: 07 Feb 2006
Mensajes: 20
Ubicación: Pilar, Bs As
Carrera: Informática
argentina.gif
MensajePublicado: Mie Jul 19, 2006 7:21 pm  Asunto:  Ayuda con Tp en Pascal Responder citandoFin de la PáginaVolver arriba

hola, tengo un problema con pascal. estoy haciendo un tp y por alguna razon q desconozco no me funciona correctamente y la verdad me esta volviendo loco. por eso acudo al templo del saber donde esta lleno de sabios programadores q seguro saben mas q yo q recien empiezo en el tema.
el ejercicio es asi. tengo un archivo en el q ingreso registros de solicitudes de autos en los q consta el nro de solicitud, el titular, la marca, el modelo, y el color. y otro archivo donde ingreso bajas de dichas solicitudes, cancelaciones, y en estos registros consta el nro de baja y la causa de la misma. la idea es q el programa cree un 3er archivo con las solicitudes finales, osea, sacando las q figuraban en el archivo de bajas, comparando nro de solicitud con el nro de baja.
aca va el programas...

Código:
program tp2;
uses crt;

const
     dirsolicitud='c:\sol.dat';
     dirbajasolicitud='c:\bajsol.dat';
     dirsolicitudfinal='c:\solfinal.dat';

type
    trsolicitud=record
                      nrosolicitud:integer;
                      titular:string[40];
                      marca:string[20];
                      modelo:char;
                      color:integer;
                      end;

    tarsolicitud=file of trsolicitud;

    trbajasolicitud=record
                          nrobajasolicitud:integer;
                          causa:char;
                          end;

    tarbajasolicitud=file of trbajasolicitud;

var
   solicitud:tarsolicitud; {archivo secuencial ordenado ascendentemente por nrosolicitud}
   bajasolicitud:tarbajasolicitud; {archivo secuencial ordenado ascendentemente por nrobajasolicitud}
   solicitudfinal:tarsolicitud;
   chevrolet,ford,fiat,renault,vw,peugeot,honda,torino,ferrari,mercedezbenz,bmw,toyota:integer;
   cantrsolicitud,cantrbajasolicitud,cantrsolicitudfinal:integer;

procedure cargarsolicitud (var solicitud:tarsolicitud; var cantrsolicitud:integer);
var
   r:trsolicitud;
   k:integer;

begin
     reset (solicitud);
     clrscr;
     writeln ('Las marcas con las cuales trabajamos son: ');
     write (' (al ingresar la marca debera hacerlo de la manera en la cual');
     writeln (' aparecen listadas a continuacion) ');
     writeln ('- BMW');
     writeln ('- Chevrolet');
     writeln ('- Ferrari');
     writeln ('- Fiat');
     writeln ('- Ford');
     writeln ('- Honda');
     writeln ('- Mercedezbenz');
     writeln ('- Peugeot');
     writeln ('- Renault');
     writeln ('- Torino');
     writeln ('- Toyota');
     writeln ('- VW');
     readkey;
     write ('Ingrese la cantidad de registros para el archivo de solicitudes: ');
     readln (cantrsolicitud);
     for k:=1 to cantrsolicitud do
         begin
              writeln ('Solicitud N§ ',k);
              r.nrosolicitud:=k;
              write ('Ingrese nombre del titular: ');
              readln (r.titular);
              repeat
                         write ('Ingrese marca: ');
                         readln (r.marca);
              until ((r.marca)='ford') or ((r.marca)='vw') or ((r.marca)='torino')
                    or ((r.marca)='fiat') or ((r.marca)='mercedezbenz') or ((r.marca)='bmw')
                    or ((r.marca)='renault') or ((r.marca)='peugeot') or ((r.marca)='ferrari')
                    or ((r.marca)='honda') or ((r.marca)='toyota') or ((r.marca)='chevrolet');
              write ('Ingrese modelo (A/B/C/D): ');
              readln (r.modelo);
              write ('Ingrese color (1-8): ');
              readln (r.color);
              write (solicitud,r);
         end;
end;

procedure cargarbajasolicitud (var bajasolicitud:tarbajasolicitud; var cantrbajasolicitud:integer);
var
   r:trbajasolicitud;
   k:integer;

begin
     write ('Ingrese la cantidad de registros para el archivo de bajas de solicitudes: ');
     readln (cantrbajasolicitud);
     for k:=1 to cantrbajasolicitud do
         begin
              write ('Ingrese numero de baja de solicitud: ');
              readln (r.nrobajasolicitud);
              write ('Causa de la baja (R/F/O): ');
              readln (r.causa);
              write (bajasolicitud,r);
         end;
end;

procedure mostrarsolicitud (var solicitud:tarsolicitud);
var
   r:trsolicitud;

begin
     reset (solicitud);
     read (solicitud,r);
     while (not eof (solicitud)) do
           begin
                write ('- Solicitud N§:',r.nrosolicitud,', titular: ',r.titular,', marca: ',r.marca,', modelo:  ',r.modelo);
                writeln (', color:  ',r.color);
                read (solicitud,r);
           end;
    write ('- Solicitud N§:',r.nrosolicitud,', titular: ',r.titular,', marca: ',r.marca,', modelo:  ',r.modelo);
    writeln (', color:  ',r.color);
end;

procedure mostrarbajasolicitud (var bajasolicitud:tarbajasolicitud);
var
   r:trbajasolicitud;

begin
     reset (bajasolicitud);
     read (bajasolicitud,r);
     while (not eof (bajasolicitud)) do
           begin
                writeln ('- ',r.nrobajasolicitud,', ',r.causa);
                read (bajasolicitud,r);
           end;
     writeln ('- ',r.nrobajasolicitud,', ',r.causa);
end;

procedure dardebaja2 (var solicitud,solicitudfinal:tarsolicitud; var bajaregistro:tarbajasolicitud);
var
   rs:trsolicitud;
   rb:trbajasolicitud;

begin
     reset (solicitud);
     read (solicitud,rs);
     reset (bajasolicitud);
     read (bajasolicitud,rb);
     while (not eof (bajasolicitud)) do
           begin
                if ((rb.nrobajasolicitud)=(rs.nrosolicitud)) then
                   begin
                        read (bajasolicitud,rb);
                        read (solicitud,rs);
                   end
                else
                    begin
                         write (solicitudfinal,rs);
                         read (solicitud,rs);
                    end;
           end;
     while (not eof (solicitud)) do
           begin
                write (solicitudfinal,rs);
                read (solicitud,rs);
           end;
end;

begin
     assign (solicitud,dirsolicitud);
     rewrite (solicitud);
     cargarsolicitud (solicitud,cantrsolicitud);
     mostrarsolicitud (solicitud);
     readkey;
     assign (bajasolicitud,dirbajasolicitud);
     rewrite (bajasolicitud);
     cargarbajasolicitud (bajasolicitud,cantrbajasolicitud);
     mostrarbajasolicitud (bajasolicitud);
     readkey;
     assign (solicitudfinal,dirsolicitudfinal);
     rewrite (solicitudfinal);
     dardebaja2 (solicitud,solicitudfinal,bajasolicitud);
     mostrarsolicitud (solicitudfinal);
     readkey;
end.


les doy un ejemplo de lo q devuelve el programa. si ingreso 4 registros al archivo de solicitudes y pido q se bajen el 2do y 3ro, el resultado q me devuelve es un archivo con 2 registros (eso lo hace bien) pero en vez de ser el 1ro y el 4to me devuelve el 1ro y el 2do. osea, en vez de borrar los q tenia q borrar me borra los ultimos.
si alguien puede ayudarme se lo agradeceria eternamente! tal vez es una boludes, no creo q sea un error groso de concepto y sino estoy frito Sad pero la cosa es q no me funciona. por eso OH GRANDES SABIOS!!! AYUDENME!!!
Muchas gracias, saludos
eduar

pd: es una cagada q me pega todo sobre el margen izq pero no se como hacerlo de otra manera, les dejo el .pas por las dudas.

/edit: renombré. A.

\mod: Puse el código entre los tags de code. Fhran.


Cancer Género:Masculino Bufalo OfflineGalería Personal de dedosvelocesVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Mariano
Ex-Staff


Edad: 38
Registrado: 25 Ago 2005
Mensajes: 344

Carrera: Sistemas
CARRERA.sistemas.4.gif
MensajePublicado: Mie Jul 19, 2006 8:40 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Ufff... hace bastamte que no toco pascal... pero creo que entendí lo que estás haciendo más o menos.

Hay un par de problemitas menores, pero prefiero enfocarme primero en lo que hace que no te ande el código:

La carga del archivo de Solicutudes y de Bajas está bastante bien (en el código parece bien, y por lo que decís, anda). El tema es cuando vas a compararlos, y ahí estás metiendo la pata.
Lo que yo haría sería indexar las bajas (por número de solicitud que se dio de baja) y luego ir recorriendo el archivo de Solicitudes. Te escribo el pseudo-código para que veas la idea:

Código:

Indexar bajas (podría ser un vector de números de solicitud, ordenánadolos con algún método de ordenamiento que te hayan enseñado)
   Abrir archivo de Solicitudes
   Por cada solicitud{
      Si el número NO está en el índice de bajas, escribirlo al archivo de salida (acá usás alguno de los métodos de búsqueda que seguramente te habrán enseñado)
   }
El procedimiento termina y aprobás el TP


Espero haberte aclarado un poco... cualquier cosa volvé a postear o mandá MP

EDIT: Hipótesis: Estás en Algo I o en Computación y te enseñaron Ordenamiento y Búsqueda y NO usan memoria dinámica

_________________
El conocimiento es SÓLO UNA de las representaciones de la existencia

Virgo Género:Masculino Bufalo OfflineGalería Personal de MarianoVer perfil de usuarioEnviar mensaje privado
dedosveloces
Nivel 3


Edad: 38
Registrado: 07 Feb 2006
Mensajes: 20
Ubicación: Pilar, Bs As
Carrera: Informática
argentina.gif
MensajePublicado: Jue Jul 20, 2006 8:07 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Buenas! antes que nada gracias tanto a Fhran por editar como a Mariano por responder.
me olvide de dar algunos datos. jeje. los archivos son secuenciales y estan ordenados. me parece q en ese caso el indexarlos o no, no deberia de cambiar la forma en la cual se procede para dar las bajas. en cuanto a lo q me dijiste q debia hacer, eso es lo q intente programar Sad . yo lo hice en base a seguir el archivo de bajas, pero al reves seria lo mismo, igual lo hice en base al archivo de solicitudes y tampoco anda bien. la cosa es asi. leo la primer solicitud y la primer baja. si son iguales, vuelvo a leer tanto solicitud como baja (ahi lo estaria dando de baja porq no lo grabe). si no son iguales grabo la solicitud y leo la q sigue. asi volveria a comparar la baja q tenia. siempre teniendo en cuenta q los dos archivos estan ordenados por nro de solicitud o de baja y que todas las bajas q ingrese existen. de esa manera creo q deberia funcionar. teniendo en cuenta q estan ordenados. sin embargo cuando pongo dos solicitudes y una baja (para q borre la primer solicitud) el resultado final es la primersolicitud (borro la segunda en vez de la primera).
la verdad en este momento ya no se me ocurre nada, si pueden ayudarme se los agradeceria...
Saludos! eduar

PD: tu hipotesis es correcta. curse algo i con garcia (terrible error) y trate de aprender todo lo q pude de internet y libros. se busquedas y ordenamiento y no tengo idea de la memoria dinamica.


Cancer Género:Masculino Bufalo OfflineGalería Personal de dedosvelocesVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Mariano
Ex-Staff


Edad: 38
Registrado: 25 Ago 2005
Mensajes: 344

Carrera: Sistemas
CARRERA.sistemas.4.gif
MensajePublicado: Jue Jul 20, 2006 11:55 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Uhhhhh, García... Sad yo cometí el mismo error. Pero bueh... hay que seguir adelante.

Bueno, en primer lugar te comento que si bien los archivos están ordenados, siempre que puedas hacer una solución que no dependa de esa condición es mucho mejor (en caso de un tp tenés que pesar si hacer que no dependa de la condición te va a tomar MUCHO más tiempo... si no te lo toma, hacela!... esa es la diferencia entre un TP aprobado y un TP bien hecho Wink ) Acá estás tomadno dos hipótesis que te conviene evitar:
    Los archivos están ordenados
    Todas las bajas fueron altas

Si vos lográs que tu programa funcione independientemente de eso... MEJOR.

En casos cuando tengo que hacer un ABM yo pienso en el segundo archivo (el de bajas de solicitudes, en tu caso) como un filtro. Vos tenés que agarrar los actuales, y "filtrarlos"... si pasan el filtro, entran al archivo final. Si vos pasás sólo por el primer elemento del filtro... no va a andar bien en caso de que no esté ordenado.

Ahora volvamos a tu caso... en el código no encuentro errores, hice un seguimiento a mano y me da que tendría que funcionar... la verdad no sé que decirte. Hay veces que cuando algo no anda conviene empezar de 0 por otro lado, en lugar de buscar el error en algo que te parece que está bien.

Probá el sistema de armarte un vector con todos los códigos de bajas pedidas, y cada vez que leas un registro de las solicitudes, buscá su código ahí (una búsqueda binaria te va a andar joya para eso).

Temas para la próxima clase:
    ENUMERADOS
    until ("variable" IN "conjunto posible");


Edit: Justo escribió elPadrino que tiene más fresco Pascal... hacele caso!

_________________
El conocimiento es SÓLO UNA de las representaciones de la existencia



Última edición por Mariano el Jue Jul 20, 2006 12:05 pm, editado 1 vez
Virgo Género:Masculino Bufalo OfflineGalería Personal de MarianoVer perfil de usuarioEnviar mensaje privado
Stoma
Nivel 8


Edad: 36
Registrado: 06 Jul 2006
Mensajes: 510

Carrera: Informática
argentina.gif
MensajePublicado: Jue Jul 20, 2006 11:57 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Bue... encontre un par de errores.
El primero y principal y causa de que no te anda, es que cursaste con García. Te entiendo, no sabias. A mi me pasó lo mismo (y si cursabas los lunes ibas conmigo).
Segundo error: hiciste lo que hizo Elena a la hora de leer archivos:
reset (solicitud);
read (solicitud,rs);
reset (bajasolicitud);
read (bajasolicitud,rb);
while (not eof (bajasolicitud)) do


es al reves, tenes que leer adentro del while. Cuando le das reset, le asigna valor a EOF. Si el archivo esta vacío, pone EOF en true. Si le das reset a un archivo vacio y despues lo lees (sin fijarte si es EOF como hiciste)... estas leyendo algo que no existe. Esto puede llegar a ocasionar que tu computadore explote volando en 10000 pedazos (fue una exageración nomas). El sistema es completamente al reves. Primero me fijo si termino el archivo. Si no terminó el archivo, entonces hay algo para leer y leo, si terminó... que voy a leer? Lo que hace despues no lo vi, pero Pascal funciona al verres y ahi es donde radica tu error. De la forma que lo dijo Elena es muchisimo mas facil... pero no funciona de esa manera...
Ahora me voy a comer, despues te pongo un codigo como ayuda para que lo puedas hacer

Saludos

_________________
Image
Si yo te digo carnaval...

Geminis Género:Masculino Gato OfflineGalería Personal de StomaVer perfil de usuarioEnviar mensaje privado
Stoma
Nivel 8


Edad: 36
Registrado: 06 Jul 2006
Mensajes: 510

Carrera: Informática
argentina.gif
MensajePublicado: Jue Jul 20, 2006 12:34 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

esta me pareció una manera piola de hacerlo:
esta hecho de modo qe permite que haya una baja de una solicitud que no existe (obviamente no procesa la baja, sino que dice que la solicitud a bajar es inexistente)

Código:

               leerSol:=true;
               leerBaja:=true;
               while ((not eof(archSolicitudes)) and (not EOf(archBajas))) do
                     begin
                          if leerSol then
                                   read(ArchSolicitudes,rSol);
                          if leerBaja then
                                  read(ArchBajas,rBaja);

                          {una vez que leyo, compruebo datos}
                          if rSol.nroSolicitud < rBaja.nroSolicitudBaja then
                             begin
                                  {no tiene baja}
                                  write(archNuevo,rSol);
                                  leerSol:=true;
                                  leerBaja:=false;
                             end
                          else if rSol.nroSolicitud > rBaja.nroSolicitudBaja then
                               begin
                                    {registro a bajar inexistente}
                                    causaBaja:='el registro a bajar es inexistente';
                                    printBajaRechazada(BajasRechazadas,causaBaja,rBaja);
                                     {printBaja es un procedimiento encargado de tirarte el error}
                                    {si se va cuando termina archBajas hay un registro que no procesa}
                                    if eof(archBajas) then
                                       begin
                                            write(archNuevo,rSol);
                                            cargarVecDatos(rSol,vecDatos);
                                       end;
                                    leerSol:=false;
                                    leerBaja:=true;
                               end
                          else {son iguales}
                               begin
                                      {causaValida es una funcion booleana que analiza si la causa es valida}
                                    if causaValida(rBaja) then
                                       {procesarBaja}
                                       begin
                                            leerSol:=true;
                                            leerBaja:=true;
                                       end
                                    else
                                        {causa inv lida}
                                        begin
                                             leerSol:=false;
                                             leerBaja:=true;
                                             causaBaja:='la causa para bajar el registro es inv lida';
                                             printBajaRechazada(BajasRechazadas,causaBaja,rBaja);
                                        end;
                               end;
                     end; {end while grande}



               {pongo en nuevo los registros que quedan}
               while not eof(ArchSolicitudes) do
                     begin
                          read(ArchSolicitudes,rSol);
                          if rSol.nroSolicitud <> rBaja.nroSolicitudBaja then
                                  write(archNuevo,rSol);
                          else
                              begin
                                   leerBaja:=true;
                                   if causaValida(rBaja) then
                                      {procesar baja}
                                      {no hago nada}
                                   else
                                       begin
                                            causaBaja:='la causa para bajar el registro es inv lida';
                                            printBajaRechazada(BajasRechazadas,causaBaja,rBaja);
                                       end;
                              end;
                     end;
                     if eof(archBajas) and (not leerBaja) then
                        {la ultima baja no se tuvo en cuenta}
                        {si despues de ver todas las solicitudes leerBaja queda en false,
                         entonces reg inexistente}
                        begin
                             causaBaja:='el registro a bajar es inexistente';
                             printBajaRechazada(BajasRechazadas,causaBaja,rBaja);
                        end;

               {si quedan bajas pendientes}
               while not eof(ArchBajas) do
                     begin
                          read(ArchBajas,rBaja);
                          if rBaja.nroSolicitudBaja <> rSol.nroSolicitud then
                             {registro inexistente}
                             begin
                                  causaBaja:='el registro a bajar es inexistente';
                                  printBajaRechazada(BajasRechazadas,causaBaja,rBaja);
                             end
                          else
                               begin
                                    if causaValida(rBaja) then
                                       {procesar baja}
                                       {no hago nada, que siga leyendo}
                                    else
                                        begin
                                             causaBaja:='la causa para bajar el registro es inv lida';
                                             printBajaRechazada(BajasRechazadas,causaBaja,rBaja);
                                        end;
                               end;
                     end;


Este codigo (con algunas cosas mas en el medio, por ejemplo un contador de los registros leidos y un par de huevadas mas) fue el que use para el  mismo TP (si no me equivoco es el ejercicio 11 de la guia), asi que si hay algo que no entiendas, preguntame y listo.

Saludos

_________________
Image
Si yo te digo carnaval...

Geminis Género:Masculino Gato OfflineGalería Personal de StomaVer perfil de usuarioEnviar mensaje privado
- = DIEGO = -
Nivel 5


Edad: 39
Registrado: 09 Jul 2006
Mensajes: 197
Ubicación: San Telmo!!
Carrera: Informática
cuba.gif
MensajePublicado: Lun Sep 25, 2006 4:26 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Revivo este tema xq tengo un tp en Pascal y algunas dudas... Very Happy

1) Alguien se acuerda como se hace para pasar argumentos x linea de comando (c:\carpeta\tp.exe prueba.txt). Encontre algo de q se pone entre parentesis al lado del program de arriba de todo pero no se bien como se usa

2) Necesito redondear un double a una cantidad dada de digitos. Para esto se me habia ocurrido usar la funcion div q hace una division y te deja la parte entera solamente. Con esto hiba como piña... el problema es q div solo funca para integers... Asi q estoy al horno, la verdad q no tengo ganas de implementar una division de doubles q solo me devuelva la parte entera... si alguien conoce una funcion asi u otra manera de hacer esto le agradeceria una mano.

_________________
"Pienso, luego existo", pese a una frase célebre del gran Sirne: "Usted no piense, si piensa se equivoca"

Sagitario Género:Masculino Rata OfflineGalería Personal de - = DIEGO = -Ver perfil de usuarioEnviar mensaje privadoEnviar emailVisitar sitio web del usuarioMSN Messenger
Fhran
Administrador


Edad: 39
Registrado: 25 Ago 2005
Mensajes: 3123
Ubicación: En la rama de un árbol... entre locos.
Carrera: Electrónica y Informática
blank.gif
MensajePublicado: Lun Sep 25, 2006 4:30 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

**********
- = DIEGO = - escribió:
2) Necesito redondear un double a una cantidad dada de digitos. Para esto se me habia ocurrido usar la funcion div q hace una division y te deja la parte entera solamente. Con esto hiba como piña... el problema es q div solo funca para integers... Asi q estoy al horno, la verdad q no tengo ganas de implementar una division de doubles q solo me devuelva la parte entera... si alguien conoce una funcion asi u otra manera de hacer esto le agradeceria una mano.

Si mal no recuerdo estaban "Round" y "Trunc". La primera redondea y la segunda devuelve solo la parte entera. Buscalas en la ayuda para ver los parámetros.

Lo de pasar argumentos por consola nunca lo hice.

**********

_________________
Image
El horóscopo del ingeniero es un poco más amplio. Se compone de Amor, Dinero, Salud, Simetría y Linealidad Causa-Efecto.

Aquario Género:Masculino Rata OfflineGalería Personal de FhranVer perfil de usuarioEnviar mensaje privado
Sebastian Santisi
Administrador Técnico


Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451


argentina.gif
MensajePublicado: Lun Sep 25, 2006 4:41 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Fijate si te sirve esto:
http://www.gnu-pascal.de/gpc-hr/Accessing-Command-Line-Arguments.html
http://www.geocities.com/SiliconValley/Horizon/5444/pas074.htm

(No sé si es standard o no, etc.; es lo primero que saltó en Google con "command line args Pascal")

(Por cierto, no me peguen, pero que triste que muchísimos terminen Algoritmos I sin haber visto jamás argumentos en linea de comandos.)

_________________
Image[tex] ${. \ \ \ \ \ \ \ \ \ .}$ [/tex][tex] ${\Large Usá \LaTeX, no seas foro...}$ [/tex]

Aries Género:Masculino Perro OfflineGalería Personal de Sebastian SantisiVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
- = DIEGO = -
Nivel 5


Edad: 39
Registrado: 09 Jul 2006
Mensajes: 197
Ubicación: San Telmo!!
Carrera: Informática
cuba.gif
MensajePublicado: Lun Sep 25, 2006 4:42 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Pero esas redondean y truncan de una...
Yo necesito una division. Asi a mi funcion le paso la cantidad de cifras a las q quiero q redondee.
Ejemplo:
Redondear(3.12546,3)
da 3.16
Redondear(3.12546,5)
da 3.1254

Salvo q eso sean lo q hagan
(la ayuda de pascal no me anda, tipico de mi pc, voy a ver si me la puedo bajar y ver q hacen bien esas funciones)
Gracias Fhran!!

_________________
"Pienso, luego existo", pese a una frase célebre del gran Sirne: "Usted no piense, si piensa se equivoca"

Sagitario Género:Masculino Rata OfflineGalería Personal de - = DIEGO = -Ver perfil de usuarioEnviar mensaje privadoEnviar emailVisitar sitio web del usuarioMSN Messenger
Sebastian Santisi
Administrador Técnico


Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451


argentina.gif
MensajePublicado: Lun Sep 25, 2006 4:51 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Para lo del redondeo, con saber redondear números a enteros te alcanza;
simplemente multiplicá por [tex]10^n[/tex], siendo n el número de dígitos que querés conservar, y después de truncar a 0 decimales, volvés a dividir por [tex]10^n[/tex].

_________________
Image[tex] ${. \ \ \ \ \ \ \ \ \ .}$ [/tex][tex] ${\Large Usá \LaTeX, no seas foro...}$ [/tex]

Aries Género:Masculino Perro OfflineGalería Personal de Sebastian SantisiVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
- = DIEGO = -
Nivel 5


Edad: 39
Registrado: 09 Jul 2006
Mensajes: 197
Ubicación: San Telmo!!
Carrera: Informática
cuba.gif
MensajePublicado: Lun Sep 25, 2006 5:15 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Esa era masomenos la idea SS, te falta lo del redonde q es fijarse el sig y sumar si es mayor q 5.
Tambien me sirvio lo de los arg x linea de comnado.

Muchas gracias

_________________
"Pienso, luego existo", pese a una frase célebre del gran Sirne: "Usted no piense, si piensa se equivoca"

Sagitario Género:Masculino Rata OfflineGalería Personal de - = DIEGO = -Ver perfil de usuarioEnviar mensaje privadoEnviar emailVisitar sitio web del usuarioMSN Messenger
- = DIEGO = -
Nivel 5


Edad: 39
Registrado: 09 Jul 2006
Mensajes: 197
Ubicación: San Telmo!!
Carrera: Informática
cuba.gif
MensajePublicado: Lun Sep 25, 2006 6:00 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Odio pascal...
Le di una vueltita y parece q ya anda peeeeeeeeeero, tengo este error:

...
Function Aplicargrilla(var coeficiente: double; mant: integer): double;
...
re := Aplicargrilla(3.141618,3);
...

El error dice: call by var statemente have to match exactly; GOT S80real (supongo q es un double), expected S65real :S

puto puto pascal puto

Ayuda x favor...

_________________
"Pienso, luego existo", pese a una frase célebre del gran Sirne: "Usted no piense, si piensa se equivoca"

Sagitario Género:Masculino Rata OfflineGalería Personal de - = DIEGO = -Ver perfil de usuarioEnviar mensaje privadoEnviar emailVisitar sitio web del usuarioMSN Messenger
Don Gato
Nivel 0



Registrado: 07 Sep 2007
Mensajes: 1


argentina.gif
MensajePublicado: Vie Sep 07, 2007 4:16 pm  Asunto:  Una ayudita. Responder citandoFin de la PáginaVolver arriba

- = DIEGO = - escribió:
Odio pascal...
Le di una vueltita y parece q ya anda peeeeeeeeeero, tengo este error:

...
Function Aplicargrilla(var coeficiente: double; mant: integer): double;
...
re := Aplicargrilla(3.141618,3);
...

El error dice: call by var statemente have to match exactly; GOT S80real (supongo q es un double), expected S65real :S

puto puto pascal puto

Ayuda x favor...


Pascal no es puto, sólo es un poco estricto, je.
Si definís el primer parámetro para pasaje por referencia, sólo podés pasar variables, y luego no podés pasar constantes, expresiones ni literales (como es el caso de "3.131618").
Ese es el problema.


   OfflineGalería Personal de Don GatoVer perfil de usuarioEnviar mensaje privado
Rada
Moderador


Edad: 37
Registrado: 10 Abr 2006
Mensajes: 2728
Ubicación: Caballito
Carrera: Informática
blank.gif
MensajePublicado: Sab Sep 08, 2007 4:51 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Gracias Don Gato por colaborar.. igualmente el post era de hace casi hace un año :P
Suerte

_________________
[CAMPAÑA] Colaboremos entre todos por un foro más ordenado (click aquí)
[CAMPAÑA] Hacer un tópico por cada curso y con información ¡útil! (click aquí)


Gabba gabba we accept you we accept you one of us

Tauro Género:Masculino Tigre OcultoGalería Personal de RadaVer perfil de usuarioEnviar mensaje privadoEnviar emailYahoo MessengerMSN Messenger
Mostrar mensajes de anteriores:      
Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente

Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro
No podés responder a temas en este foro
No podés editar tus mensajes en este foro
No podés borrar tus mensajes en este foro
No podés votar en encuestas en este foro
No Podéspostear archivos en este foro
No Podés bajar archivos de este foro


Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker
365 Attacks blocked.

Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods y Créditos

Foros-FIUBA está hosteado en Neolo.com Cloud Hosting

[ Tiempo: 0.2582s ][ Pedidos: 20 (0.1704s) ]