Pascal/Turbo Pascal - leer varios datos a la vez y asignarles variable

   
Vista:

leer varios datos a la vez y asignarles variable

Publicado por juan (19 intervenciones) el 29/11/2009 01:40:26
buenas, pues necesito saber como hacer que readln lea varios datos en una linea y asignarle automaticamente a cada valor una variable sin tener un limite, osea no tener que poner read(uno);read(dos); etc, ya que no habria "limite" de input para el programa en concreto. Yo he pensado en vectores pero no estoy seguro ya que no entiendo mucho de éstos concretamente
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por Diego Romero (997 intervenciones) el 29/11/2009 04:25:53
¿Y cómo vas a referencias los datos introducidos así?.
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por juan (19 intervenciones) el 29/11/2009 23:57:50
esa es mi duda >.< , necesito que lea X datos y que se les asigne una variable sin tener que poner read(uno); read(dos); ... ya que no hay numero de datos predefinidos para el programa, por ej: 12 123 5423 123 ... y se les asigne a cada uno de estos numeros una variable para usarlos luego
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por Diego Romero (997 intervenciones) el 30/11/2009 01:44:25
Con la Iglesia nos hemos topado, Sancho :P.

Eso que dices no se puede hacer.
Si la cantidad de datos a almacenar es desconocida debes usar una lista dinámica. Aunque sospecho que no sabes qué es eso.

Mejor explica cuál es el problema que tienes que resolver, quizá no sea necesario almacenar todos los datos sino simplemente procesarlos a medida que van llegando. Por ejemplo, si necesitas hacer una sumatoria no es necesario almacenar cada sumando sino simplemente ir sumándolos a medida que los vas ingresando.
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por juan (19 intervenciones) el 01/12/2009 03:51:04
concretamente consiste en este programa, que convierte unos numeros introducidos en X base y se interactua para que los convierta en un numero de base Y

-------------------------------------------------------------------
OPCIONES
0 Salir.
1 Seleccionar base
2 Convertir secuencia enteros en base 25 a base 10.
3 Convertir secuencia caracteres en base 25 a base 10.
4 Convertir numero en base 10 a secuencia enteros en base 25.
5 Convertir numero en base 10 a secuencia caracteres en base 25.
-------------------------------------------------------------------
opcion ? 2
Secuencia enteros (an an-1 ... a0) en base 25 ? 7 18 8
El numero en base 10 es: 4833
opcion ? 3
Secuencia de caracteres (0 .. Z):7I8
El numero en base 10 es: 4833
opcion ? 4
Numero en base 10: 4833
La secuencia de enteros en base 25 es: 7 18 8
opcion ? 5
Numero en base 10: 4833
La secuencia de caracteres en base 25 es: 7I8
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por Diego Romero (997 intervenciones) el 01/12/2009 08:52:51
No entendí. Sé más explícito por favor.
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por juan (19 intervenciones) el 01/12/2009 23:40:20
por ejemplo, si en opcion lee 2, el programa te pide introducir numeros con espacios entre medio, en el ejemplo seria asi, 7*25^2 + 18*25^1 + 8*25^0 = 4833, osea seria N el numero de datos introducidos, dato1*(base^n-1) + dato2*(base^n-2) y asi sucesivamente hasta el ultimo dato que seria dato*base^^, no se si me he explicado xD
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por Diego Romero (997 intervenciones) el 02/12/2009 15:47:16
Pues eso no es más que una sumatoria.
Calcula el primer término, guardas el resultado, calcula el segundo término y el resultado lo sumas al resultado anterior y así sucesivamente. No veo necesidad de guardar los resultados al vuelo.
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por juan (19 intervenciones) el 02/12/2009 18:21:54
si pero habra que asignarles una variable cuando lo lea y asi manipularlo no? me podrias poner un ejemplo mas o menos de lo que me dices?, quizas es que no he entendido del todo o sea con una forma que no sepa
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por Diego Romero (997 intervenciones) el 02/12/2009 18:31:48
Si he entendido bien el problema que tienes entre manos, es lo mismo que resolver esto:
Pedir al usuario la cantidad de términos de una sumatoria. Pedir esos términos y mostrar el resultado.

Entonces...

var
cant, suma, aux, i: integer;

begin
Write('Cantidad de términos: ');
ReadLn(cant);
if cant > 0 then
begin
i:=0;
Suma:=0;
while i < cant do
begin
inc(i);
Write('Término ',i,': ');
ReadLn(aux);
Suma:=Suma+aux;
end; // while
WriteLn('Resultado: ',Suma);
end; // if
end.

Como verás, aunque la cantidad de datos no se puede saber de antemano, no es necesario tener declaradas tantas variables como datos se ingresen.
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por juan (19 intervenciones) el 02/12/2009 19:20:26
creo que me entendiste mal o me exprese mal en el ejemplo, si no he entendido mal tu ejemplo pide una cantidad de datos y luego pide datos uno por uno y no es lo que quise decir, y por cierto gracias por la ayuda de todas formas que no se me olvide xD, si no te parece mal pongo todo el enunciado del programa aqui o en un link y asi quizas no nos malentenderemos xD
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por Diego Romero (997 intervenciones) el 02/12/2009 23:48:23
Es muy problable que te haya entendido mal (y el formateo de este foro no ayuda :S), así que sí, pon un link al enunciado del problema y cualquier cosa que nos ayude a ayudarte :P.
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por juan (19 intervenciones) el 03/12/2009 01:48:20
gracias de nuevo diego, te lo pongo en un foro, es un poco larguillo el enunciado >.< , osea mi mayor problema consiste en la lectura de los datos que se introduzcan en las opciones 2 y 3 para manejarlos
http://www.adslzone.net/postp1552946.html#1552946
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por Diego Romero (997 intervenciones) el 03/12/2009 10:49:08
Ya entendí, me quedó clarísimo.

Lo que dice para las opciones 2 y 3 del menú es que cuando se elije la opción 2 el usuario debe ingresar el número en la base elegida como cifras separadas, de modo tal que si ingresa:

7 18 8

Y la base es 25, ese 18 es la "i". Así como la "f" es el 15.

Cuando elije la opción 3 entonces debe escribir el número usando los símbolos correspondientes correctamente, es decir:

7i8

Tu dificultad está en que crees que debes tener cada uno de los números ingresados por el usuario en variables separadas, pero no es así.

Lo que el usuario tipee guárdalo en un string. Teniendo el número en un string lo único que debes hacer es parsear el string y ya está.

Supongamos que N es de tipo string y...

N:='7 18 8';

Lo primero que necesitas saber es cuántos dígitos hay en ese número. Siendo un string debes contar los espacios en blanco y sumarle uno. En el ejemplo hay 2+1=3, la cifra es de 3 dígitos. Para ello podrías usar esta función:

function ContarDigitos(S: string): integer;
var
i, result: integer;
begin
result:=0;
if Length(S) > 0 then
begin
for i:=1 to Length(S) do
begin
if S[i] = ' ' then
result:=result+1;
end;
result:=result+1; { cuenta el final de la cadena }
end;
ContarDigitos:=result;
end;

Para la opción 3 del menú es más fácil, Length(N) te dará la cantidad de dígitos sin más trámites.

Luego debes extraer de izquierda a derecha cada uno de los dígitos usando el espacio y el final de la cadena como separador de dígitos. Por cada vez que logras extraer un dígito lo procesas según la fórmula dada al inicio del enunciado, aquí debes tener en cuenta dos cosas: primero debes controlar que el dígito (el símbolo) proporcionado por el usuario sea válido para la base actual, por ejemplo, si el usuario eligió la base 14 e ingresó la letra 'f', 'f' es inválida para la base 14; y segundo usando la cantidad de dígitos que has calculado debes pasar el exponente adecuado, restándole uno por cada dígito procesado.

Si necesitas ayuda para esto último, pregunta. Ahora mismo tengo trabajo que hacer y no tengo tiempo de escribir código pero no tengo problemas en guiarte en esto también.
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por juan (19 intervenciones) el 03/12/2009 18:27:52
vale muchas gracias Diego, ahora mi unica duda seria como podria extraer los numeros dependiendo de los espcios de los strings? es que no he manejado mucho los strings y no se como van la verdad, ire leyendo el libro que tengo haber que averiguo, si lo averiguo te posteo para decirtelo, 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

RE:leer varios datos a la vez y asignarles variabl

Publicado por juan (19 intervenciones) el 03/12/2009 18:37:08
diego una cosa, pensando en tu funcion, se me ha ocurrido de que si al final de los datos introducidos el usuario tipea espacias el indice se incrementaria sin ser cierto, por ej, introduzco 1 _ 12 _ 123 _ _ _123 _ 12_ _ _... esos espacios la funcion los contaria y se le sumaria al indice no?
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

RE:leer varios datos a la vez y asignarles variabl

Publicado por Diego Romero (997 intervenciones) el 03/12/2009 20:43:01
En el mundo de la programación solemos decir "el mundo sería mucho mejor si no hubiera usuarios" :D.

Usuarios, usuarios... Si le das la posibilidad de que metan la pata... meterán la pata, y si no se la das, también.

Me temo que tienes razón. Y me temo que tendrás que inventarte una forma de detectar y eliminar los espacios dobles. Pero te recomiendo que no te preocupes por eso ahora. Concéntrate en resolver el problema que tienes entre manos primero y luego te encargas de los detalles menores.
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

Ver: eliminar espacios dobles

Publicado por Diego Romero (997 intervenciones) el 03/12/2009 21:01:32
Ver hilo "eliminar espacios dobles".
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