Pascal/Turbo Pascal - AYUDA PROGRAMA

 
Vista:

AYUDA PROGRAMA

Publicado por piki (18 intervenciones) el 04/06/2012 03:31:04
hola tengo que resolver este ejercicio con los siguientes temas:
Estructuras de control - Máximos y mínimos – Tipos de datos
definidos por el usuario - Modularización. Registros. Corte de control con registros- Arreglos
y necesito ayuda porque es bastante difícil para mi :P

La empresa XYZ1, proveedora de Internet, dispone de una estructura de datos con la
información de los 500 clientes que abonan su servicio de Internet. De cada cliente se conoce
su Apellido y Nombre, Código de producto (1: 1 Mega, 2: 3 Megas, 3: 6 Megas, 4: 30 Megas,
5: 50 Megas), Servicio WiFi (si se le brinda conexión con un equipo WiFi o no) y Dirección de
correo electrónico (a lo sumo 50 caracteres).
Además, dispone de una tabla donde para cada código de producto se establece el precio del
mismo: sin WiFi y con WiFi.
Se desea realizar un programa que resuelva lo siguiente:
a) Calcular e informar el monto recaudado por la empresa para cada producto vendido sin y
con WiFi.
b) Informar el código de producto con WiFi que más clientes abonan su servicio.
c) Informar el Apellido y Nombre de cada cliente cuya dirección de correo electrónico con
concuerde con el siguiente patrón: A @ B . C, donde:
A debe ser una secuencia que puede contener letras minúsculas, mayúsculas y dígitos
alfanuméricos.
@ es el carácter “@” que seguro existe.
B debe contener a lo sumo 10 letras minúsculas.
. es el carácter “.” que seguro existe.
C deben ser 2 o 3 letras minúsculas.
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

AYUDA PROGRAMA

Publicado por ramon (2158 intervenciones) el 04/06/2012 18:03:21
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
{Con la información que me pasas lo máximo que puedo hacer es esto}
 
uses
     crt;
 
  type
 
 cliente = record
           nombre : string[50];
           apallido : string[40];
           codigo : integer;
           servicio : boolean;
           direccorreo : string[50];
        end;
  string75 = string[75];
 
 
   const
       tabla : array[1..5] of real = (
        10,20,30,40,50);
 
   var
     clie : array[1..500] of cliente;
      cont : integer;
 
 
  procedure entradadatos;
  begin
 
  end;
 
  procedure informacionproducto;
  begin
 
  end;
 
  procedure inforcodowifi;
  begin
 
  end;
 
  procedure informeclientepatron(patron : string75);
  begin
 
  end;
 
 
  begin
 
  end.
 
{Pasa me mas información precio de los servicios sino mal realizo los cálculos}
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 PROGRAMA

Publicado por piki (18 intervenciones) el 04/06/2012 19:53:52
esa es toda la información que me dan
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 PROGRAMA

Publicado por ramon (2158 intervenciones) el 05/06/2012 18:46:34
Como quieren que se calcule los servicios si no dan los precios a ojo debieran de darte las tablas
de precios si no mal.
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 PROGRAMA

Publicado por piki (18 intervenciones) el 05/06/2012 19:08:55
no nos dan los valores,, tenemos que hacer una variable para cada servicio, donde se vaya guardando los valores que ingresen. No tienen un valor predeterminado,, sino que los ingreso yo. No se si me explico bien
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 PROGRAMA

Publicado por ramon (2158 intervenciones) el 06/06/2012 18:57:06
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
160
161
162
163
164
165
166
167
168
{A ver si vale de ayuda}
 
program ejemplos;
  uses
     crt;
 
  type
 cliente = record
           nombre : string[50];
           apellido : string[40];
           codigo : integer;
           servicio : boolean;
           direccorreo : string[50];
           preciocodigo : real;
           importe : real;
        end;
 
  string75 = string[75];
 
 
   const
       tabla : array[1..5] of real = (
        10,20,30,40,50);
 
   var
     clie : cliente;
     cont : integer;
     f : file of cliente;
     patro : string75;
 
  procedure guardacliente;
  begin
     assign(f,'c:\tp\cliente.dat');
   {$I-} reset(f); {$I+}
   if ioresult <> 0 then
   begin
       rewrite(f);
       seek(f,0);
       write(f,clie);
       close(f);
   end
  else
     begin
       seek(f,filesize(f));
       write(f,clie);
       close(f);
     end;
  end;
 
 
  procedure entradadatos;
  var
     op, respu : char;
  begin
    repeat
      clrscr;
      writeln('*** Entrada Datos Cliente ***');
      writeln;
      write('Nombre                     : ');
      readln(clie.nombre);
      write('Apellido                   : ');
      readln(clie.apellido);
      write('codigo Del [1..5]          : ');
      readln(clie.codigo);
      write('servicio wifi [S/N]   ');
      repeat
           op := readkey;
      until op in['s','S','n','N'];
      if op in['s','S'] then
      clie.servicio := true
    else
       clie.servicio := false;
      writeln('     : ',clie.servicio);
      write('Correo [Rasputintin@tenia.med] : ');
      readln(clie.direccorreo);
      write('Precio Codigo              : ');
      readln(clie.preciocodigo);
      clie.importe := clie.preciocodigo;
      writeln;
      writeln('Desea Entrar Mas Datos [S/N]');
      repeat
      respu := readkey;
      until respu in['s','S','n','N'];
      if respu in['s','S'] then
      guardacliente;
      until respu in['n','N'];
      guardacliente;
  end;
 
  procedure informacionproducto;
  var
    cont : integer;
    conwifi, sinwifi : real;
  begin
     assign(f,'c:\tp\cliente.dat');
   {$I-} reset(f); {$I+}
   if ioresult <> 0 then
   begin
      clrscr;
      writeln('El Archivo No Se Encontro Pulse [Enter]');
      readln;
      exit;
   end
  else
     begin
        cont := 0;
        conwifi := 0;
        sinwifi := 0;
      repeat
        seek(f,cont);
        read(f,clie);
        if clie.servicio = true then
        conwifi := conwifi + clie.importe
     else
        sinwifi := sinwifi + clie.importe;
        cont := cont + 1;
      until cont > filesize(f) - 1;
      close(f);
      clrscr;
      writeln('**** Importe Recaudado ****');
      writeln;
      writeln('Importe Con Wifi  : ',conwifi:12:2);
      writeln('Importe Sin Wifi  : ',sinwifi:12:2);
      writeln;
      writeln('<<<< Pulse Enter >>>>');
      readln;
     end;
  end;
 
  procedure informeclientepatron(patron : string75);
  var
    contt : integer;
  begin
    assign(f,'c:\tp\cliente.dat');
   {$I-} reset(f); {$I+}
   if ioresult <> 0 then
   begin
      clrscr;
      writeln('El Archivo No Se Encontro Pulse [Enter]');
      readln;
      exit;
   end
  else
     begin
        contt := 0;
      repeat
      seek(f,contt);
      read(f,clie);
      if clie.direccorreo = patron then
      begin
         writeln('Nombre        : ',clie.nombre);
         writeln('Apellido      : ',clie.apellido);
         writeln('------------------------------');
      end;
      contt := contt + 1;
      until contt > filesize(f) - 1;
      close(f);
     end;
  end;
 
 
  begin
      clrscr;
      entradadatos;
      informacionproducto;
      readln(patro);
      informeclientepatron(patro);
  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

AYUDA PROGRAMA

Publicado por piki (18 intervenciones) el 06/06/2012 19:37:36
muchas gracias ramon,, un genio
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 PROGRAMA

Publicado por piki (18 intervenciones) el 08/06/2012 17:08:10
hola ramon,, lo único que no se que utilización tiene es {$I-} reset(f); {$I+},, me lo podrías explicar?
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 PROGRAMA

Publicado por ramon (2158 intervenciones) el 08/06/2012 18:35:30
Si mira {$I-} reset(f) {$I+}. Es para comprobación de errores en el archivo si el resultado no
es 0 indica que el archivo no existe con lo cual lo creo pero si loe a sea 0 el archivo existe
con lo cual lo agrego.
Si no tuviera {$I-} {$I+} no podría comprobar el si existe o no el archivo.
Mira parece que otra persona esta con lo mismo pero trabaja con arreglos lee mandado esto
por si te sirve mejor.

program ejemplos;
uses
crt;

type
cliente = record
nombre : string[50];
apellido : string[40];
codigo : integer;
servicio : boolean;
direccorreo : string[50];
preciocodigo : real;
importe : real;
end;

string75 = string[75];


const
tabla : array[1..5] of real = (
10,20,30,40,50);

var
clie : array[1..100] of cliente;
cont : integer;
patro : string75;


procedure entradadatos;
var
op, respu : char;
begin
repeat
clrscr;
writeln('*** Entrada Datos Cliente ***');
writeln;
write('Nombre : ');
readln(clie[cont].nombre);
write('Apellido : ');
readln(clie[cont].apellido);
write('codigo Del [1..5] : ');
readln(clie[cont].codigo);
write('servicio wifi [S/N] ');
repeat
op := readkey;
until op in['s','S','n','N'];
if op in['s','S'] then
clie[cont].servicio := true
else
clie[cont].servicio := false;
writeln(' : ',clie[cont].servicio);
write('Correo [[email protected]] : ');
readln(clie[cont].direccorreo);
write('Precio Codigo : ');
readln(clie[cont].preciocodigo);
clie[cont].importe := clie[cont].preciocodigo;
writeln;
writeln('Desea Entrar Mas Datos [S/N]');
repeat
respu := readkey;
until respu in['s','S','n','N'];
if respu in['s','S'] then
begin
cont := cont + 1;
if cont > 100 then
respu := 'n';
end;
until respu in['n','N'];
end;

procedure informacionproducto;
var
tt : integer;
conwifi, sinwifi : real;
begin
tt := 1;
conwifi := 0;
sinwifi := 0;
repeat
if clie[tt].servicio = true then
conwifi := conwifi + clie[tt].importe
else
sinwifi := sinwifi + clie[tt].importe;
tt := tt + 1;
until tt > cont;
clrscr;
writeln('**** Importe Recaudado ****');
writeln;
writeln('Importe Con Wifi : ',conwifi:12:2);
writeln('Importe Sin Wifi : ',sinwifi:12:2);
writeln;
writeln('<<<< Pulse Enter >>>>');
readln;
end;

procedure informeclientepatron(patron : string75);
var
contt : integer;
begin
clrscr;
contt := 1;
repeat
if clie[contt].direccorreo = patron then
begin
writeln('Nombre : ',clie[contt].nombre);
writeln('Apellido : ',clie[contt].apellido);
writeln('------------------------------');
end;
contt := contt + 1;
until contt > cont;
writeln;
writeln('Pulse [Enter]');
readln;
end;

procedure menu;
var
tec : char;
termi : boolean;
begin
termi := false;
repeat
clrscr;
writeln('***** Menu Jeneral *****');
writeln;
writeln(' 1 = Entrada Datos');
writeln(' 2 = Informacion');
writeln(' 3 = Informe Cliente');
writeln(' 4 = Salir');
writeln;
writeln('<<<< Elija Opcion 1...4 >>>>');
repeat
tec := readkey;
until tec in[#49..#52];
case tec of
#49 : begin clrscr; entradadatos; end;
#50 : begin clrscr; informacionproducto; end;
#51 : begin
clrscr;
writeln('Entre Direccion de Correo Electronico');
writeln;
write('En Correo Es : ');
readln(patro);
informeclientepatron(patro);
end;
#52 : termi := true;
end;
until termi = true;
end;


begin
clrscr;
cont := 1;
menu;
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

AYUDA PROGRAMA

Publicado por piki (18 intervenciones) el 08/06/2012 19:01:16
aaa,,, sisi ahora lo entiendo mejor,, gracias
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