Pascal/Turbo Pascal - Error runtime 100, necesito ayuda inmediata por favor

 
Vista:
sin imagen de perfil

Error runtime 100, necesito ayuda inmediata por favor

Publicado por Adriel (1 intervención) el 01/08/2021 21:40:02
Una vez que lo ejecuto me aparece ese error y no se como se soluciona, alguien q me ayude por favor como solucionar eso. El compliador que uso es FreePascal.
La secuencia de caracteres con la q debo trabajar es esta : AOplanich, Adriana 0202|CNils Hansen 8991|PViktar Kopach 6891|Plucas, velez 7891
Y tampoco no me muestra por pantalla los contadores

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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
PROGRAM homenaje;
 
 
uses CRT;
 
const
	num= ['0','1','2','3','4','5','6','7','8','9'];
 
var
	sal1,sal2,sec: file of char;
	pais_1,pais_2,pais_3,v: char;
	cont_Argentina,cont_Chile,cont_Peru,anio,anio_corregido,r,i: Integer;
	Division,entero,Res: Integer;
	porcentaje, esc_err, tot_esc: Integer;
 
function CaracterEntero(v: Char): Integer;
begin
	case (v) of
		'0': CaracterEntero:= 0;
		'1': CaracterEntero:= 1;
		'2': CaracterEntero:= 2;
		'3': CaracterEntero:= 3;
		'4': CaracterEntero:= 4;
		'5': CaracterEntero:= 5;
		'6': CaracterEntero:= 6;
		'7': CaracterEntero:= 7;
		'8': CaracterEntero:= 8;
  		'9': CaracterEntero:= 9;
	end;
end;
function EnteroCaracter(ent: Integer): Char;
begin
	case (ent) of
		0: EnteroCaracter:= '0';
		1: EnteroCaracter:= '1';
		2: EnteroCaracter:= '2';
		3: EnteroCaracter:= '3';
		4: EnteroCaracter:= '4';
 		5: EnteroCaracter:= '5';
		6: EnteroCaracter:= '6';
		7: EnteroCaracter:= '7';
		8: EnteroCaracter:= '8';
 		9: EnteroCaracter:= '9';
	end;
end;
 
BEGIN
  	Assign(sec, 'C:\Users\Usuario\Desktop\Laboratorio\secuencia.txt');
  	{$I-}
 	Reset(sec);
 	{$i+}
 	if IOResult <> 0 then
 	  halt(2);
 
 	Assign(sal1, 'C:\Users\Usuario\Desktop\Laboratorio\salida1.txt');
 	rewrite(sal1);
 	Assign(sal2, 'C:\Users\Usuario\Desktop\Laboratorio\salida2.txt');
	rewrite(sal2);
 
	esc_err:=0;
	tot_esc:=0;
	writeln('Ingrese un pais que desea,(A- Argentina, C-Chile, P-Peru)');
	readln(pais_1);
	writeln('Ingrese otro pais mas');
	readln(pais_2);
	cont_Argentina := 0;
	cont_Peru := 0;
	cont_Chile := 0;
	while not EOF(sec) do
	begin
		read(sec,v);
		tot_esc:= tot_esc + 1;
		while v <> '|' do
		begin
			if v = pais_1 then
			begin
				while not (v in num) do
				begin
					while v <> ' ' do
					begin
						write(sal1,v);
						read(sec, v);
					end;
					while v = ' ' do
					begin
						write(sal1,v);
						read(sec, v);
					end;
				end;
				//PARADO EN EL PRIMER CARACTER NUMERICO DEL AÑO
				// CONVIERTO LOS CARACTERES NUMERICOS A ENTERO PARA OBTENER EL AÑO
				anio:= 0;
				for i:= 1 to 4 do
				begin
					anio:= (anio*10) + CaracterEntero(v);
					read(sec,v);
				end;
				esc_err:= esc_err + 1;
				//INVIERTO EL AÑO PARA CORREGIRLO
				anio_corregido:=0;
				for i:= 1 to 4 do
				begin
					r:= anio MOD 10;
					anio:= anio DIV 10;
					anio_corregido:= (anio_corregido * 10) + r;
				end;
				if anio_corregido < 2000 then
				begin
					case (pais_1) of
						'A': cont_Argentina:= cont_Argentina + 1;
						'C': cont_Chile:= cont_Chile + 1;
						'P': cont_Peru:= cont_Peru + 1;
					end;
				end;
				// CONVIERTO EL anio_corregido EN CARACTER PARA GUARDAR EN LA SALIDA DEL PAIS 1
				Division:= 1000;
			   	for i:=1 to 4 do
			   	begin
        			Res:= anio_corregido DIV Division;
        			entero:= Res Mod 10;
         			write(Sal1,EnteroCaracter(entero));
        			Division:= Division DIV 10;
     			end;
     			write(sal1,'|');
     		end
			else
			begin
				if v = pais_2 then
				begin
					while not (v in num) do
					begin
						while v <> ' ' do
						begin
							write(sal2,v);
							read(sec,v);
						end;
							while v = ' ' do
						begin
							write(sal2,v);
							read(sec,v);
						end;
					end;
 
					//PARADO EN EL PRIMER CARACTER NUMERICO DEL AÑO
					anio:=0;
					for i:= 1 to 4 do
					begin
						anio:= (anio*10) + CaracterEntero(v);
						read(sec, v);
					end;
					esc_err:= esc_err + 1;
					//INVIERTO EL AÑO PARA CORREGIRLO
					anio_corregido:= 0;
					for i:= 1 to 4 do
					begin
						r:= anio MOD 10;
						anio:= anio DIV 10;
						anio_corregido:= (anio_corregido * 10) + r;
					end;
					if anio_corregido < 2000 then
					begin
						case (pais_2) of
						'A': cont_Argentina:= cont_Argentina + 1;
						'C': cont_Chile:= cont_Chile + 1;
						'P': cont_Peru:= cont_Peru + 1;
					end;
					end;
					// CONVIERTO EL anio_corregido EN CARACTER PARA GUARDAR EN LA SALIDA DEL PAIS 2
					Division:= 1000;
			       	for i:=1 to 4 do
			       	begin
       					Res:= anio_corregido DIV Division;
       					entero:= Res Mod 10;
       					write(Sal2,EnteroCaracter(entero));
      					Division:= Division DiV 10;
   					end;
   					write(sal2, '|');
   				end
				else
				begin
					pais_3:=v;
					while not (v in num) do
					begin
						read(sec,v);
					end;
					//parado en el primer caracter numerico del año
					anio:=0;
					for i:= 1 to 4 do
					begin
						anio:= (anio * 10) + CaracterEntero(v);
						read(sec,v);
					end;
					esc_err:= esc_err + 1;
					//INVIERTO EL AÑO PARA CORREGIRLO
					anio_corregido:=0;
					for i:= 1 to 4 do
					begin
						r:= anio MOD 10;
						anio:= anio DIV 10;
						anio_corregido:= (anio_corregido * 10) + r;
					end;
					// ITEM b.
					if anio_corregido < 2000 then
					begin
						case (pais_3) of
							'A': cont_Argentina:= cont_Argentina + 1;
							'C': cont_Chile:= cont_Chile + 1;
							'P': cont_Peru:= cont_Peru + 1;
						end;
					end;
				end;
			end;
		end;
		 read(sec, v);
	end;
	porcentaje := ((esc_err*100) DIV tot_esc);
	write('EL porcentaje de escultores con informacion errónea sobre el total de escultores es de:',porcentaje);
	write('La cantidad de escultores en Argentina que comenzaron antes del 2000 es de:',cont_Argentina);
	write('La cantidad de escultores en Chile que comenzaron antes del 2000 es de:',cont_Chile);
	write('La cantidad de escultores en Perú que comenzaron antes del 2000 es de:',cont_Peru);
	readkey();
	close(sec);
	close(sal1);
	close(sal2);
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

Error runtime 100, necesito ayuda inmediata por favor

Publicado por ramon (2158 intervenciones) el 02/08/2021 17:40:44
Es tu programa corregidos los fallos.

PROGRAM homenaje;


uses CRT;

const
num= ['0','1','2','3','4','5','6','7','8','9'];

var
sal1,sal2,sec: file of char;
ch, pais_1,pais_2,pais_3,v: char;
cont_Argentina,cont_Chile,cont_Peru,anio,anio_corregido,r,i: Integer;
Division,entero,Res: Integer;
porcentaje, esc_err, tot_esc: Integer;

function CaracterEntero(v: Char): Integer;
begin
case (v) of
'0': CaracterEntero:= 0;
'1': CaracterEntero:= 1;
'2': CaracterEntero:= 2;
'3': CaracterEntero:= 3;
'4': CaracterEntero:= 4;
'5': CaracterEntero:= 5;
'6': CaracterEntero:= 6;
'7': CaracterEntero:= 7;
'8': CaracterEntero:= 8;
'9': CaracterEntero:= 9;
end;
end;

function EnteroCaracter(ent: Integer): Char;
begin
case (ent) of
0: EnteroCaracter:= '0';
1: EnteroCaracter:= '1';
2: EnteroCaracter:= '2';
3: EnteroCaracter:= '3';
4: EnteroCaracter:= '4';
5: EnteroCaracter:= '5';
6: EnteroCaracter:= '6';
7: EnteroCaracter:= '7';
8: EnteroCaracter:= '8';
9: EnteroCaracter:= '9';
end;
end;


BEGIN
clrscr;
Assign(sec, 'C:\Users\Usuario\Desktop\Laboratorio\secuencia.txt');
{$I-}
Reset(sec);
{$i+}
if IOResult <> 0 then
begin
writeln('Falta El Archivo [ secuencia.txt ] Pulse Una Tecla');
readkey;
halt(2);
end;
Assign(sal1, 'C:\Users\Usuario\Desktop\Laboratorio\salida1.txt');
rewrite(sal1);
Assign(sal2, 'C:\Users\Usuario\Desktop\Laboratorio\salida2.txt');
rewrite(sal2);

esc_err:=0;
tot_esc:=0;
writeln('Ingrese un pais que desea,(A- Argentina, C-Chile, P-Peru)');
readln(pais_1);
writeln('Ingrese otro pais mas');
readln(pais_2);
cont_Argentina := 0;
cont_Peru := 0;
cont_Chile := 0;
while not EOF(sec) do
begin
read(sec,v);
tot_esc:= tot_esc + 1;
while v <> '|' do
begin
if v = pais_1 then
begin
while not (v in num) do
begin
while v <> ' ' do
begin
write(sal1,v);
read(sec, v);
end;
while v = ' ' do
begin
write(sal1,v);
read(sec, v);
end;
end;
{//PARADO EN EL PRIMER CARACTER NUMERICO DEL AÑO }
{// CONVIERTO LOS CARACTERES NUMERICOS A ENTERO PARA OBTENER EL AÑO}
anio:= 0;
for i:= 1 to 4 do
begin
anio:= (anio*10) + CaracterEntero(v);
read(sec,v);
end;
esc_err:= esc_err + 1;
{//INVIERTO EL AÑO PARA CORREGIRLO}
anio_corregido:=0;
for i:= 1 to 4 do
begin
r:= anio MOD 10;
anio:= anio DIV 10;
anio_corregido:= (anio_corregido * 10) + r;
end;
if anio_corregido < 2000 then
begin
case (pais_1) of
'A': cont_Argentina:= cont_Argentina + 1;
'C': cont_Chile:= cont_Chile + 1;
'P': cont_Peru:= cont_Peru + 1;
end;
end;
{// CONVIERTO EL anio_corregido EN CARACTER PARA GUARDAR EN LA SALIDA DEL PAIS 1}
Division:= 1000;
for i:=1 to 4 do
begin
Res:= anio_corregido DIV Division;
entero := Res Mod 10;
ch := EnteroCaracter(entero);
write(Sal1,ch);
Division:= Division DIV 10;
end;
ch := '|';
write(sal1,ch);
end
else
begin
if v = pais_2 then
begin
while not (v in num) do
begin
while v <> ' ' do
begin
write(sal2,v);
read(sec,v);
end;
while v = ' ' do
begin
write(sal2,v);
read(sec,v);
end;
end;

{//PARADO EN EL PRIMER CARACTER NUMERICO DEL AÑO}
anio:=0;
for i:= 1 to 4 do
begin
anio:= (anio*10) + CaracterEntero(v);
read(sec, v);
end;
esc_err:= esc_err + 1;
{//INVIERTO EL AÑO PARA CORREGIRLO}
anio_corregido:= 0;
for i:= 1 to 4 do
begin
r:= anio MOD 10;
anio:= anio DIV 10;
anio_corregido:= (anio_corregido * 10) + r;
end;
if anio_corregido < 2000 then
begin
case (pais_2) of
'A': cont_Argentina:= cont_Argentina + 1;
'C': cont_Chile:= cont_Chile + 1;
'P': cont_Peru:= cont_Peru + 1;
end;
end;
{// CONVIERTO EL anio_corregido EN CARACTER PARA GUARDAR EN LA SALIDA DEL PAIS 2}
Division:= 1000;
for i:=1 to 4 do
begin
Res:= anio_corregido DIV Division;
entero:= Res Mod 10;
ch := EnteroCaracter(entero);
write(Sal2,ch);
Division:= Division DiV 10;
end;
ch := '|';
write(sal2,ch);
end
else
begin
pais_3:=v;
while not (v in num) do
begin
read(sec,v);
end;
{//parado en el primer caracter numerico del año}
anio:=0;
for i:= 1 to 4 do
begin
anio:= (anio * 10) + CaracterEntero(v);
read(sec,v);
end;
esc_err:= esc_err + 1;
{//INVIERTO EL AÑO PARA CORREGIRLO}
anio_corregido:=0;
for i:= 1 to 4 do
begin
r:= anio MOD 10;
anio:= anio DIV 10;
anio_corregido:= (anio_corregido * 10) + r;
end;
{// ITEM b.}
if anio_corregido < 2000 then
begin
case (pais_3) of
'A': cont_Argentina:= cont_Argentina + 1;
'C': cont_Chile:= cont_Chile + 1;
'P': cont_Peru:= cont_Peru + 1;
end;
end;
end;
end;
end;
read(sec, v);
end;
porcentaje := ((esc_err*100) DIV tot_esc);
write('EL porcentaje de escultores con informacion errónea sobre el total de escultores es de:',porcentaje);
write('La cantidad de escultores en Argentina que comenzaron antes del 2000 es de:',cont_Argentina);
write('La cantidad de escultores en Chile que comenzaron antes del 2000 es de:',cont_Chile);
write('La cantidad de escultores en Perú que comenzaron antes del 2000 es de:',cont_Peru);
readkey;
close(sec);
close(sal1);
close(sal2);
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