[ Foro de Pascal ]

Tratar cadena de mas de 255 caracteres

21-Aug-2015 17:00
Invitado (pascal )
2 Respuestas

Hola, tengo un problema y no encuentro la solucion en ningun lado. Debo realizar, como tarea, un programa en pascal que trate un texto de mas de 300 caracteres de un archivo txt, pero no puedo usar string porque solo soporta 255. Como hago, que tengo que hacer ?, les agradeceria que me ayudaran
El ejercicio me pide que dado un texto lo copie en la salida todo en mayusculas y cuente las palabras

Ayuda por favor!!!


22-Aug-2015 00:30
Nacho Cabanes (+30)

Lo más sencillo es que trabajes letra a letra:

- Cada letra que leas, la vuelcas convertida a mayúsculas.

- Si la letra es un espacio, cuentas una palabra más (en realidad, si es un espacio y la anterior no lo es).


24-Aug-2015 21:51
Luis Torres (+12)

Una idea que tengo, y te puedo sugerir es, usar un arreglo de tipo char con límites que van desde 1 hasta las cantidad máxima que caracteres que vaya a introducir el usuario, esta cantidad podrá ser fácilmente superior a los 255 caracteres. Cada letra se deberá leer con un "read" para que todo quede en una misma línea. Para finalizar la entrada de caracteres, usaremos un ciclo while y la condición de salida será el primer caracter que se genera cuando pulsamos la tecla "enter", ese caracter es el de nueva línea, o sea el #10. Recordemos que cada vez que presionamos la tecla "enter" se genera dos caracteres, el de nueva línea y el de retorno de carro, es decir, el #10 y luego el #13. A continuación te dejo un código que ilustra lo anteriormente escrito, además convierte la oración entrada por el usuario en mayúsculas; solo que no cuenta las palabras ni tampoco lee desde un archivo txt en el disco duro, sino desde el teclado. Así que aquí lo tienes:

 
Program lecturaDeMasDe255;
var
 oracion: array[1..500] of char;
 i, max: integer;
 
BEGIN
 i:= 1;
 read(oracion[i]);
 while (oracion[i]<>char(10)) do
  Begin
    i:= i+1;
    read(oracion[i]);
  End;
 max:= i;
 for i:=1 to max do
   write(upcase(oracion[i]));
 writeln;
 
 readln;
END.
 


Espero haberte ayudado.
Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)