Pascal/Turbo Pascal - Ayuda para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

   
Vista:

Ayuda para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (1 intervención) el 18/04/2017 12:50:23
Hola a todos y gracias de antemano por vuestra atención, soy nuevo en esto de programar estoy haciendo un curso a distancia y me proponen estos ejercicios,que por mas que he repasado los temas que me han mandado no logro encontrar la solución, vamos que no se ni por donde empezar,os estaría muy agradecido si me ayudarais ya que tengo que entregarlo este fin de semana


Problema 1
Puede encontrar copias de la tabla ASCII, que le indicará la codificación correspondiente a cada carácter en:
http://www.asciitable.com/
Partiendo de esto:
Codifique un procedimiento de nombre AnalizaCaracteres que recibe como parámetro una cadena de caracteres y devuelve como resultado 4 con: el número de caracteres, el número de letras, el número de números y el número de caracteres de otro tipo.

Deberá incluir la función en un programa (ipexam1.pas) que solicita al usuario una cadena de texto y muestra por pantalla:
El número de caracteres es A
El número de letras es B
El número de números es C
El número de caracteres de otro tipo es D
(Donde A, B, C y D son los valores que se obtuvieron al ejecutar AnalizaCaracteres

Para facilitar el trabajo puede considerar los espacios entre palabras como caracteres y fíjese que las letras (y números) están ordenados en el sistema de codificación.


Problema 2
Reutilizando la función anterior escriba un programa que pregunte al usuario el nombre de un fichero de texto origen y un fichero de texto destino. El programa abrirá el primer fichero, lo leerá línea a línea y para cada línea escribirá el conteo de tipo de letra de la misma en la línea correspondiente del fichero destino el mensaje:
“La línea N contiene C caracteres con X letras, Y números, y Z caracteres de otro tipo”
Donde N es el número de línea, c el número de caracteres de esa línea y x,y,z el número de letras, números y otro tipo de caracteres para esa línea.
En la última línea del fichero aparecerá el número total de letras, números y caracteres de otro tipo.
Si el fichero de origen es este:

¿1 perro llamado Roger?
Tengo 2 manzanas
¡¡Tienes 10 casas!!

El fichero de salida será
La línea 1 contiene 23 caracteres con 17 letras, 1 números y 5 caracteres de otro tipo
La línea 2 contiene 16 caracteres con 13 letras, 1 números y 2 caracteres de otro tipo
La línea 3 contiene 19 caracteres con 11 letras, 2 números y 6 caracteres de otro tipo
En la total hay 41 letras, 4 números y 13 caracteres de otro tipo
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por Dani (2 intervenciones) el 18/04/2017 15:14:47
Puedes recorrer las cadenas con un for y vas revisando cada caracter, y con un case vas almacenando en distintos contadores el tipo de caracter. Si miras en los post, hay uno muy similar en el cual querian contar palabras con más de 3 caracteres dentro de una frase, y puse un fragmento de código explicandolo...hechale un vistazo, pues es practicamente lo mismo.

Un 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

Ayuda para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (8 intervenciones) el 19/04/2017 12:42:33
Muchas gracias por contestar, echare un vistazo y si no lo entiendo os volveré a pedir ayuda, muchas gracias otra vez.
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por David (183 intervenciones) el 19/04/2017 19:44:25
Te propongo la siguiente solución para el primer apartado. Espero que a partir de ahí te ayude a resolver el resto

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
ses CRT;
 
 
Var
 
  CADENA : String;
 OT, NUMEROS, TOT,VOCALES : INTEgeR;
 
Procedure AnalizaCaracteres(var frase: string; VAR VOC:INTEGER; var NUM:INTEGER; VAR OTROS : INTEGER; VAR TOTAL: INTEGER);
 
VAR
  I : INTEGER;
 
begin
  otros :=0;
  FOR I:=1 TO LENgTH(FRASE) DO
    case frase[i] of
       'A'..'Z','a'..'z','¤','¥',' ','µ','‚','','¡','Ö','¢','à','£','é','','š':
           inc(VOC);
       '0'..'9': INC(NUM)
    ELSE
      INC(OTROS);
   end;
   TOTAL := LENGTH(CADENA);
end;
 
Begin
  CLRSCR;
  Writeln('Introduzca una frase: ');
  readln(CADENA);
  AnalizaCaracteres(CADENA, VOCALES, NUMEROS,OT,TOT);
  writeln('LETRAS: ',VOCALES);
  WRITELN('NéMEROS: ',numEROS);
  writeln('OTROS:', OT);
  Writeln('lONGITUD CADENA: ',TOT);
  readln;
 
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (8 intervenciones) el 20/04/2017 11:07:47
Muchas gracias es exactamente lo que buscaba, podrias explicarme tambien el 2ejercicio porque no lo saco,
tengo un programa que me abre el fichero y lo copia en otro destino pero no se donde poner el procedimiento y hacer que analice línea a línea el programa que abre el archivo y luego lo copia es este

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
Program Archivo;
 
Uses Crt;
 
const
 
	nombreFichero = 'C:\prueba.txt';
 
var
 
	nombreFicheroEntrada, nombreFicheroDestino, texto : String;
 
 
PROCEDURE procesar_archivos(nombreFicheroEntrada,nombreFicheroDestino,texto:String);
 
VAR
	archivoE, archivoD:Text;
	linea:String;
	c:integer;
 
BEGIN
	{$i-}
	Assign(archivoE, nombreFicheroEntrada);
	Reset(ArchivoE);
	Assign(archivoD, nombreFicheroDestino);
	ReWrite(ArchivoD);
	{$i+}
 
	if (IoResult <> 0) then
		begin
			writeln('*** file2.pas: error.');
			halt(1)
		end;
 
	c:=0;
	WHILE NOT EOF(archivoE) DO
	BEGIN
		c:=c+1;
		readln(archivoE, linea);
		writeln(archivoD, linea);
	end;
	Close(archivoE);
	writeln(archivoD, texto);
	writeln('La operacion se ha realizado con exito');
	Close(archivoD);
 
end;
 
BEGIN
	clrscr;
	write('Introduzca la ruta del archivo de entrada: ');
	readln(nombreFicheroEntrada);
	write('Introduzca la ruta del fichero de destino: ');
	readln(nombreFicheroDestino);
 
 
  if nombreFicheroEntrada <> nombreFicheroDestino then
	begin
		procesar_archivos(nombreFicheroEntrada, nombreFicheroDestino, texto);
	end
	else
		writeln('El fichero de entrada y el fichero de destino deben ser diferentes');
	readln;
 
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por David (183 intervenciones) el 20/04/2017 12:09:03
Una vez que lees la linea deberías usar el procedimiento que te puse y luego escribir el resultado en el fichero:
1
2
3
4
5
6
7
WHILE NOT EOF(archivoE) DO
 
begin
   readln(ArchivoE,linea);
  AnalizaCaracteres(LINEA, VOCALES, NUMEROS,OT,TOT);
  WRITELN(FICHERODESTINO,VOCALES,NUMEROS,OT,TOT);
end;


La idea esencial es esa. Empieza desde ahí y si tienes alguna duda, vuelve a escribir
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (8 intervenciones) el 20/04/2017 12:50:18
Gracias por llevarme de la mano hasta aquí, pero sigo sin tener claro donde utilizar el procedimiento , tampoco se si es el que me dejaste del primer ejercicio o este otro que me has dejado ahora, es que se me ha cruzado el ejercicio y ando un poco desanimado porque no doy con la respuesta
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por David (2 intervenciones) el 20/04/2017 13:43:52
A ver, el procedimiento a utilizar es el que te puse en el apartado anterior. y deberías llamarlo después de leer cada línea del fichero de origen. Y sería como te puse antes:

readln(ArchivoE, Linea) //leer el fichero de origen y guardar la linea en la variable línea
AnalizaCaracteres(LINEA, VOCALES, NUMEROS,OT,TOT); //pasar cada linea del fichero al procedimiento anterior para obtener los
//resultados

// y escribir los resultados en el fichero de destino con write

Write(fdestino,vocales,numeros,ot,tot);

Esto lo puedes hacer en el programa principal o crear un procedimiento para escribir en el fichero de destino
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (8 intervenciones) el 21/04/2017 10:30:33
Hola de nuevo, podrias explicarme de nuevo lo que estoy haciendo mal
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
Program Archivo;
 
Uses Crt;
 
const
nombreFichero = 'C:\final.txt';
 
var
 
nombreFicheroEntrada, nombreFicheroDestino, texto : String;
 
 PROCEDURE procesar_archivos(nombreFicheroEntrada,nombreFicheroDestino,texto:String);
 
VAR
 
	archivoE, archivoD:Text;
 
	linea:String;
 
	c:integer;
 
 
 Var
 
 
 
 OT, NUMEROS, TOT,VOCALES : INTEgeR;
 
 Procedure AnalizaCaracteres(var linea: string; VAR VOC:INTEGER; var NUM:INTEGER;
VAR OTROS : INTEGER; VAR TOTAL: INTEGER);
 
 VAR
 
  I : INTEGER;
 
 begin
 
  otros :=0;
 
  FOR I:=1 TO LENgTH(linea) DO
 
    case linea[i] of
 
       'A'..'Z','a'..'z':
 
           inc(VOC);
 
       '0'..'9': INC(NUM)
 
    ELSE
 
      INC(OTROS);
 
   end;
 
   TOTAL := LENGTH(linea);
 
end;
 
 
 
BEGIN
 
 
 
	{$i-}
 
	Assign(archivoE, nombreFicheroEntrada);
 
	Reset(ArchivoE);
 
 
 
	Assign(archivoD, nombreFicheroDestino);
 
	ReWrite(ArchivoD);
 
	{$i+}
 
 
 
	if (IoResult <> 0) then
 
		begin
 
			writeln('*** file2.pas: error.');
 
			halt(1)
 
		end;

cuando lo compilo me sale esto
introduzca la ruta del archivo de entrada : C:\prueba.txt
introduzca la ruta del fichero de destino:C:\resultado.txt
C:\resultado.txt2711888111C:\resultado.txt69118891154C:\resultado.txt69118891111
la operacion se ha realizado con exito
no estoy siendo capaz de hacer esto
La línea N contiene C caracteres con X letras, Y números, y Z caracteres de otro tipo”
Donde N es el número de línea, c el número de caracteres de esa línea y x,y,z el número de letras, números y otro tipo de caracteres para esa línea.
En la última línea del fichero aparecerá el número total de letras, números y caracteres de otro tipo.
para que quede asi
El fichero de salida será
La línea 1 contiene 23 caracteres con 17 letras, 1 números y 5 caracteres de otro tipo
La línea 2 contiene 16 caracteres con 13 letras, 1 números y 2 caracteres de otro tipo
La línea 3 contiene 19 caracteres con 11 letras, 2 números y 6 caracteres de otro tipo
En la total hay 41 letras, 4 números y 13 caracteres de otro tipo
muchas gracias por tu paciencia y ganas de ayudar
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por David (183 intervenciones) el 21/04/2017 13:02:34
Te dejo una pequeña idea de como debería ser el procedimiento que procesa los archivos. Sólo te faltaría componer la linea para escribir el segundo archivo. Prueba a hacerlo tú (no debería resultarte complicado) y si no puedes hacerlo, vuelve a escribir.

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
Procedure ProcesarArchivos(var f1: tex; var f2:text);
 
var linea:string;
    linea2:string;
    v,n,o,t:integer;
    cont:integer;
 
begin
  cont:=0;
  assing(f1,'origen.txt');
  {$i-}reset(fi){$i+}
  if ioresult<>0 then
    Writeln('Error al leer archivo de origen o archivo no encontrado')
  else
    begin
      Assign(f2,'destino.txt);
      rewrite(f2);
      while not eof(f1) do
        begin
          readln(f1,linea);
          cont:=cont+1;
          analizacaracteres(linea,v,n,o,t);
          //después de analizar cada linea de f1 tendrías que escribir en f2 los resultados. la variable cont es la que se utiliza para ir contando el número de líneas.
        end;

    end;
close(F1);
close(F2);
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (8 intervenciones) el 22/04/2017 16:29:33
por favor podrias darme la solución ya que me estoy volviendo loco y no doy con ella y me quedo sin tiempo, a ver si viendo la solución soy capaz de entender el ejercico ya que he entrado en un bucle de prueba y error que no me lleva a ninguna parte
te voy a poner como me he quedado con el ejercicio yo y asi me dices en que me equivocaba
Program Archivo;

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
Uses Crt;
 
 
 
const
 
	nombreFichero = 'C:\final.txt';
 
 Var
 
lineas : String;
OT, NUMEROS, TOT,VOCALES : INTEgeR;
 
 Procedure AnalizaCaracteres(var lineas: string; VAR VOC:INTEGER; var NUM:INTEGER;
VAR OTROS : INTEGER; VAR TOTAL: INTEGER);
 
 VAR
 
  I : INTEGER;
 
 begin
 
  otros :=0;
 
  FOR I:=1 TO LENgTH(lineas) DO
 
    case lineas[i] of
 
       'A'..'Z','a'..'z':
 
           inc(VOC);
 
       '0'..'9': INC(NUM)
 
    ELSE
 
      INC(OTROS);
 
   end;
 
   TOTAL := LENGTH(lineas);
 
end;
 
Procedure ProcesarArchivos(var nombreFicheroEntrada: text; var nombreFicheroDestino:text);
 
var
linea:string;
linea2:string;
linea3:string;
v,n,o,t:integer;
cont:integer;
 
begin
cont:=0;
assign(nombreFicheroEntrada,'final.txt');
{$i-}reset(nombreFicheroEntrada){$i+};
if Ioresult<>0 then
Writeln('Error al leer archivo de origen o archivo no encontrado')
else
begin
Assign(nombreFicheroDestino,'destino.txt');
 
rewrite(nombreFicheroDestino);
while not eof(nombreFicheroEntrada) do
begin
readln(nombreFicheroEntrada,linea);
cont:=cont+1;
analizacaracteres(linea,v,n,o,t);
writeln(nombreFicheroDestino,linea);
readln(nombreFicheroEntrada,linea2);
cont:=cont+1;
analizacaracteres(linea,v,n,o,t);
writeln(nombreFicheroDestino,linea2);
readln(nombreFicheroEntrada,linea3);
cont:=cont+1;
analizacaracteres(linea,v,n,o,t);
writeln(nombreFicheroDestino,linea3);
 
 
end;
 
end;
close(nombreFicheroEntrada);
close(nombreFicheroDestino);
end;
 
BEGIN
 
	clrscr;
 
    write('Introduzca la ruta del archivo de entrada: ');
 
	readln(nombreFicheroEntrada,'final.txt');
 
	write('Introduzca la ruta del fichero de destino: ');
 
	readln(nombreFicheroDestino);
 
 
 
	readln;
 
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por David (183 intervenciones) el 23/04/2017 13:12:48
Te dejo aquí la solución completa al ejercicio. Si tienes alguna duda respecto a alguna parte del código vuelve a escribir.

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
Uses CRT;
 
 
Var
  f1,f2:text;
  CADENA : String;
 OT, NUMEROS, TOT,VOCALES : INTEgeR;
 
Procedure AnalizaCaracteres(var frase: string; VAR VOC:INTEGER; var NUM:INTEGER; VAR OTROS : INTEGER; VAR TOTAL: INTEGER);
 
VAR
  I : INTEGER;
 
begin
  otros :=0;
  FOR I:=1 TO LENgTH(FRASE) DO
    case frase[i] of
       'A'..'Z','a'..'z','¤','¥',' ','µ','‚','','¡','Ö','¢','à','£','é','','š':
           inc(VOC);
       '0'..'9': INC(NUM)
    ELSE
      INC(OTROS);
   end;
   TOTAL := LENGTH(frase);
end;
 
Procedure ProcesarArchivos(var f1: text; var f2:text);
 
var linea:string;
    linea2:string;
    v,n,o,t:integer;
    cont:integer;
 
begin
  cont:=0;
  v:=0; n:=0; o:=0; t:=0;
         assign(f1,'origen.txt');
  {$i-}reset(f1);{$i+}
  if ioresult<>0 then
    Writeln('Error al leer archivo de origen o archivo no encontrado')
  else
    begin
      Assign(f2,'destino.txt');
      rewrite(f2);
 
      while not eof(f1) do
        begin
          readln(f1,linea);
          cont:=cont+1;
          analizacaracteres(linea,v,n,o,t);
 
          Writeln(f2,'La linea ',cont,' tiene ',t,' caracteres con ', n, ' numeros ',v,' letras y ',o,' caracteres especiales');
           v:=0; n:=0; o:=0; t:=0;
 
        end;
     close(f1);
     close(F2);
    end;
end;
Begin
      ProcesarArchivos(f1,f2);
 
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (8 intervenciones) el 23/04/2017 14:58:25
Muchas gracias David, lo compilo y me da bien, pero lo ejecuto y no hace nada,¿ como le asigno el archivo para que lo lea y luego le asigno el otro archivo destino para que escriba en el el resultado?
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por David (183 intervenciones) el 23/04/2017 17:54:56
Sí lo hace. Crea el segundo archivo, aunque no lo muestra por pantalla, pero si editas el segundo archivo verás que va perfectamente.
Si lo que pretendes es mostarar el archivo de destino, tendrías que hacer algo así

1
2
3
4
5
While not eof(f2) do
begin
  readln(f2,linea)
writeln(linea);
end;

Esto te mostraría en pantalla el contenido del segundo archivo que no es más que el resultado de pasar la funcion Analizacaracteres a cada linea del fichero origen.
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (8 intervenciones) el 24/04/2017 00:08:22
Perdón me he explicado mal, el ejercicio me pide que cree un programa que pregunte al usuario el nombre de un fichero de texto origen y un fichero de texto destino. El programa abrirá el primer fichero, lo leerá línea a línea y para cada línea escribirá el conteo de tipo de letra de la misma en la línea correspondiente del fichero destino el mensaje:
“La línea N contiene C caracteres con X letras, Y números, y Z caracteres de otro tipo”
Donde N es el número de línea, c el número de caracteres de esa línea y x,y,z el número de letras, números y otro tipo de caracteres para esa línea.
En la última línea del fichero aparecerá el número total de letras, números y caracteres de otro tipo.
y claro al ejecutar tu programa no me pide que ingrese ninguna ruta por eso decia yo que no hacia nada.
Con lo que tu me has mandado yo he creado este programa que si me pide ruta de fichero de entrada y salida , pero en el de salida no me escribe nada.
¿me lo podrias solucionar con el mio o con otro distinto?

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
Program Archivo;
 
Uses Crt;
 
Var
f1,f2:text;
CADENA : String;
OT, NUMEROS, TOT,VOCALES : INTEgeR;
 
Procedure AnalizaCaracteres(var frase: string; VAR VOC:INTEGER; var NUM:INTEGER; VAR OTROS : INTEGER; VAR TOTAL: INTEGER);
 
VAR
I : INTEGER;
 
begin
otros :=0;
FOR I:=1 TO LENgTH(FRASE) DO
case frase[i] of
'A'..'Z','a'..'z':
inc(VOC);
'0'..'9': INC(NUM)
ELSE
INC(OTROS);
end;
TOTAL := LENGTH(frase);
end;
 
 
 
var
 
	nombreFicheroEntrada, nombreFicheroDestino, texto : String;
 
 
 
PROCEDURE procesar_archivos(nombreFicheroEntrada,nombreFicheroDestino,texto:String);
 
VAR
 
	archivoE, archivoD:Text;
 
	linea:String;
    linea2:string;
	c:integer;
	v,n,o,t:integer;
 
 
BEGIN
 
 
	{$i-}
 
	Assign(archivoE, nombreFicheroEntrada);
 
	Reset(ArchivoE);
 
	Assign(archivoD, nombreFicheroDestino);
 
	ReWrite(ArchivoD);
 
	{$i+}
 
 
 
	if (IoResult <> 0) then
 
		begin
 
			writeln('*** file2.pas: error.');
 
			halt(1)
 
		end;
 
 
 
 
    v:=0; n:=0; o:=0; t:=0;
	c:=0;
 
	WHILE NOT EOF(archivoE) DO
 
	BEGIN
 
		readln(archivoE, linea);
        c:=c+1;
		analizacaracteres(linea,v,n,o,t);
		Writeln(archivoD,'La linea ',c,' tiene ',t,' caracteres con ', n, ' numeros ',v,' letras y ',o,' caracteres especiales');
        v:=0; n:=0; o:=0; t:=0;
 
While not eof(archivoD) do
begin
readln(archivoD,linea);
writeln(linea);
readln;
 
	end;
	end;
 
	Close(archivoE);
 
	writeln(archivoD, texto);
 
	writeln('La operacion se ha realizado con exito');
 
	Close(archivoD);
	readln;
 
 
 
end;
 
 
 
BEGIN
 
	clrscr;
 
    write('Introduzca la ruta del archivo de entrada: ');
 
	readln(nombreFicheroEntrada);
 
	write('Introduzca la ruta del fichero de destino: ');
 
	readln(nombreFicheroDestino);
 
 
    if nombreFicheroEntrada <> nombreFicheroDestino then
	begin
 
		procesar_archivos(nombreFicheroEntrada, nombreFicheroDestino, texto);
 
	end
 
	else
 
		writeln('El fichero de entrada y el fichero de destino deben ser diferentes');
 
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por David (183 intervenciones) el 24/04/2017 09:50:51
Da igual. La parte esencial del programa ya la tienes hecha. Sólo te queda pedir el nombre de los dos archivos en lugar de asignárselos como he hecho yo.

1
2
3
4
readln(nom1),
assign(f1,nom1),
readln(nom2)
assign(f2,nom2);
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 para un ejercicio que analiza una cadena de caracteres y devuelve como resultado 4 con: el nú

Publicado por xuxo_pscs (8 intervenciones) el 26/04/2017 12:07:36
No he podido conectarme antes por temas de trabajo pero muchisimas gracias por toda tu ayuda y paciencia, me has ayudado mucho para resolver los problemas ,todo perfecto 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