Autor Tema: Ayuda Programadores (Pascal)  (Leído 2794 veces)

vela2

  • Hero Member
  • *****
  • Mensajes: 739
  • Karma: 6
    • Ver Perfil
Ayuda Programadores (Pascal)
« en: Noviembre 30, 2007, 12:28:49 pm »
Hola a todos, me han mandado hacer un programa en la universidad para determinar si un grupo de numeros es o no una progresion geometrica. El problema es que todo lo que encuentro en Internet está hecho con String y no nos dejan usarlo :(

Alguno me puede ayudar por lo menos a empezar??? Os copio el enunciado del ejercicio:

Enunciado:

En el fichero de entrada hay grabada una sucesión de números enteros.
Codifíquese un programa Pascal para determinar si los números de cada línea forman una progresión geométrica, de razón R, o no. El programa mostrará la información de cada línea.

Se dice que una sucesión de números enteros forma una progresión geométrica de razón R cuando cada elemento de la sucesión, excepto el primero, se obtiene multiplicando R al elemento anterior.
 
 Resolución:

La solución se ajustará a las siguientes especificaciones:

Especificaciones de entrada:

- Se utilizará un fichero de texto para la entrada de datos que tendrá que llamarse obligatoriamente  datosp1b.txt
En el código Pascal este fichero debe estar direccionado en la sentencia assign
de la siguiente forma: assign (nombre_del_fichero, 'C:\P1\datosp1b.txt').
- Todos los números están grabados correctamente, es decir, son enteros y no existen en el fichero líneas en blanco.
Especificaciones de salida:
- Se utilizará el fichero estándar de salida: Output.
- En la primera línea del Output aparecerán los datos: número de matrícula, apellidos y nombre del alumno que realiza la práctica.

Especificaciones de diseño:

- No se utilizarán estructuras de datos, salvo los ficheros de entrada y salida.
- No se admite la utilización de variables globales dentro de los subprogramas.
- En todos los casos se debe procesar el menor número posible de valores.
- El código debe ser autodocumentado. Cada subprograma debe contener comentarios en su cabecera con la siguiente información:
- Qué es lo que realiza el subprograma
- Qué parámetros utiliza: de que tipo son (entrada, salida o entrada-salida) y que finalidad tienen
- El programa deberá contener un subprograma ProcesarLinea que realice las siguientes tareas:
- Procesa la línea:
- Escribe el número de línea
- Escribe si forman una progresión geométrica o no y en caso de formarla escribe la razón.

Fluffy

  • Administrator
  • Hero Member
  • *****
  • Mensajes: 6.706
  • Karma: 43
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #1 en: Noviembre 30, 2007, 02:51:01 pm »
si no puedes usar string como coño vas a leer la línea?

vela2

  • Hero Member
  • *****
  • Mensajes: 739
  • Karma: 6
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #2 en: Noviembre 30, 2007, 03:06:37 pm »
Para leer una línea "readln" a continuación de añadir el conjunto de números, no???

Es que tmp entiendo mucho

EDITADO: acabo de leer en el libro que en vez de String usemos packed array. Sabeis de lo que hablo?? Yo nop :(
« Última modificación: Noviembre 30, 2007, 04:34:49 pm por vela2 »

Munrox

  • Administrator
  • Hero Member
  • *****
  • Mensajes: 14.093
  • Karma: 323
    • Ver Perfil
    • Velmad
Re: Ayuda Programadores (Pascal)
« Respuesta #3 en: Noviembre 30, 2007, 08:29:26 pm »
O soy muy torpe o se me ha pasado como se separan los números, ¿uno por linea? ¿algún delimitador? ¿Si tienes que usar readln que devuelve en pascal?

No se que leches es un packed array. Pero vamos, solo necesitas saber como están delimitados los números puesto que dice que no hay errores en la entrada.

Básicamente, haces un bucle en el que se lea el número, multiplicas por R el número anterior y comparas ambos valores. Si se llega al fin de fichero o si los valores no son iguales sales del bucle. El primer número puedes leerlo sin más antes de comenzar el bucle.

Editado: Acabo de leerlo y no me queda claro, que dice que imprimas el número de linea. Me parece un poco absurdo, pero en fin. Supongo que tampoco te pondrán progresiones de 1 solo número. Así que toca leer los dos primeros y dividirlos para encontrar la R ya que no la dan en la entrada. Si el segundo número no es divisible de forma entera no hace falta que hagas el bucle ya que no son progresión.

No se si te estás enterando de algo o no, jajajaaj.

Editado2: Vuelto a releer y haciendo un esfuerzo por entender que es lo que en realidad quieren decir (puede que hoy esté muy espeso). Dan una ristra de numeros separados de algún modo en una misma linea. Lees toda la linea y se la pasas a procesar linea como un packed array. Esta función va leyendo número por número y hace lo que te dije arriba, primero los dos primeros y luego en un buble uno más cada vez.

Dice que se debe procesar el menor número de valores, lo que no se si se refiere a directamente leerlos o se refiere a que la funcion procesar linea se detenga en el buble que te he dicho. Si es el primer caso, la función procesar linea tendria que hacer la lectura y hacerla caracter por caracter (no creo que se refieran a esto). En el segundo caso es lo que ya he comentado.

Si se me escapa algo a ver si fluffy cae en ello.
« Última modificación: Noviembre 30, 2007, 08:42:51 pm por Munrox »

Pimba

  • Global Moderator
  • Hero Member
  • *****
  • Mensajes: 1.737
  • Karma: 21
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #4 en: Diciembre 01, 2007, 02:22:52 am »
Si lo escribis en chino me entero de lo mismo.

Hay que joderse la nulidad que soy en este tema. Y mira que me gusta la informatica, pero la verdad es que al final nunca me pongo a estudiarla.

Conoceis algun manual o libro con el que me pueda ir iniciando? ya que paso tantas horas delante del ordenador, que al menos aprenda a hacer algo util con él no?

Disfruta de lo que tienes, porque nunca sabras cuando dejaras de tenerlo.

vela2

  • Hero Member
  • *****
  • Mensajes: 739
  • Karma: 6
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #5 en: Diciembre 02, 2007, 02:34:44 am »
Muchisimas gracias Munrox!!!

Haber.... lo que yo tenia pensado es coger el segundo número de la línea, hacer un 'div' y un 'mod' con el primero, si el 'mod' no es cero, ya sabemos que no es progresión, si el 'mod' el igual a 0, cogemos el resultado del 'div' y lo multiplicamos al segundo para ver si nos da el tercero...y así sucesivamente hasta que acabe la línea con un 'eoln'.

El problema es que no se coger el segundo número, aunque creo que con esto has querido responderme:


Editado2: Vuelto a releer y haciendo un esfuerzo por entender que es lo que en realidad quieren decir (puede que hoy esté muy espeso). Dan una ristra de numeros separados de algún modo en una misma linea. Lees toda la linea y se la pasas a procesar linea como un packed array. Esta función va leyendo número por número y hace lo que te dije arriba, primero los dos primeros y luego en un buble uno más cada vez.


Se hace una función, pero como leo el segundo número antes que el primero??

Ya tengo el archivo datosp1b, lo copio, vienen varios por linea, menos en una línea.

6 12 24 ->Progresión de R=2
11 8 7 66 99 11 23 -> No hay
-1 -5 -25 -125 ->de razon 5
50 70 71-> no hay
12 14 16 18 20 22 24 26 27->no hay
-99-> no hay.


Por cierto, creo que no hace falta usar el packed array, simplemente un par de 'if ' y dentro de esos 'if ' metemos los bucles más simples 'while'.


Muchisimas gracias por todo.

Nicman

  • ASG
  • Hero Member
  • *****
  • Mensajes: 2.529
  • Karma: 0
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #6 en: Diciembre 02, 2007, 02:39:05 am »
a la mier...........xDDD DDDDDDDDDDD
 
¿Qué estás estudiando?

 :o

Panch

  • ASG
  • Hero Member
  • *****
  • Mensajes: 1.474
  • Karma: 2
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #7 en: Diciembre 02, 2007, 03:26:11 am »
Industriales creo recordar q estudiaba no ?
Back ?

vela2

  • Hero Member
  • *****
  • Mensajes: 739
  • Karma: 6
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #8 en: Diciembre 03, 2007, 10:02:00 am »
no, jeje, cambié a Informática en sistemas, porque la otra se me dió de culo.

Panch

  • ASG
  • Hero Member
  • *****
  • Mensajes: 1.474
  • Karma: 2
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #9 en: Diciembre 03, 2007, 08:16:41 pm »
:O Nice... Aunq tb sera jodidilla no ? :P
Back ?

vela2

  • Hero Member
  • *****
  • Mensajes: 739
  • Karma: 6
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #10 en: Diciembre 03, 2007, 09:16:23 pm »
Es algo mas facil, pero poco jejej

vela2

  • Hero Member
  • *****
  • Mensajes: 739
  • Karma: 6
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #11 en: Diciembre 07, 2007, 06:52:32 pm »
Ya tengo terminado mi programa, pero hay un error que no encuentro, por el cual me dice que Hau progresion de razón 2 en la linea 1 (6 12 24) y en el renglón siguiente me pone que no hay progresión, algo hay mal en algun bucle, y no soy capaz de verlo, aki supongo que me podrá ayudar cualquier programador:

EDITADO: He suprimido el programa porque hay mucha gente buscando el programa y no quiero que lo copien.
« Última modificación: Diciembre 09, 2007, 08:54:01 pm por vela2 »

Munrox

  • Administrator
  • Hero Member
  • *****
  • Mensajes: 14.093
  • Karma: 323
    • Ver Perfil
    • Velmad
Re: Ayuda Programadores (Pascal)
« Respuesta #12 en: Diciembre 07, 2007, 09:20:12 pm »
Intenta poner más claro el código, hasta donde llega cada bucle (que tiene dentro) y cada if, sería más fácil seguirlo. Creo que el error va por ahí.

Vachy

  • Hero Member
  • *****
  • Mensajes: 570
  • Karma: -4
    • Ver Perfil
    • VachySoft
Re: Ayuda Programadores (Pascal)
« Respuesta #13 en: Diciembre 10, 2007, 01:46:00 am »
Ven PASCAL... porque no les enseñan a programar con dos palitos??? yo empece con basic  :P era un rompecabezas.

Logias Emrys

  • ASG
  • Hero Member
  • *****
  • Mensajes: 1.330
  • Karma: -25
    • Ver Perfil
Re: Ayuda Programadores (Pascal)
« Respuesta #14 en: Enero 02, 2008, 08:21:20 pm »
Si lo escribis en chino me entero de lo mismo.

Pimba, no te enteras de nada joder !!!, estan hablando del pescado fresco en el mercado y su relacion con el jamon de pata negra, ya que las bragas de seda estan subiendo por las nubes, y esto puede probocar que el Imperio farmaceutico de los preservativos se multiplique. Ya que usando el logarismo del olor a pescadilla impregnado en las bragas de raso (recordemos que las de seda estan caras), la gente usa condones despues de comerse un bocadillo de jamon, lo cual crea que la ereccion sea tipica española y reviente el preservativo.

A esto hay que sumarle la progresion del tiempo, y dividirla por tu velocidad de ADSL., el total da igual, se tira a la basura la hoja y te pones un cubatita, imaginandote un "pescaito fresco" el cual puedes ver por internet a la velocidad de tu moden. Para lo cual, el Pascal no sirve y tienes que utilizar el JAVA, ya que la mayoria de las peliculas porno se descargan con ese sistema.

Espero que esto hos ayude un poquito a entender la informatica, la cual "solitario" es un excelente programador y "matematiko" calcula el angulo de inclinacion perfecta de la muñeca, llevandonos a la "anarquia" de Vachy, y a poner rumbo a toda "vela(2)"

Un saludo desde el CAOS, Logias Emrys