Pascal/Turbo Pascal - Arreglos

 
Vista:

Arreglos

Publicado por Naye (2 intervenciones) el 27/04/2012 05:07:21
me podrian ayudar a pasar este programa a arreglos y a unidades? por favor

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
program Agenda1;
 
type
    tipoPersona = record
        nombre: string;
        email: string;
        edad: string;
        direccion:string;
    end;
 
const
    capacidad = 1000;
 
var
    gente: array[1..capacidad] of tipoPersona;
    cantidad: integer;
    opcion: integer;
    i: integer;
    textoBuscar: string;
    encontrado: boolean;
 
 
{Cuerpo del programa principal}
begin
 
 
    cantidad := 0;
 
    repeat
 
 
 
        WriteLn('AGENDA');
        WriteLn;
        WriteLn('1- Anadir una nueva persona');
        writeln;
        WriteLn('2- Ver los datos de  de todos');
        writeln;
        WriteLn('3- Buscar una persona');
        writeln;
        WriteLn('0- Salir');
        writeln;
        Write('*****Escoja una opcion:***** ');
        ReadLn(opcion);
        WriteLn;
 
 
        case opcion of
 
            1: { Añadir datos de una persona }
                if (cantidad < capacidad) then
                begin
                    inc(cantidad);
                    WriteLn('Introduciendo la persona ', cantidad);
 
                    Write('Introduzca el nombre: ');
                    ReadLn(gente[cantidad].nombre);
 
                    Write('Introduzca el correo electronico: ');
                    ReadLn(gente[cantidad].email);
 
                    Write('Introduzca su edad: ');
                    ReadLn(gente[cantidad].edad);
 
					Write('Introduzca su direccion:');
					readln(gente[cantidad].direccion);
 
                     WriteLn;
 
                 end
                 else
                        WriteLn('Base de datos llena');
 
 
            2: { Ver nombres de todos }
                begin
                if cantidad = 0 then
                    WriteLn('No hay datos')
                else
                    for i := 1 to cantidad do
                        WriteLn(i, ' ', gente[i].nombre);
                        writeln(i,'  ',gente[i].email);
                        writeln(i,' ',gente[i].edad);
                        writeln(i,'',gente[i].direccion);
 
                WriteLn;
                end;
 
            3: { Buscar una persona }
                begin
                Write('¿Qué texto busca? ');
                ReadLn( textoBuscar );
                encontrado := false;
                for i := 1 to cantidad do
                    if pos (textoBuscar, gente[i].nombre) > 0 then
                    begin
                        encontrado := true;
                        WriteLn( i,' - Nombre: ', gente[i].nombre,
                          ', Email: ', gente[i].email,
                          ', Edad: ', gente[i].edad,
                          ',Direccion:',gente[i].direccion);
                    end;
                if not encontrado then
                    WriteLn('No se ha encontrado.');
                WriteLn;
                end;
 
            0: { Salir de la aplicación }
                begin
                WriteLn;
                WriteLn('Saliendo...');
                WriteLn;
                end;
 
 
             else
                begin
                WriteLn;
                WriteLn('Opción incorrecta!');
                WriteLn;
                end;
        end;  { Fin de "case" }
 
 
    until opcion = 0;
 
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

Arreglos

Publicado por ramon (2158 intervenciones) el 27/04/2012 10:58:23
{Te comento el programa no puede trabajar con un array de 1000 registros por ser una estructura
demasiado grande para trabajar así tendrías que usar punteros no array, respecto a lo de unudad
me supongo te refieres a esto pero si no comenta lo que es pues yo entendí esto.
Para que funcione como unidad compilarla y después as esto:
program prueva;
uses
agenda1;
begin
agenda;
end.}




{program Agenda1;}
unit agenda1;
interface
uses
crt;
type
tipoPersona = record
nombre: string[80];
email: string[160];
edad: string[8];
direccion:string[80];
end;

const
capacidad = 100;

var
gente: array[1..capacidad] of tipoPersona;
cantidad: integer;
opcion: integer;
i: integer;
textoBuscar: string;
encontrado: boolean;

procedure agenda;
implementation
{Cuerpo del programa principal}
procedure agenda;
begin
cantidad := 0;
repeat
clrscr;
WriteLn('AGENDA');
WriteLn;
WriteLn('1- Anadir una nueva persona');
writeln;
WriteLn('2- Ver los datos de de todos');
writeln;
WriteLn('3- Buscar una persona');
writeln;
WriteLn('0- Salir');
writeln;
Write('*****Escoja una opcion:***** ');
ReadLn(opcion);
WriteLn;
case opcion of
1: { Añadir datos de una persona }
if (cantidad < capacidad) then
begin
inc(cantidad);
WriteLn('Introduciendo la persona ', cantidad);

Write('Introduzca el nombre: ');
ReadLn(gente[cantidad].nombre);

Write('Introduzca el correo electronico: ');
ReadLn(gente[cantidad].email);

Write('Introduzca su edad: ');
ReadLn(gente[cantidad].edad);

Write('Introduzca su direccion:');
readln(gente[cantidad].direccion);

WriteLn;

end
else
WriteLn('Base de datos llena');


2: { Ver nombres de todos }
begin
if cantidad = 0 then
WriteLn('No hay datos')
else
for i := 1 to cantidad do
WriteLn(i, ' ', gente[i].nombre);
writeln(i,' ',gente[i].email);
writeln(i,' ',gente[i].edad);
writeln(i,'',gente[i].direccion);

WriteLn;
end;

3: { Buscar una persona }
begin
Write('¿Qué texto busca? ');
ReadLn( textoBuscar );
encontrado := false;
for i := 1 to cantidad do
if pos (textoBuscar, gente[i].nombre) > 0 then
begin
encontrado := true;
WriteLn( i,' - Nombre: ', gente[i].nombre,
', Email: ', gente[i].email,
', Edad: ', gente[i].edad,
',Direccion:',gente[i].direccion);
end;
if not encontrado then
WriteLn('No se ha encontrado.');
WriteLn;
end;

0: { Salir de la aplicación }
begin
WriteLn;
WriteLn('Saliendo...');
WriteLn;
end;
else
begin
WriteLn;
WriteLn('Opción incorrecta!');
WriteLn;
end;
end; { Fin de "case" }
until opcion = 0;
end;
begin
end.
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

Arreglos

Publicado por Naye (5 intervenciones) el 28/04/2012 03:30:10
Es que se supone que el programa ya esta, y el punto es pasar esto a Arreglos y a unidades, para que el programa se vuelv más compacto, pero yo no entiendo nada... crees que puedas ayudarme a pasarlo a arreglos ?? te lo agradeceria mucho, y muchas gracias por lo de arriba! un enorme saludo!
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

Arreglos

Publicado por ramon (2158 intervenciones) el 28/04/2012 16:35:21
A ver me parece que nos estamos liando un poquito te comento.
El programa que te paso es tu programa pero pasado a unidad que entiendo que es lo que
indicas excepto te entiendas yo mal.
Lo de arreglos yo lo tienes puesto que el array loes, ano ser que lo que deseas es pasarlo
a punteros lo cual es otra historia y si punteros se puede pasar.
Sino es esto explícame un poco lo que deseas y intentare ayudarte para eso estamos aquí.
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

Arreglos

Publicado por ramon (2158 intervenciones) el 28/04/2012 17:42:49
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
{Mira a qui  con puntero corregido para ello, esto solo lo limita la memoria de tu ordenador}
 
program Agenda1;
 uses
    crt;
 type
    putpersona = ^tipopersona;
    tipoPersona = record
        nombre: string[80];
        email: string[160];
        edad: string[8];
        direccion:string[80];
        sig : putpersona;
    end;
 
var
    gente: tipoPersona;
    primer, sigient, actual : putpersona;
    cantidad: integer;
    opcion: integer;
    i: integer;
    textoBuscar: string;
    encontrado: boolean;
 
 
 procedure datos;
 begin
    clrscr;
    with actual^ do
    begin
       write('Entre Nombre    : ');
       readln(nombre);
       write('Entre Email     : ');
       readln(email);
       write('Entre Edad      : ');
       readln(edad);
       write('Entre Direccion : ');
       readln(direccion);
    end;
 end;
 
 procedure anadirpersona;
 begin
     if primer = nil then
     begin
         new(actual);
         datos;
         primer := actual;
         actual^.sig := nil;
     end
  else
     begin
        sigient := actual;
        new(actual);
        datos;
        sigient^.sig := actual;
        actual^.sig := nil;
     end;
 end;
 
 procedure verregistros;
 var
    ficha : putpersona;
 begin
    ficha := primer;
    while ficha <> nil do
    begin
       with ficha^ do
       writeln(nombre,'   ',email,'   ',edad,'   ',direccion);
       ficha := ficha^.sig;
       end;
       writeln;
       writeln('Pulsa [Enter]');
       readln;
   end;
 
   procedure buscarpersona(nomb : string);
   var
      busca : putpersona;
      sal : boolean;
   begin
       sal := false;
       busca := primer;
       while (busca <> nil) or (sal <> true) do
       begin
           if busca^.nombre = nomb then
           sal := true;
           busca := busca^.sig;
       end;
       if sal = true then
       begin
       with busca^ do
       begin
        writeln(nombre,'   ',email,'   ',edad,'   ',direccion);
        end;
       end
     else
        begin
          writeln('No Se Encontro Nombre');
        end;
   end;
 
{Cuerpo del programa principal}
procedure agenda;
begin
    cantidad := 0;
    repeat
        clrscr;
        WriteLn('AGENDA');
        WriteLn;
        WriteLn('1- Anadir una nueva persona');
        writeln;
        WriteLn('2- Ver los datos de  de todos');
        writeln;
        WriteLn('3- Buscar una persona');
        writeln;
        WriteLn('0- Salir');
        writeln;
        Write('*****Escoja una opcion:***** ');
        ReadLn(opcion);
        WriteLn;
        case opcion of
            1: begin { Añadir datos de una persona }
               anadirpersona;
               end;
            2: { Ver nombres de todos }
                begin
                clrscr;
                verregistros;
                end;
 
            3: { Buscar una persona }
                begin
                Write('Entre Nombre A Buscar : ');
                ReadLn(textoBuscar);
                buscarpersona(textobuscar);
                end;
 
            0: { Salir de la aplicación }
                begin
                WriteLn;
                WriteLn('Saliendo...');
                WriteLn;
                end;
             else
                begin
                WriteLn;
                WriteLn('Opción incorrecta!');
                WriteLn;
                end;
        end;  { Fin de "case" }
    until opcion = 0;
  end;
begin
    primer := nil;
    agenda;
    if primer <> nil then
    dispose(actual);
end.
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