PREGUNTAS CONTESTADAS - pascal/turbo pascal

 Hay un total de 203 Preguntas.<<  >> 

    Pregunta:  55239 - COMO CONSEGUIR EN PASCAL QUE UN ARRAY TENGA TAMAÑO DINÀMICO
Autor:  Diego Alfonsin
Hola a todos, les comento mi problema: tengo que hacer un programa en pascal en donde el usuario tiene que ingresar n numeros, los cuales los quiero guardar en un array o vector, el tema es cuando lo declaro tiene que tener un tamaño fijo, y no se como hacer para que el tamaño del vector sea igual a la cantidad de numeros que ingrese el usuario, osea n. Seria como n array dinámico en cuanto a su tamaño

Desde ya muchas gracias por su atención.
  Respuesta:  joaquin acuña
hola amigo, mira, viendo tu problema , lo que necesitas no es un arreglo, sino que necesitas usar una lista.
Una lista es un tipo de dato dinamico en el cual va aumentado su tamaño dependiendo de la cantidad de datos que van apareciendo. Es como un encadenamiento de datos uno atras de otro, como si fuera un arreglo, nada mas que cuendo se necesita agregar un elementos mas , se pide espacio en memoria, se almacena el dato y se li engancha a la lista.
Si ya viste el temade listas en pascal, esto te va a resultar re papa! ^^J

Saludos
  Respuesta:  Ivan Lira
Hola Diego, pues tu probléma lo contestaste con tu misma pregunta.
Algo que debe quedar muy claro es que los arrays son estructuras que deben estar bien definidas, al tu declarar un arreglo por ejemplo:

var x:array[1..10] of integer

estas indicando al compilador que espacio reservará para dicho array, los compiladores no estan diseñados para que tu pongas [i..N] o algo semejante, los arreglos deben estar bien definidos como dije antes, ¿que tan bien definidos?
Pues mucho, inclusive si declaras una constante por ejemplo llamada TOP y le das el valor de 10, y la declaras despues de declarar el arreglo, hasta con eso te marcaria error, es decir si hicieras esto

var x:array[1..TOP] of integer
const TOP =10;

la declaración de la constante inclusive tendría que ir antes que la del arreglo.

Pero no te desanimes lo que tu necesitas es posible hacerlo y es muy sencillo, solo debes tomar en cuenta las necesidades de tu programa, hacia que va enfocado para saber de que longitud declarar tu array, recuerda, es posible declarar un arreglo de 1000 casillas si asi lo deseas aunque no las utilices todas, no tiene importancia. Por ejemplo si sabes que en tu programa se pueden utilizar unos 20 datos, puedes declarar tu arreglo de 100 y no hay problema :-)
Aqui te voy a dejar un ejemplo en el que capturo un vector de N datos por el usuario, es fácil de entender.

var n,i;
x: array [1..100] of integer;
begin
writeln ('Cuantos datos deseas capturar?');
readln (n);

for i:=1 to n do { aqui se captura el vector, de 1 hasta n (los datos que dio el usuario) }
begin
write ('Captura e dato ',i,' del vector: ');
readln(x[i]);
end;

Observa bien y lo único que se esta haciendo es que tu antes definias un vector de cierto tamaño, y utilizabas ese tamaño definido para trabajar con el vector, aqui es igual la única diferencia es que trabajaras con n (el valor que dio el usuario) como el tamaño del arreglo (de igual forma funcionaria para las matrices).

Si no te quedo del todo claro te recomiendo que consultes el curso que hay en: http://prepavirtual.educaleft.com
por ahi buscas en los Videotutoriales donde dice Curso Intermedio de Pascal,. ahi explican claramente todo esto.
Saludos.

    Pregunta:  55285 - MODIFICAR VALORES DE REGISTRO EN TABLAS DE TURBO PASCAL
Autor:  Pastor Palacios
Saludos Amigos, necesito modificar los valores de los registros de una tabla en Turbo Pascal, específicamente quiero dividir sus valores entre 1000 (mil) y utilizar una función de redondeo al convertirlos, tambien quisiera poder copiar valores a los campos de estas tablas desde otros formatos, ejemplo archivos TXT o DBF, gracias, amigos
  Respuesta:  juan miguel Mendoza López
en cuanto a modificar registros de la tabla, no puedes hacerlo simplemente así, debes seguir estos pasos:

1. crear una tabla temporal y abrirla.
2. leer registro por registro dividirlo dentro de mil y todo lo demas que debas hacer^^.
3. pasar el registro modificado a la tabla temporal.
4. al terminar de pasar todos los registros, eliminas la tabla original con la funcion erase(filename).
5. renombras la tabla temporal con el nombre de la tabla original con la función rename(filename) ;

ya ya está solo eso debes hacer

espero que te ayude con tu primera pregunta.....

y ahora con respecto a la segunda, para un archivo de texto, solo debes leer los registros 1 por 1 con la funcion read o readln pero asegurandote de que el tipo de la variable en la que guardas estos registros sean de tipo text.
en cambio si quieres leer datos de una tabla dbf, necesitas saber el formato de la tabla y generar un 'TYPE' con el formato, solo así podras leer los registros...

espero que te sea de ayuda si sigues teniendo problemas, contactame ok ^^. saludos.

    Pregunta:  55798 - ESCRIBIR VARIABLES EN MODO GRAFICO
Autor:  Alex perez
Pues la pregunta es esa, soy principiante y estoy programando un tetris y solo me queda escribir en modo grafico la variable puntos, k no me deja, pork al poner puntos sin ' ' me dice k error ortografico...

Si alguien me pudiese decir alguna funcion k solucionase este problema estaria muy agadecido.
  Respuesta:  juan miguel Mendoza López
que tal ^^, para poder imprimir variables en modo grafico, debes asegurarte de que sean cadenas.
en el caso de que la variable sea numerica, utiliza la funcion str de pascal

la sintaxis es: str(variable_numerica,variable_cadena) ;
esto pasa la variable numerica a cadena, guardando este resultado en variable_cadena.

depues de que hagas esto utiliza outtext(variable_cadena) ; así nunca tendras problemas

espero que te haya sido de ayuda, si sigues con el problema puedes contactarme^^. saludos.

    Pregunta:  55805 - AYUDA CON UN RELOJ HH:MM:SS
Autor:  Andres Villanueva
Hola amigos programadores, tengo un problema, estoy iniciando en la programacion con pascal, y me mandaron a hacer un reloj en FORMATO HH:MM:SS, AM, PM

Como puedo hacer para que cree un loop.? con el While.?
sinceramente estoy algo confundido...

Espero su pronta respuesta.!
  Respuesta:  juan miguel Mendoza López
para leer el reloj tienes que usar la libreria 'dos', en este se encuentra la funcion gettime, y para el while no te preocupes, hazlo de la siguiente forma:

uses crt, dos ;
var
hh, mm, ss, mmm : word ;

{hh = hora, mm = minutos, ss = segundos, mmm = milesimas}

begin
while not keypressed {mientras no se presione una tecla}
begin
gettime(hh,mm,ss,mmm) ; {leemos el tiempo del sistema}
gotoxy(0,0) ; {vamos a la posición 0,0}
write(hh,':',mm,':',ss) ; {escribimos al hora como: HH:MM:SS}
end ;
end ;

ya solo te falta condicionarlo para que te muste am o pm y ya está, espero que te sirva, si tienes mas dudas, contactame^^. saludos

    Pregunta:  56265 - CONVERTIR ARCHIVOS .DAT A TXT U OTRO
Autor:  Armando Madrid S.
Por favor, alguien me pudiera decir como puedo convertir un archivo .dat que esta escrito en Pascal a un formato tipo .txt, u otro formato que me permita realizar modificaciones al mismo y luego volverlo a llevar al formato original .dat.
Mis agradecimientos por adelantado.
  Respuesta:  Roberto Garcia
Para poder ver un archivo de tipo DAT tienes que conocer la estrucrua del archivo, es decir saber que campos contiene, de que tipo son y de que tamaño en los casos que aplique de otra forma te sera imposible verlo o pasarlo a otro formato. cabe señalar que no es necesario saber el nombre de los campos.

Supongamos que es un archivo que tiene un campo llave de tipo entero, ademas tiene dos campos de tipo cadena y un campo de tipo real. entonces la estructura para poder leer el archivo seria.

tipoArchivo=record
index:integer;
nombre:String;
Autor:String;
precio:real;
end;

archivo = file of tipoArchivo

Asi podras utilizar los procedimientos y funciones de Turbo Pascal para poder ver el contenido del archivo, pero sin conocer la estructura del archivo es imposible.

    Pregunta:  56328 - EDICION Y MODIFICACION DE ARCHIVOS DE EXTENCION *.DAT
Autor:  ALEXANDER PEREZ
MUY BUENAS UN GUSTO SALUDAR A TODA LA CONCURRENCIA ESTOY POR ACA EN BUSCA DE AYUDA UNA VEZ MAS PÀRA UN PROBLEMITA MUY SERIO QUE TENGO

PARA AQUELLOS CONOCEDORES O EXPERTOS QUIENES DESEEN AYUDARME LE INFORMO QUE SE TRATA DEL SISTEMA SAINT ADMINISTRATIVO VERSION 7.51, BAJO MS-DOS, EL CUAL EN UNA EPOCA SE HIZO MUY POPULAR, POR SI ALGUNO CONOCE DE ESTE SISTEMA O BIEN HA TENIDO LA OPORTUNIDAD DE TRABAJAR CON EL, USA UNOS ARCHIVOS PLANOS DE EXTENCION *.DAT PARA EL MANEJO DE LA INFORMACION O DATOS Y ADEMAS ESTA DISEÑADO EN TURBO PASCAL.

ES IMPORTANTE DESTACAR QUE CONOZCO LOS NOMBRES DE TODAS Y CADA UNA DE LAS BASES O ARCHIVOS DE DATOS CONTENTIVO DE LA INFORMACION COMO POR EJEMPLO DE PROVEEDORES (APROV.DAT), INVENTARIO (APROD.DAT), ASI COMO LA EXTRUCTURA DE CADA UNA DE ELLAS, NOMBRE DE LOS CAMPOS; TIPO Y LARGO DE CADA REGISTRO.

MI NECECIDAD ES PODER HACER UN PEQUEÑO PROGRAMA YA SEA EN CLIPPER O BIEN EN TURBO PASCAL QUE ME PERMITA EDITAR, MODIFICAR O BIEN ACTUALIZAR EN FORMA MASIVA AUTOMATICAMENTE CADA UNO DE LOS REGISTROS DE LAS BASES DE DATOS MAS IMPORTANTE O CONTENTIVAS DE LOS PRECIOS Y COSTOS DE CADA UNO DE LOS PRODUCTOS, APROX. 2500 PRODUCTOS, TODO ESTO DEVIDO A LA RECOVERSION MONETARIA (PRECIOS Y COSTOS DIVIDIDOS ENTRE MIL “1000”) QUE SE ESTA LLEVANDO A CABO ACA EN NUESTRO PAIS, VENEZUELA, CON LA FINALIDAD DE NO TENER QUE HACERLO UNO POR UNO POR EL SISTEMA.

GRACIAS DE ANTEMANO POR SU AYUDA.
  Respuesta:  Ramón González
Saludos.

Espero que esto ya sea historia. Pero si aún no has resuelto el problema, estoy seguro que podrás resolverlo con lo que voy a decir.

1° Si tienes a mano una versión 7.51 de saint perfecto, de lo contrario consiguela, es la única que probado que tiene la estaructura de datos en el mismo directorio y además corresponde correctamente.

2° Estudia bien el registro y no trates de hacer nada mas que la tabla de productos, con las demás no sirve y perderás tu tiempo.

3° Vivan nuestros programadores irresponsables.

4° si por casualidad consigues la estructura de datos de la versión 4.5 de la contabilidad mandamela por favor.

saludos.
cualquier duda puedes consultar directamente.

    Pregunta:  56485 - TURBO PASCAL Y WINDOWS VISTA 32 BIT
Autor:  marlon parejo
tengo windows vista. y nesecito intalar un lenguaje de turbo pascal compatible con window vista.¿que me sugieres?gracias.
  Respuesta:  Rodrigo Lastiesas
podes intentar cuando lo instalas click derecho en el EXE y vas a propiedades, solapa compatibilidad, instalar usando compatibilidad con : win98 o win 95, y ahi vas a tener DOS. con eso lo podes, manejar.

sino funciona con eso, hay un programa que emula al DOS, y lo podes usar en una carpeta, copias el pascal ahi y lo ejecutas, desde el emulador.

    Pregunta:  56644 - COMO DEVUELVO NUMEROS DE UN ARREGLO UNI. EN EL MISMO ARREGLO
Autor:  Deiby Limpio
Se dispone de un arreglo unidimensional de números enteros cuyo tamaño máximo es de 100 elementos. Crear un programa en PASCAL que contenga una rutina que devuelva en el mismo arreglo los números enteros pares separados de los impares, y de tal forma que cada uno de los subconjuntos formados quede ordenado ascendentemente. Considerar:
- Al crear el subprograma se debe considerar que el arreglo ya contiene N números enteros, siendo N <= 100.
- Se pueden usar estructuras auxiliares y se valorara su adecuación.
- Es indiferente que al final estén antes los pares o los impares en el arreglo.
  Respuesta:  Luis Felipe García Gutiérrez
Partiendo del hecho que el enunciado permite y valora la utilización de estructuras auxiliares, bien puede considerarse la creación de un vector adicional que denominaremos "temporal" el cual posea igual número de posiciones que el entregado.

Para iniciar se crean tres variables tipo entero dos de ellas se inicializan en 0 las cuales corresponden a los contadores de pares e impares y la tercera para recorrer el vector original la cual iría desde 1 hasta el largo del vector.

Se incializa el ciclo y se verifica si el residuo de la división del valor que contenga el vector en la posición que lleve el ciclo es 0, de ser así es par y se almacenaría en la última posición del vector temporal, en caso contratio se almacenaría en la primera posición del mismo y se aumenta el contador correspondiente.

Al terminar el ciclo se ordenan primero los pares, haciendo un ciclo desde la posición 1 hasta lo que nos haya dado el contador de los impares; posteriormente se hace lo mismo con los pares pero en éste caso el ciclo va desde el largo del vector menos la cantidad de pares hasta el largo del vector; la ordenación del vector se puede hacer mediante el uso de cualquier método de ordenación como el de burbuja o cualquier otro.

Para termianr y por medio de otro ciclo se pasa el vector temporal al original y listo!!!

Suerte

    Pregunta:  56969 - ORDENAR NOMBRES EN MATRICES
Autor:  jorge rodriguez
¿Como puedo ordenar por nombres una matriz tipo dato que contiene nombres y apellidos?
  Respuesta:  Luis Felipe García Gutiérrez
El método de ordenación para una matriz no es muy diferente al de un vector; sólo que se deben crear tantas variables temporales como columnas tenga la matriz; para ello se inicia recorriendo la matriz validando el valor de determinada columna en particular con la misma posición en las demás filas; si es mayor entonces se asignan sus valores en las variables temporales y se efectúa el cambio en las posiciones; en caso que coincida entonces se efectúa la misma comparación con el valor de las mismas filas pero en columnas diferentes.

Espero haberme hecho enteder...

Suirte!!!

    Pregunta:  57082 - AÑOS BISIESTOS EN PASCAL
Autor:  Genesis Gamboa Delgado
bueno mi pregunta es como calcular exactamente el número de días vividos por una persona hasta la fecha. contemplando los años bisiestos. ¿como hacer con los años bisiestos en pascal?
  Respuesta:  Luis Felipe García Gutiérrez
Definición: http://es.wikipedia.org/wiki/Bisiesto

Se efectúa un procedimiento para validar si determinado es biciesto, para ello y según la definición ésto ocurre cada 4 años y siempre y cuando no sea divisible exactamente por 100.

Para ello de la fecha ingresada por el usuario como la de su nacimiento se separa de ella el año de nacimiento, y se inicicia un ciclo que va desde el año de nacimiento hasta el actual-1, se verifica si el año es biciesto y la primera vez que se ejecuta se calculan los días faltantes de ese año y se acumulan en una variable previamente inicializada en 0; para los demás casos se verifican si es bisieto o no y se suman la cantidad de días contenidos; para el año actual se verifica que la fecha actual no sea mayor a 28 de febrero, hace la misma validación de año bisiesto y se suman la cantidad de días transcurridos... y eureka!!!

suerte y pulso!!!

|<  <<  11 12 13 14 15 16 17 18 19 20 21  >>  >|