Pascal/Turbo Pascal - Algo no me deja continuar en este programa

 
Vista:

Algo no me deja continuar en este programa

Publicado por Andrea (2 intervenciones) el 25/08/2013 22:26:33
El programa esta basado en este problema:Realice un diagrama de flujo que se encargue de calcular la comisión que se le asigna a los vendedores de una tienda de equipos de computación. El diagrama procesa N ventas y para cada venta debe leer los datos: CODIGO VENDEDOR,MONTO DE VENTA,PORCENTAJE DE COMISION. El diagrama tiene que calcular el monto de la comisión. El diagrama tiene que reportar para cada cálculo, los datos leídos y el monto de la comisión. Una vez terminado el cálculo de comisiones, tiene que reportarse: el total de comisiones de cada vendedor, el promedio de ventas de cada vendedor y el promedio de ventas de todos los vendedores (Asuma que son 5 vendedores en la tienda)

Esto es lo que llevo,pero cuando le doy desea continuar y marco que no,simplemente se sale asi que tampoco he podido ver si mis razonamientos para sacar la parte en negrita estan bien y me dan el resultado esperado

esto es lo que tengo

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
Program comision;
 
Usescrt;
 
Var
   cod,sigue:char;
   mv,pc:interger;
   c,cv,cc,mc:real;
   cv1,cv2,cv3,cv4,cv5,tc,pv:real;
 
Begin
     Repeat
     clrscr;
 
     writeln('Digite el codigo de vendedor');
     writeln('[1][2][3][4][5]');
     cod:=readkey;
     writeln('Escriba el monto de la venta');
     readln(mv);
     writeln('escriba el porcentaje de comision');
     readln(c);
 
     c:=(0.01);
     mc:=(mv*c);
 
 
clrscr;
     if(cod='1')Then
 
      begin
 
      cv:=cv+1;
      tc:=tc+mc;
      pv:=tc/cv;
 
      end
      else
 
     if(cod='2')Then
 
      begin
 
      cv:=cv+1;
      tc:=tc+mc;
      pv:=tc/cv;
 
      end
      else
 
 
      if(cod='3')Then
 
      begin
 
      cv:=cv+1;
      tc:=tc+mc;
      pv:=tc/cv;
 
      end
      else
 
      if(cod='4')Then
 
      begin
 
      cv:=cv+1;
      tc:=tc+mc;
      pv:=tc/cv;
 
      end
      else
 
      if(cod='5')Then
 
      begin
 
      cv:=cv+1;
      tc:=tc+mc;
      pv:=tc/cv;
 
      end;
 
clrscr;
 
writeln('::::RESULTADOS::::');
writeln('el codigo es:',cod);
writeln('el monto de la venta es:',mv);
writeln('elporcentaje de la comision es:',c:7:2);
writeln('el monto de la comision es:',mc:7:2);
 
writeln('desea continuar(S/N)');
sigue:=readkey;
until(sigue='N')or(sigue='n');
 
clrscr;
 
Writeln('<<<<<<RESULTADO FINAL>>>>>>');
 
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

Algo no me deja continuar en este programa

Publicado por Christian (8 intervenciones) el 26/08/2013 06:30:23
Estimada Andrea, me tome la libertad de hacer unas cuantas modificaciones a tu programa para obtener los resultados que solicitas, espero te sirva como sujerencia, en caso de que quieras mejorarlo estare feliz de ayudarte.

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
Program comision;
 
Uses crt;
 
Var
   cod,sigue:char;
   mv:integer;  {mv=monto venta}
   cnt, cn1, cn2, cn3, cn4, cn5:real; {contadores cnt=todo, cn1, cn2, ...=contadores de vendedores}
   mc,  cv1, cv2, cv3, cv4, cv5:real; {comisiones}
   vnt, vn1, vn2, vn3, vn4, vn5:real; {ventas}
   c, pc:real;
 
Begin
     cnt:=0; {inicializamos el contador de ventas en 0}
     vnt:=0; {inicializamos la variable de ventas en 0}
     Repeat
           clrscr;
           writeln('Digite el codigo de vendedor');
           writeln('[1][2][3][4][5]');
           write('--->');
           {Se realiza un bucle de repetitencia
           hasta que el usuario presione el valor correspondiente}
           repeat
                 cod:=readkey;
           until (cod>='1') AND (cod<='5');
           {Se procede a pedir los datos y asignarlos a las variables}
           writeln;
           write('Escriba el monto de la venta: '); readln(mv);
           write('Escriba el porcentaje de comision: '); readln(pc);
           {Se realiza el cálculo de la comisión}
           c:=pc/100;
           mc:=(mv*c);
 
           cnt:=cnt+1;  {incrementamos el contador de ventas}
           vnt:=vnt+mv; {sumamos las ventas en una variable de acumulación}
 
           clrscr;
           if(cod='1')Then
           begin
                cn1:=cn1+1;
                cv1:=cv1+mc;
                vn1:=vn1+mv;
           end;
           if(cod='2')Then
           begin
                cn2:=cn2+1;
                cv2:=cv2+mc;
                vn2:=vn2+mv;
           end;
           if(cod='3')Then
           begin
                cn3:=cn3+1;
                cv3:=cv3+mc;
                vn3:=vn3+mv;
           end;
           if(cod='4')Then
           begin
                cn4:=cn4+1;
                cv4:=cv4+mc;
                vn4:=vn4+mv;
           end;
           if(cod='5')Then
           begin
                cn5:=cn5+1;
                cv5:=cv5+mc;
                vn5:=vn5+mv;
           end;
 
           clrscr;
           writeln('::::RESULTADOS::::');
           writeln('El codigo es: ',cod);
           writeln('El monto de la venta es: ',mv);
           writeln('El porcentaje de la comision es: ',c:7:2);
           writeln('El monto de la comision es: ',mc:7:2);
           Writeln;
           Write('Desea continuar(S/N)? ');
           sigue:=readkey;
     until(sigue='N')or(sigue='n');
 
     clrscr;
 
     Writeln('<<<<<<RESULTADO FINAL>>>>>>');
     {solo imprimiremos los vendedores que tuvieron movimiento de ventas}
     if cn1>0 then Writeln('Vendedor [1] Comisiones: ', cv1:7:2,' Promedio ventas: ',vn1/cn1:7:2);
     if cn2>0 then Writeln('Vendedor [2] Comisiones: ', cv2:7:2,' Promedio ventas: ',vn2/cn2:7:2);
     if cn3>0 then Writeln('Vendedor [3] Comisiones: ', cv3:7:2,' Promedio ventas: ',vn3/cn3:7:2);
     if cn4>0 then Writeln('Vendedor [4] Comisiones: ', cv4:7:2,' Promedio ventas: ',vn4/cn4:7:2);
     if cn5>0 then Writeln('Vendedor [5] Comisiones: ', cv5:7:2,' Promedio ventas: ',vn5/cn5:7:2);
     Writeln;
     Writeln('Promedio todas las ventas: ', vnt/cnt:7:2);
     readkey;
 
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

Algo no me deja continuar en este programa

Publicado por Santiago (3 intervenciones) el 27/08/2013 01:09:53
Ahora el Prog Ppal:

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
Program Empleados;
 
Uses Crt, dos, sysutils, EmpleadosTPU;
 
Procedure MenuModifEmpleado(var A: tEmpleados; L: String);
var
	o: Byte; Em: tEmp; aux: String; Re: regEmp; nro, i, j: Integer;
    res: Boolean;
begin
Repeat
	ClrScr;
	Writeln('Empleados'); writeln;
	writeln('0. Volver al menu Anterior');
	writeln('1. Alta Conyuge');
	writeln('2. Alta Hijo/s');
	writeln('3. Baja Conyuge');
	writeln('4. Baja Hijo/s');
	writeln;
	write('Ingrese el nro. de opcion: '); read(o);
	case o of
	1: begin
		writeln('Ingrese el nombre del Conyuge: ');
		with Re do
			readln(Conyuge);
		GenRegistro(Em, Re);
		Modificar(A, L, Em, res);
	end;
	2: begin
		j:= 0; nro:= 0; aux:='';
		writeln('Ingrese el nro de Hijos a cargar: ');
		read(nro);
		with Re do begin
			j:= h + nro;
			for i:= nro to j do begin
				writeln('Ingrese Fecha de Nacimiento (DDMMAAAA): '); read(aux);
				StrToDate(aux, hijos[i].FNac);
				writeln('Ingrese Nombre: '); read(hijos[i].Nomb);
			end;
		end;
		GenRegistro(Em, Re);
		Modificar(A, L, Em, res);
	end;
	3: begin
		with Re do
			Conyuge:='';
		GenRegistro(Em, Re);
		Modificar(A, L, Em, res);
	end;
	4: begin
         aux:='';
		with Re do begin
			for i:= 1 to h do begin
				writeln('Hijo ',i);
                  DateToStr(hijos[i].FNac, aux);
				writeln(aux);
				writeln(hijos[i].Nomb);
			end;
			writeln('Ingrese el nro de Hijo a eliminar: ');
			read(nro);
			for i:= nro to h do begin
				CargaFecha(hijos[i].FNac,hijos[i+1].FNac);
				hijos[i].Nomb := hijos[i+1].Nomb;
			end;
			Dec(h);
		end;
		GenRegistro(Em, Re);
		Modificar(A, L, Em, res);
	end; end;
	Until o = 0
end;
 
Procedure MenuModificaciones(var A: tEmpleados);
var
	o: Byte; Leg: string;
begin
Repeat
	ClrScr;
	writeln('Empleados');
	writeln;
	writeln('0. Volver al Menu Anterior');
	writeln('1. Agregar Empleado');
	writeln('2. Agregar o Eliminar Conyuge o Hijo');
	writeln('3. Eliminar hijos mayores de 21 años');
	writeln;
	write('Ingrese el nro. de opcion: ');
	read(o);
	case o of
		1: AltaEmp(A);
		2: begin
           		writeln('Ingrese número de legajo del empleado: ');
			read(Leg);
			MenuModifEmpleado(A, Leg);
		end;
		3: EliminarHijosMayores(A);
	end;
	Until o = 0
end;
 
Procedure MenuProcesar(var A: tEmpleados);
var
	o: Byte;
begin
Repeat
	ClrScr;
	writeln('Empleados');
	writeln;
	writeln('0. Volver al Menu Principal');
	writeln('1. Listar Empleados en un Archivo de Texto');
	writeln('2. Emitir Reporte');
	writeln('3. Modificar Archivo');
	writeln;
	write('Ingrese el nro. de opcion: ');
	read(o);
	case o of
		1: ListarEnTxt(A);
		2: Reporte(A);
		3: MenuModificaciones(A);
	end;
	Until o = 0
end;
 
var
	Op: Byte;
	{nomArch: String;
	nomBase: String;  }
	A: tEmpleados;
begin
Repeat
	writeln('Empleados');
	writeln;
	writeln('0. Terminar el Programa');
	writeln('1. Crear Archivo');
	writeln('2. Abrir un Archivo');
	writeln;
	write('Ingrese el nro. de opcion: ');
	read(Op);
	If (Op = 1) or (Op = 1) then begin
		writeln;
		{writeln('Ingrese el nombre del Archivo (sin extension): ');
		readln(nomArch);}
                   with A do begin
		Assign(arch, 'base.dd');
		Assign(espLibre, 'base.el');
                      end;
	end;
	case op of
		1: begin
			Crear(A);
			{writeln('Ingrese el nombre del Archivo de Texto: ');
			readln(nomBase);     }
			CargarDesde(A{, nomBase});
			Cerrar(A);
		end;
		2: begin
			Abrir(A);
			MenuProcesar(A);
			Cerrar(A);
		end;
	end;
	ClrScr
	Until Op = 0
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