Pascal/Turbo Pascal - URGENTE! POR FAVOR

 
Vista:

URGENTE! POR FAVOR

Publicado por ignacio (3 intervenciones) el 07/06/2012 20:59:18
HOLA CHICOS, TENGO UN GRAN PROBLEMA.

MAÑANA TENGO QUE ENTREGAR UN TRABAJO SI O SI Y EN MI GRUPO ME QUEDE SOLO (ERAMOS 5) . ESTE ES EL ENUNCIADO ES MUY DIFICIL :

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.
Ejemplo: [email protected] {cumple con el patrón.}

OJALA ME PUEDAN AYUDAR, DSDE YA MUCHAS GRACIAS
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

URGENTE! POR FAVOR

Publicado por ramon (2158 intervenciones) el 07/06/2012 21:47:53
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
{Algo así vale}
 
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

URGENTE! POR FAVOR

Publicado por ignacio (3 intervenciones) el 07/06/2012 21:51:27
NO , NO USAMOS ESAS COSAS, ES HASTA ARREGLOS , YO NO ME ESPECIFIQUE BIEN Y NO DIJE HASTA LO QUE SE PODIA USAR , PERDON PERO MUCHAS GRACIAS IGUAL POR QUERER AYUDARME
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

URGENTE! POR FAVOR

Publicado por ramon (2158 intervenciones) el 07/06/2012 22:33:26
Disculpa pero si no usas ficheros pasa lo a arreglos la parte de fichero el fichero es almacén
como un arreglo.
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

URGENTE! POR FAVOR

Publicado por ignacio (3 intervenciones) el 07/06/2012 22:47:10
claro el tema es que nunca trabajamos con ficheros en la facultad y no tengo idea como se usan ni nada
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

URGENTE! POR FAVOR

Publicado por ramon (2158 intervenciones) el 08/06/2012 18:25:19
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
{A qui lo tienes pasado a arreglos pero como veras esta limitado por la memoria a 100 arreglas
para mas tendrías que usar o archivos o punteros}
 
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 [Rasputintin@tenia.med] : ');
      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