Pascal/Turbo Pascal - ayuda con una simple carga en un archivo.

 
Vista:
sin imagen de perfil

ayuda con una simple carga en un archivo.

Publicado por Diego (98 intervenciones) el 19/03/2014 22:35:43
Buenas tardes, tengo un problema, intento realizar una carga enteros en un archivo a través de un menú ciclico(almenos creo que eso que hize es un menú ciclico), pero luego de seleccionar la opción de la carga de archivo, vuelve al menú y se queda en ese bucle infinito hasta que seleccione salir.
También nosé si estoy usando bien la función random y randomizer. Todo esto forma parte de un enunciado, el cual no es complicado, pero no entiendo bien porque es que se produce ese loop. PD: lo había hecho modularizado, pero como se producia el mismo resultado opté por hacerlo todo en el programa principal para ver si el problema eran los modulos, pero nada, lo mismo. Les agradezco su pasiencia.

este es el enunciado:

. Hacer un programa con un menú principal cíclico con opciones para
a) Crear y cargar un archivo de números enteros arch: File of Integer con una cantidad de números
solicitada al usuario que se generan pseudoaleatoriamente con e:=Random( maxUIntValue ) –
maxint (antes de la generación se debe inicializar a la función generadora con Randomize). El archivo
debe llamarse por defecto ‘enteros’.

ese es el código que hize:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
program uno;
type
    t_arch = file of integer;
var
    e, indice : integer;
    arch : t_arch;
    num, opc : integer;
 
begin
    Randomize;
    repeat
      begin
        e := random(1)-(10);
        writeln('Elija una opción:)');
        writeln('(1)-- Crear un archivo');
        writeln('(2)-- Cargar un archivo');
        writeln('(3)-- salir');
        readln(opc);
        if (opc = 1) then
          assign(arch, 'enteros')
        else
           if (opc = 2) then
             begin
               rewrite(arch);
                  for indice := 1 to e do
                      begin
                        write('Ingrse un número entero: ');
                        readln(num);
                        write(arch, num);
                      end;
             end;
      end;
    until (opc = 3);
    close(arch);
    readln();
    readln();
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

ayuda con una simple carga en un archivo.

Publicado por Diego (98 intervenciones) el 19/03/2014 23:02:17
Les agradezco por dedicarle un poco de su tiempo a leer esto, ya encontré el error, está en como uso Random, ahora lo use así:
random( un entero mayor que 0);
sino me dan números negativos y algunos menores al indice con el que empiezo y como yo avanzo incrementando, nunca pasa por ese for. De todas maneras aun no se bien como es que funciona el random que mencionan en el ejercicio: e:=Random( maxUIntValue ) –maxin.
Gracias y hasta luego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con una simple carga en un archivo.

Publicado por Miguel (1 intervención) el 03/04/2014 02:40:10
Hola diego, un poco tarde pero respondo a tu inquietud.

el random debes usarlo de esta forma:


aux:=random(65535)-32767 ; {de esta forma te dará valores positivos y negativos del conjunto enteros}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ayuda con una simple carga en un archivo.

Publicado por Diego (98 intervenciones) el 05/04/2014 02:54:41
Gracias por la respuesta, ya logre realizar ese ejercicio. aunque según lo que decis el random usado de esa manera me daría tanto positvos como negativos, pero solo si llega a dar un numero menor a 1 el for ya no funcionaría.
De todas maneras gracias, voy a revisar bien y ver como funciona.
PD: agregue otros dos problemas si podes echarme una mano en esos te lo agradeceria; ambos son de tipos de datos abstractos y archivos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ayuda con una simple carga en un archivo.

Publicado por Diego (98 intervenciones) el 19/03/2014 23:03:25
Se me olvidó mencionar que quize modificar, pero el boton modificar de la pagina no funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar