elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: 1 [2]
11  Media / Diseño Gráfico / Pregunta un poco idiota. en: 12 Enero 2006, 02:12 am
Buenas.

A mos a ver... Como co*ñ* se crean templates en photoshop? Una idea general, no necesito una explicación detallada (ya me busco yo las castañas).

Idea que yo tengo:
Ejecutamos Photoshop (xD).

Que tamaño le damos al documento? (primera duda).

Nos ponemos a cacharear (barras, delimitación de donde va a estar el menú, que va a estar en el centro de la pagina etc etc). No?

Por ultimo, guardad para Web.

Y lo que yo haría luego... Abrir Dreamweaver (pagina html normal, dividida en frames o lo que sea), insertar la imagen del Potoshop, y luego guardar como plantilla, para luego usarla en el resto de las paginas...

Esto mismo, pero para PHP ya ni me lo imagino, pero por que no se nada de php, cuando sepa algo, pregunto.

Voy muy desencaminado?

Salu2.
12  Media / Diseño Gráfico / Creación Web en Flash. en: 28 Diciembre 2005, 15:23 pm
Buenas.

Después de buscar en el foro, de mirar las chinchetas y de patearme google... Alguien sabe de algún manual en el cual se trate el tema de la creación Web con flash? Hablo de “montar” la Web entera en flash (a pesar de que por estos lares hay muchos retractores a esa idea, pero yo quiero hacerlo).

Salu2.
13  Programación / Ejercicios / Registros en Pascal en: 26 Diciembre 2005, 02:04 am
Problema con codigo que no consigo sacar.

Esto es lo que yo e hecho:

Código:
program cuadros;

const
     tamcoleccion=3;

type

    Tcuadro=record
              NumCuadro:integer;
              Titulo:string;
              Autor:string;
              Precio:real;
    end;
             
    Tcoleccion= array [1..tamcoleccion] of Tcuadro;


procedure lee_cuadro(Var cuadros:Tcuadro);

begin
     writeln;
     write(' Numero de cuadro: ');
     readln(cuadros.NumCuadro);
     write(' Titulo cuadro: ');
     readln(cuadros.Titulo);
     write(' Autor: ');
     readln(cuadros.Autor);
     write(' Precio: ');
     readln(cuadros.Precio);
     writeln;
end;

procedure imprime_cuadro(cuadros:Tcuadro);

begin
     writeln;
     writeln(cuadros.NumCuadro,': ',cuadros.Titulo);
     writeln('   Autor: ',cuadros.Autor);

     if cuadros.Precio=0 then
        writeln('   Precio: No en venta')
     else
         writeln('   Precio: ',cuadros.Precio:0:2);

     writeln('---');
end;

procedure lee_coleccion (VAR lectura:Tcoleccion;tamcoleccion:integer);

var
   i:integer;
   
begin
     for i:=1 to tamcoleccion do
         lee_cuadro(lectura[i]);
end;

procedure imprime_coleccion (lectura:Tcoleccion;tamcolecion:integer);

var
   i:integer;
   
begin
     for i:=1 to tamcoleccion do
         imprime_cuadro(lectura[i]);
end;

function suma_coleccion(lectura:Tcoleccion;tamcoleccion:integer;VAR no_en_venta:real):real;

var
   i:integer;

begin
     for i:=1 to tamcoleccion do
         if no_en_venta=0 then
            no_en_venta:=i;
     
     for i:=1 to tamcoleccion do
         suma_coleccion:=suma_coleccion+lectura[i].cuadros.precio;
end;



var
   coleccion1:Tcoleccion;
   suma:real;
   no_en_venta:real;

begin
     writeln('>Datos primera coleccion: ');
     lee_coleccion(coleccion1,tamcoleccion);

     writeln('>Datos de los cuadros: ');
     imprime_coleccion(coleccion1,tamcoleccion);
     
     suma:=suma_coleccion(coleccion1,tamcoleccion,no_en_venta);

     writeln('La suma es: ',suma:0:2);
     writeln('Y hay ',no_en_venta,' cuadro no en venta');

end.


Tengo que hacer esto:


Añadir al programa anterior una función de nombre suma_coleccion. Esta función devuelve como resultado de la función el valor total de la colección. Pero como es posible que algunos cuadros no estén a la venta, esta función además devolverá como parámetro por referencia el número de cuadros que no están en venta.


Y llamarlo de esta manera, y no puedo hacerlo de otra:

Código:

 (* -- Cálculo de la suma  --*)
  suma := suma_coleccion(coleccion1, TAMCOLECCION, no_en_venta);
 
  (* -- Presentación de resultados --*)
  writeln('>Datos de los cuadros');
  imprime_coleccion(coleccion1, TAMCOLECCION);

  writeln('> La suma es: ', suma:0:2);
  writeln('> Y hay ', no_en_venta, 'cuadro no en venta');


De lo que yo e codeado, se que todo funciona menos la función suma_coleccion que se me solicita codear y llamar de esa precisa manera...

Ideas?

Lo de
Código:
   
for i:=1 to tamcoleccion do
   if no_en_venta=0 then
          no_en_venta:=i;
está claro que no es así pero no se me ocurre ninguna manera..

Y por que no me deja llamar asi
Código:
lectura[i].cuadros.precio;
al registro precio?

Salu2.
14  Programación / Ejercicios / Arrays en Pascal en: 9 Diciembre 2005, 19:05 pm
Buenas...
Esto va mas que nada dirigido a jvchino, que al pobre lo tengo abrasado ya... (mis disculpas).

Bueno, tengo que codificar un programa que gestione dos tablas, y el resultado debe ser algo como esto:

   
   
   Coleccion 1:
   Introduza los precios
   Cuadro 1: 100
   Cuadro 2: 200
   Cuadro 3: 300
   Cuadro 4: 400
   Coleccion 2:   
   Introduza los precios
   Cuadro 1: 300
   Cuadro 2: 500
   Cuadro 3: 600
   Cuadro 4: 1000
   Coleccion 2 vale mas que coleccion 1
   Introduzca el precio a buscar en las tablas (cero para terminar): 200
   Coleccion 1:
   > Encontrado precio 200.0 en cuadro 2
   Coleccion 2:
   > Precio 200.0 no encontrado.
   Introduzca el precio a buscar en las tablas (cero para terminar): 600
   Coleccion 1:
   > Precio 600.0 no encontrado.
   Coleccion 2:
   > Encontrado precio 600.0 en cuadro 3
   Introduzca el precio a buscar en las tablas (cero para terminar): 300
   Coleccion 1:
   > Encontrado precio 300.0 en cuadro 3
   Coleccion 2:
   > Encontrado precio 300.0 en cuadro 1
   Introduzca el precio a buscar en las tablas (cero para terminar): 50
   Coleccion 1:
   > Precio 50.0 no encontrado.
   Coleccion 2:
   > Precio 50.0 no encontrado.
   Introduzca el precio a buscar en las tablas (cero para terminar): 0
   Coleccion 1:
   > Precio 0.0 no encontrado.
   Coleccion 2:
   > Precio 0.0 no encontrado.
   


Y “mi”, codigo;

Código:

program galeria;

const
     tamcoleccion=4;

type
    coleccion=array[1..tamcoleccion] of integer;
    coleccion2=array[1..tamcoleccion]of integer;

var
   muestratablas:coleccion;

procedure lee_tabla(VAR Lectura1:coleccion;lectura2:coleccion2;tamcoleccion:integer);

var
   i:integer;
   o:integer;
   sumatab1:integer;
   sumatab2:integer;

begin

     writeln('--Coleccion 1--');
     writeln('Introduzca los precios');
     writeln;
     for i:=1 to tamcoleccion do
     begin
      write('Cuadro ',i,': ');
      readln(lectura1[i]);
          sumatab1:=sumatab1+lectura1[i];
     end;
     writeln;
     
     writeln('--Coleccion 2--');
     writeln('Introduzca los precios');
     for o:=1 to tamcoleccion do
     begin
          write('Cuadro ',o,': ');
          readln(lectura2[o]);
          sumatab2:=sumatab2+lectura2[o];
     end;
     writeln;
     
     if sumatab1 > sumatab2 then
        writeln('Coleccion 1 vale mas que coleccion 2');

     if sumatab1 < sumatab2 then
        writeln('Coleccion 2 vale mas que coleccion 1');
        writeln;
end;

(*Estre procedimiento, lo codeo jvchino, para otro ejercicio que era similar, yo lo e intentado adaptar, pero no soy capaz...*)
procedure busca_precios (Lectura1:coleccion;lectura2:coleccion2;tamcoleccion:integer);

var
   i:integer;
   o:integer;
   busca:real;
   encontrado:boolean;

begin
     write('Introduzca el precio a buscar en las tablas (0 para terminar)');
     readln(busca);

     while (busca>0) do
     begin
          encontrado:=false;
          writeln('Coleccion 1: ');
          for i:=1 to tamcoleccion do
              if busca=lectura1[i] then
               begin
                    writeln('Encontrado precio ',busca:0:1,' en cuadro ',i);
                    encontrado:=true;
               end;

                        if not encontrado then
                            writeln('Precio ',busca:0:1,' no encontrado');

          writeln('Coleccion 2: ');
          for o:=1 to tamcoleccion do
              if busca=lectura2[o] then
              begin
                   writeln('Encontrado precio ',busca:0:1,' en cuadro ',o);
                   encontrado:=true;
              end;

                        if not encontrado then
                            writeln('Precio ',busca:0:1,' no encontrado');
     end;
end;
begin
     lee_tabla(muestratablas,muestratablas,tamcoleccion);
     busca_precios(muestratablas,muestratablas,tamcoleccion);
end.



Pues el primer problema... Hice un for justa al comienzo del procedimiento busca_precios, para ver que tenia dentro la tabla lectura2
Código:
for o:=1 to tamcoleccion do
       Writeln(lectura2[o]);
Pues tiene cojones la cosa, que esa tabla, dentro de ese procedimientos, tiene los mismos valores que la tabla lectura1   (en el primer procedimiento no, la tabla1 tiene guardados los valores que se le metieron, y la tabla2 los suyos, pero la uso en este procedimiento... Y a tomar por culo)

El segundo problema... Si compilais el programa, toda salta bien hasta ‘Introduzca el precio a buscar en las tablas (0 para terminar)... Si metes por ejemplo 100, a parte de que se produce un bucle que no para, suelta
Colección 1:
Encontrado precio 100 en cuadro ‘el que sea en este caso’
Colección 2:
Encontrado precio 100 en cuadro ‘el que sea en este caso’

Bueno esto es por lo de antes, por que como los valores de lectura1 pasan también a lectura2, pues es lo mismo... Lo que no entiendo es por que lo del bucle infinito... Sin esos dos problemas... Tendría que funcionar...

Salu2.
15  Programación / Ejercicios / Ejercicios Pascal en: 3 Diciembre 2005, 17:51 pm
Buenas.

A continuación os voy a poner una serie de ejercicios en Pascal. Son de nivel básico. Irán clasificados por bloques, y mas o menos lo que se usa en cada bloque(está claro que por ejemplo, los ejercicios del bloque tres, implicarán cosas del bloque dos y uno a la fuerza).

No son de mi creación, y yo hasta la fecha, solamente e resuelto hasta el bloque 6, y alguno del bloque 7 (con ayuda de algún miembro de este foro, no lo nombro así directamente, que si no lo abrasáis fijo xD). Por circunstancias no puedo nombrar la fuente de los ejercicios.

Empezamos



BLOQUE 1.- PRIMER PROGRAMA EN PASCAL

En este bloque se pretende usar las sentencias básica de escritura (write) y de lecuta (read),  y codificar el “cuerpo” de un programa pascal  (begin-end..).

Ejercicio1:  

Partiendo de este código:
 
Código:
Program Bienvenido;
Var
   nombre: string[40];
Const
    HOLA='Bienvenido al mundo';
begin
      write('Introduzca su nombre: ');
      readln(nombre);
      writeln(HOLA,' ', nombre);
end.

Se solicitita que se le añada:

   - Sentencias para que, además del nombre solicite al usuario el aula dónde se ha matriculado, su dirección y que todo eso se presente por pantalla, llamando también a la constante HOLA.

El resultado tiene que ser similar a esto:

     
         Introduzca su nombre: pepe
   Introduzca su aula: 7
   Introduzca su dirección: C/Las peras

   Bienvenido alumno pepe
   Te conectas desde el aula numero: 7
   Tu dirección es: C/Las peras




BLOQUE 2.- TIPOS Y SENTENCIAS.

En este bloque se manejan los tipos de datos que tiene pascal, así como alguna de las expresiones básicas (en este caso aritméticas).

Ejercicio1:

Codificar un programa que solicite al usuario dos valores numéricos y calcule el valor medio, que es la suma de ambos dividida por dos.

El resultado debe ser similar a esto:

   Introduce el primer valor numerico: 5
   Introduce el segundo valor numerico: 2
   La media de ambos numero es: 3,50

Ejercicio2:

Realizar un programa que calcule un valor de tipo numérico que nos indicará el peso relativo de una persona. El programa solicitará al usuario sus datos personales (nombre y edad), su altura y su peso (el peso relativo se calcula dividiendo el peso por el cuadrado de la altura.

El resultado debe ser similar a esto:

   Introduzca su nombre: pepe
   Introduzca su edad: 20
   Introduzca su altura en m: 1.70
   Introduzca su peso en Kg: 80

   Hola pepe
   Tu edad es 20, tu peso 80 y tu altura 1.70.
   Tu peso relativo es: 27.68.

Ejercicio 3:

Codificar un programa que solicite al usuario una cantidad en pesetas y calcule y presente por pantalla el equivalente en euros.

El resultado debe ser similar a esto:

         Introduzca una cantidad en pesetas: 2000
   Son 12.02 euros.




BLOQUE 3.- ESTRUCTURAS DE CONTROL

En este bloque es necesario usar las estructuras de control que disponemos en pascal (sentencias selectivas y bucles).

Ejercicio1:

Realizar un programa que utilizando una estructura repetitiva (bucle) presente por pantalla los números del 1 al 10 separados por un guión.

El resultado debe ser similar a esto:

   1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 -

Ejercicio2:

Modifique el programa previo para que solicite al usuario desde y hasta que número quiere presentar por pantalla.

El resultado debe ser similar a esto:

   Introduzca valor inicial: 6
   Introduzca valor final: 14
   6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 -

Ejercicio3:

Utilizando la estructura selectiva múltiple (case) realizar un programa que solicite al usuario una vocal, y presente por pantalla un mensaje indicando el orden de la vocal y la vocal pulsada. Si pulsamos a, deberá indicar que es la primera vocal, e la segunda, i la tercera, etc.

El resultado debe ser similar a esto:

         Introduzca una letra: e
   Ha pulsado la segunda vocal, e

Ejercico4:

Se propone, utilizando sentencias selectivas, modificar el ejercicio del 2 del BLOQUE2. Deberá, en función del valor del peso relativo, indicar si estamos en un peso adecuado, por encima o por debajo. Puede suponer que el peso relativo deberá estar entre dos valores que pueden definir como constantes, PESOMIN y PESOMAX, que serán inicialmente 20 y 26.

El resultado deber ser similar a:

         Introduzca su nombre: pepe
   Introduzca su edad: 19
   Introduzca su altura en m: 1.70
   Introduzca su peso en kg: 80
   Hola pepe.
   Tu edad es 19, tu peso 80 y tu altura 1.70.
   Tu peso relativo es: 27.68.
   Peso por encima de lo recomendado


-------------------------------------------------------------------

   (ejemplo de resultado con otro peso y otra altura)
   
   Introduzca su nombre: pepe
   Introduzca su edad: 19
   Introduzca su altura en m: 1.70
   Introduzca su peso en kg: 70
   Hola pepe.
   Tu edad es 19, tu peso 70 y tu altura 1.70.
   Tu peso relativo es: 24.22.
   Peso correcto.


-----------------------------------------------------------------
   (otro ejemplo con otro peso y otra altura)

   Introduzca su nombre: pepe
   Introduzca su edad: 19
   Introduzca su altura en m: 1.70
   Introduzca su peso en kg: 40
   Hola pepe.
   Tu edad es 19, tu peso 40 y tu altura 1.70.
   Tu peso relativo es: 13.84.
   Peso por debajo de lo recomendado.

Ejercicio5:

Se propone modificar el ejercicio anterior. El programa deberá solicitar al usuario si desea repetir todo el proceso de petición de datos y cálculo de resultados.

El resultado  debe ser similar a esto:

   Introduzca su nombre: Arturo
   Introduzca su edad: 26
   Introduzca su peso en Kg.: 66
   Introduzca su altura en m: 1.70
   Hola Arturo
   Tu edad es 26, tu peso 66.00 y tu altura 1.70
   Tu peso relativo es 22.84
   Peso correcto.

Desea continuar (S/N): S



   Introduzca su nombre: Alice
   Introduzca su edad: 24
   Introduzca su peso en Kg.: 54
   Introduzca su altura en m: 1.6
   Hola Alice
   Tu edad es 24, tu peso 54.00 y tu altura 1.60
   Tu peso relativo es 21.09
   Peso correcto.

Desea continuar (S/N): n

Ejercicio6:

Suponga que desea saber que "perfil" tienen sus llamadas telefónicas. Para ello realizará un programa que solicite la duración de las llamadas y calcule:
   la duración total de sus llamadas
   el valor medio
   el número total de llamadas
   y los presente por pantalla.

El resultado  debe ser similar a esto:

   Duración de la llamada (0 para terminar): 5
   Duración de la llamada (0 para terminar): 10
   Duración de la llamada (0 para terminar): 15
   Duración de la llamada (0 para terminar): 20
   Duración de la llamada (0 para terminar): 0

    > Numero de llamadas:  4
    > Duración total:  50.0
    > Duración media:  12.5

Ejercicio7:

Añadir al programa anterior lo necesario para que clasifique las llamadas en Nacionales (N), Provinciales (P) y Locales (L) y realizar los mismo cálculos que antes para cada tipo de llamada (duración y numero de llamadas Nacionales, duración y numero de llamadas Provinciales y duración y numero de llamadas Locales). El programa también debe solicitar, después de presentar los resultados, si se desea realizar de nuevo todo el proceso anterior.

El resultado debe ser similar a esto:
   
   Introduzca la duración de la llamada en minutos (0 para terminar): 5
   Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p

   Introduzca la duración de la llamada en minutos (0 para terminar): 15
   Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: n

   Introduzca la duración de la llamada en minutos (0 para terminar): 20
   Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: l

   Introduzca la duración de la llamada en minutos (0 para terminar): 40
   Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p

   Introduzca la duración de la llamada en minutos (0 para terminar): 0



   -Especificación llamadas Nacionales, Provinciales y Locales-

   El numero de llamadas nacionales a sido: 1 y su duración: 15.00 minutos.
   El numero de llamadas provinciales a sido: 2 y su duración: 45.00 minutos.
   El numero de llamadas locales a sido: 1 y su duración: 20.00 minutos.

   -Totales-

   Numero de llamadas: 4
   Duración total: 80.00 minutos.
   Duración media: 20.00 minutos.

   Desea continuar para realizar otra lista de llamadas? S/N: n




BLOQUE 4.-  SUBPROGRAMAS (Procedimientos y Funciones)

En este bloque, para la resolución de los problemas se solicita el uso de procedimientos y funciones.

Ejercicio1:

Cree una función de nombre peso_relativo que calcule el peso relativo de una persona. Esta función recibirá como parámetros por valor el peso y la altura de la persona. Devolverá como resultado de la función el valor del peso relativo. Pude usar el programa del bloque2 ejercicio2   para definir y utilizar esta función.

El resultado debe ser similar a esto:

   Introduzca su nombre: Arturo
   Introduzca su edad: 26
   Introduzca su peso en Kg: 66
   Introduzca su altura en m: 1.70
   Hola Arturo
   Tu edad es 26, tu peso 66.00 y tu altura 1.70
   Tu peso relativo es 22.84

Ejercico2:

Codificar un conversor de pesetas a euros, y de euros a pesetas. Para ello se exige programar dos funciones que se llamarán Función calcula_euros y Función calcula_pesetas.

El resultado será similar a esto:

   Para convertir:
        1. Pasar de pesetas a euros.
        2. Pasar de euros a pesetas.

                   Opcion: 2

Introduzca cantidad en euros: 30
Son 4992 pesetas.

Ejercico3:

Codificar un programa, que solicite dos números y presente por pantalla la suma de ambos. El calculo de la suma deberá realizarse dentro de un procedimiento de nombre calculo, y los resultados se deberán presentar invocando a otro procedimientos de nombre presenta_resultados (este ultimo procedimiento no debe recibir como parámetros ni el primer, ni el segundo numero.)

El resultado será similar a esto:

   Introduzca el primer numero:
   3
   Introduzca el segundo numero:
   6
   El resultado de la suma es: 9.00

Ejercicio4:

A partir del programa anterior cree otro,  que presente además del resultado de la suma también el de la resta, multiplicación y división. Deberá modificar los procedimientos calculo y presenta_resultados como sea necesario, pero sin introducir ningún procedimiento ni función adicional. Recuerde que la impresión de los resultados hay que hacerla en el procedimiento presenta_resultados, y que este no debe recibir como parámetros ni el primer numero, ni el segundo numero)

El resultado debe ser similar a esto:

   Introduzca el primer numero:
   6
   Introduzca el segundo numero:
   3
   El resultado de la suma es: 9.00
   El resultado de la resta es: 3.00
   El resultado de la multiplicacion es: 18.00
   El resultado de la division es: 2.00

Ejercicio5:

Cree un programa con un procedimiento que imprima una línea de una cierta longitud compuesta por un determinado carácter.

Para ello el procedimiento, de nombre línea, recibirá dos parámetros: el carácter a imprimir y la longitud.

El resultado debe ser similar a esto:

   Introduzca longitud de la línea: 20
   Introduzca carácter: *

   ********************

Ejercicio6:

Crear un programa que imprima un triángulo.

El resultado debe ser similar a esto:

   Introduzca altura del triangulo: 7
   Introduzca letra: +

   +
   ++
   +++
   ++++
   +++++
   ++++++
   +++++++



   
BLOQUE 5.-TABLAS (o arrays)

Uso de tablas, arrays o matrices.

Ejercicio1:

Cree un programa que utilice una tabla donde se almacenarán los precios de una colección de cuadros. Para ello será necesario:
Definir una constante de nombre TAMCOLECCION que representa el número de cuadros que tendrán las colecciones. Puede comenzar definiendo esta constante con un valor de 4.
Un tipo de datos de nombre colección que será una tabla de tamaño TAMCOLECCION. Cada elemento almacena el precio de un cuadro, y el número del cuadro coincide con su posición en la tabla.

Además se deberá codificar en este primer ejercicio:

Un procedimiento de nombre lee_tabla que solicite al usuario que introduzca los precios de la colección de cuadros. Este procedimiento debe recibir como parámetros la tabla donde almacenar los precios, y el número de cuadros a leer.
Un procedimiento de nombre imprime_tabla que presente por pantalla los precios de la colección de cuadros, junto al número de cuadro. Este procedimiento, de forma similar al anterior, recibe como parámetros la tabla y el número de cuadros.

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 1200
   Cuadro 2: 2400
   Cuadro 3: 500
   Cuadro 4: 850
   > Precio cuadro 1: 1200.00
   > Precio cuadro 2: 2400.00
   > Precio cuadro 3: 500.00
   > Precio cuadro 4: 850.00

Ejercicio2:

Partiendo del programa anterior, añada una función de nombre suma_coleccion que recorra la tabla y devuelva como resultado de la función el valor total de la colección de cuadros. Modifique a continuación el programa principal para que después de leer e imprimir la tabla, calcule la suma de la colección utilizando esta función, y la imprima por pantalla.

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 125
   Cuadro 2: 250
   Cuadro 3: 375
   Cuadro 4: 450
   > Precio cuadro 1: 125.00
   > Precio cuadro 2: 250.00
   > Precio cuadro 3: 375.00
   > Precio cuadro 4: 450.00
   > Valor coleccion: 1200.00

Ejercicio3:

Ahora se propone al alumno que realice un procedimiento de nombre busca_minimo que busque dentro de una colección de cuadros el cuadro más barato, e imprima por pantalla el número de ese cuadro y su precio. Este procedimiento, como los previos, recibe la tabla de precios y el número de cuadros.

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 100
   Cuadro 2: 200
   Cuadro 3: 300
   Cuadro 4: 85
   > Precio cuadro 1: 100.00
   > Precio cuadro 2: 200.00
   > Precio cuadro 3: 300.00
   > Precio cuadro 4: 85.00
   > Valor coleccion: 685.00
   > El precio del cuadro 4 es el minimo y cuesta 85.00

Ejercicio4:

 Introduzca al ejercicio anterior un procedimiento de nombre limites que devolverá como parámetros por referencia el máximo y el mínimo de la colección.

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 400
   Cuadro 2: 275
   Cuadro 3: 225
   Cuadro 4: 350
   > Precio cuadro 1: 400.00
   > Precio cuadro 2: 275.00
   > Precio cuadro 3: 225.00
   > Precio cuadro 4: 350.00
   El maximo es 400.0 y el minimo 225.0

Ejercicio5:

Deberá codificar un procedimiento de nombre busca_precio para un cliente que desea gastar una cantidad exacta . Este procedimiento recibe como parámetro la cantidad a buscar en la tabla. Presentará por pantalla un mensaje cada vez que al recorrer la tabla encuentre un cuadro con el precio buscado, indicando su precio y su número. Si no encuentra ningún libro, deberá presentar un único mensaje al final del procedimiento indicando tal circunstancia.
Además se deberá incluir la petición de búsqueda en un bucle que solicite la petición del precio a buscar hasta que el usuario introduzca el valor cero.

El resultado debe ser similar a esto:

   Cuadro 1: 150
   Cuadro 2: 200
   Cuadro 3: 150
   Cuadro 4: 400
   > Precio cuadro 1: 150.00
   > Precio cuadro 2: 200.00
   > Precio cuadro 3: 150.00
   > Precio cuadro 4: 400.00
   El maximo es 400.0 y el minimo 150.0
   Introduzca el precio a buscar en la tabla (cero para terminar): 200
   > Encontrado precio 200.0 en cuadro 2
   Introduzca el precio a buscar en la tabla (cero para terminar): 100
   > Precio 100.0 no encontrado.
   Introduzca el precio a buscar en la tabla (cero para terminar): 150
   > Encontrado precio 150.0 en cuadro 1
   > Encontrado precio 150.0 en cuadro 3
   Introduzca el precio a buscar en la tabla (cero para terminar): 0
   > Precio 0.0 no encontrado.

Ejercicio6:

Modificar el ejercicio 4 para que el procedimiento límites además devuelva como parámetros por referencia la posición en la tabla (el número del cuadro) donde se producen el máximo y el mínimo.

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 350
   Cuadro 2: 175
   Cuadro 3: 650
   Cuadro 4: 400
   > Precio cuadro 1: 350.00
   > Precio cuadro 2: 175.00
   > Precio cuadro 3: 650.00
   > Precio cuadro 4: 400.00
   El maximo es 650.0 en la posicion 3
   El minimo es 175.0 en la posicion 2

Ejercicio7:

 Codificar ahora un programa que gestione 2 colecciones de cuadros. Usando las funciones y procedimientos de los ejercicios previos deberá:
   Solicitar los datos de las dos colecciones.
   Presentar un mensaje por pantalla indicando que colección vale más dinero.
   Buscar un cuadro de un precio determinado en las dos colecciones.
No se podrá codificar funciones ni procedimientos adicionales, y por lo tanto sólo se podrá modificar el programa principal y la sección de variables globales.

El resultado debe ser similar a esto:

   Coleccion 1:
   Introduzca los precios
   Cuadro 1: 100
   Cuadro 2: 200
   Cuadro 3: 300
   Cuadro 4: 400
   Coleccion 2:
   Introduzca los precios
   Cuadro 1: 300
   Cuadro 2: 500
   Cuadro 3: 600
   Cuadro 4: 1000
   Coleccion 2 vale mas que coleccion 1
   Introduzca el precio a buscar en las tablas (cero para terminar): 200
   Coleccion 1:
   > Encontrado precio 200.0 en cuadro 2
   Coleccion 2:
   > Precio 200.0 no encontrado.
   Introduzca el precio a buscar en las tablas (cero para terminar): 600
   Coleccion 1:
   > Precio 600.0 no encontrado.
   Coleccion 2:
   > Encontrado precio 600.0 en cuadro 3
   Introduzca el precio a buscar en las tablas (cero para terminar): 300
   Coleccion 1:
   > Encontrado precio 300.0 en cuadro 3
   Coleccion 2:
   > Encontrado precio 300.0 en cuadro 1
   Introduzca el precio a buscar en las tablas (cero para terminar): 50
   Coleccion 1:
   > Precio 50.0 no encontrado.
   Coleccion 2:
   > Precio 50.0 no encontrado.
   Introduzca el precio a buscar en las tablas (cero para terminar): 0
   Coleccion 1:
   > Precio 0.0 no encontrado.
   Coleccion 2:
   > Precio 0.0 no encontrado.
   
Ejercicio8:

Tendrá que completar el siguiente programa principal heredado de los ejercicios previos:

Código:
(*-- Programa Principal -- *)
Begin
  lee_tabla(precios1, TAMCOLECCION);
  writeln('La suma de los tres primeros es  ',                           );
  writeln('La suma desde el segundo hasta el ultimo es ',                          );
End.

Haciendo uso de las funciones previas, complete (y compruebe) esta expresión para que imprima el valor de la suma de los tres primeros cuadros de una colección:
 
Código:
writeln('La suma de los tres primeros es  ',                            );

Haciendo uso de las funciones previas, complete (y compruebe) esta expresión para que imprima el valor de la suma de los cuadros desde el segundo hasta el último:

Código:
writeln('La suma desde el segundo hasta el ultimo es ',                        );

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 20
   Cuadro 2: 30
   Cuadro 3: 40
   Cuadro 4: 50
   La suma de los tres primeros es  90.0
   La suma desde el segundo hasta el ultimo es 120.0




BLOQUE 6.-REGISTROS

En este bloque se nos solicitará usar registros.

Ejercicio1:

Crear un programa que utilice un registro para almacenar la información de un cuadro. Será necesario:
Definir un tipo de datos Tcuadro, registro cuyos campos almacenen la información necesaria de un cuadro:
   Número del cuadro
   Título
   Autor
   Precio

Un procedimiento de nombre lee_cuadro que solicite al usuario que introduzca los datos de un cuadro, y los almacene en los campos de un registro que recibe el procedimiento como parámetro.

Un procedimiento de nombre imprime_cuadro que presente por pantalla los datos de un cuadro que recibe como parámetro. Tendrá la particularidad de que si el precio es cero significa que el cuadro no está en venta, y así deberá indicarse:

Deberá incluirlo todo en un programa que solicite los datos de dos cuadros y los imprima por pantalla (utilizando los procedimientos previos). Además deberá presentar por pantalla la suma de los precios de los dos cuadros

El resultado debe ser similar a esto:

   >Datos primer cuadro
    Numero: 1
    Titulo: Alambradas
    Autor: Raul Etam
    Precio: 0
   >Datos segundo cuadro
    Numero: 2
    Titulo: Tentativas
    Autor: Felicia Aller
    Precio: 1100
   >Datos de los cuadros
   1: Alambradas
     Autor: Raul Etam
     Precio: No en  venta
   ---
   2: Tentativas
     Autor: Felicia Aller
     Precio: 1100
   ---
   > La suma es: 1100.00

Ejercicio2:

Basándonos en el ejercicio anterior, este se mejora utilizando una tabla de registros para almacenar la información de una colección de cuadros.

Se deberá codificar:
Un tipo de datos de nombre Tcoleccion que representará una tabla de registros Tcuadro. El tamaño de la tabla se representará por una constante de nombre TAMCOLECCION, que inicialmente puede valer 3.
Un procedimiento de nombre lee_coleccion que, utilizando el procedimiento lee_cuadro, solicite al usuario que introduzca los datos de la colección de cuadros.
Un procedimiento de nombre imprime_coleccion que, utilizando el procedimiento imprime_cuadro presente por pantalla los datos de la colección de cuadros.

También se solicita añadir al programa anterior una función de nombre suma_coleccion. Esta función devuelve como resultado de la función el valor total de la colección. Pero como es posible que algunos cuadros no estén a la venta, esta función además devolverá como parámetro por referencia el número de cuadros que no están en venta.

El resultado debe ser similar a esto:

   >Datos primera coleccion
    Numero: 1
    Titulo: Primavera
    Autor: P. Freire
    Precio: 1200
    Numero: 2
    Titulo: Verano
    Autor: Jose Artes
    Precio: 2345
    Numero: 3
    Titulo: Invierno
    Autor: Alma Blanca
    Precio: 0
   >Datos de los cuadros
   1: Primavera
     Autor: P. Freire
     Precio: 1200
   ---
   2: Verano
     Autor: Jose Artes
     Precio: 2345
   ---
   3: Invierno
     Autor: Alma Blanca
     Precio: No en  venta
   ---
   > La suma es: 3545.00
   > Y hay 1  cuadro no en venta

Ejercicio3:

Crear un procedimiento busca_autor que recorra la tabla buscando los cuadros de un determinado autor. El nombre se solicita al usuario en el programa principal, y ese nombre lo recibe el procedimiento como parámetro.

Cada vez que encuentre una cuadro del autor deberá presentar en pantalla los datos del cuadro. Si no encuentra ningún cuadro de ese artista, deberá presentar un único mensaje indicando tal circunstancia.

La petición de autor a buscar y búsqueda se deberá incluir en un bucle que permita la repetición de la búsqueda.

El resultado debe ser similar a esto:

   Datos primera coleccion
    Numero: 1
    Titulo: Invierno
    Autor: Laimez
    Precio: 1200
    Numero: 2
    Titulo: Verano
    Autor: Lambier
    Precio: 2300
    Numero: 3
    Titulo: Primavera
    Autor: Lopez
    Precio: 10500
   Autor a buscar? (RC para terminar) Goya
   Autor  Goya no encontrado.
   Autor a buscar? (RC para terminar)Laimez
   1: Invierno
     Autor: Laimez
     Precio: 1200
   ---
   Autor a buscar? (RC para terminar)
   Autor  no encontrado.

Ejercicio4:

Añadir al programa anterior un procedimiento de nombre calcula_estadisticas. Este procedimiento deberá devolver como información (ya sea como resultado de la función o mediante parámetros):
   El valor total de la colección.
   El número de cuadros que no están a la venta.
   El valor del cuadro de mayor precio
   El valor del cuadro de menor precio (exceptuando los que no están a la venta, que "valen" cero).

El resultado debe ser  similar a esto:

   >Datos primera coleccion
    Numero: 1
    Titulo: La Luna
    Autor: Pelaez
    Precio: 3500
    Numero: 2
    Titulo: Fisgando
    Autor: Clara Lima
    Precio: 2500
    Numero: 3
    Titulo: Carcel
    Autor: Luis Sanz
    Precio: 500
   > La suma es: 6500.00
   > Y hay 0  cuadro no en venta
   > Maximo: 3500.  Minimo: 500

Ejercicio5:

Modificar el ejercicio anterior para:
Modificar la constante TAMCOLECCION para que valga 10
Utilizar dos colecciones de cuadros , coleccion1 y coleccion2.
En vez de tener tamaños fijos, se solicitará por pantalla al usuario que indique el tamaño de cada una de las colecciones: numcuadros1 y numcuadros2, que deberán ser distintos.
Utilice los procedimientos previos teniendo en cuenta esta circunstancia.



BLOQUE 7.- FICHEROS

Pues eso... Usar ficheros xD.

Ejercicio1:

Partiendo de los ejercicios del tema anterior,  los mejoraremos para poder guardar los datos en un fichero una vez que termine la ejecución del programa. Esto permitirá que en una ejecución posterior del programa podamos recuperar esos datos, y no tener que teclearlos de nuevo.

Para esta labor vamos a necesitar:

Definir un fichero binario, cuyo tipo base será el tipo de los registros que almacenan la información de un cuadro, Tcuadro.

Definir un procedimiento de nombre graba_fichero que reciba como parámetros:
   El nombre de un fichero
   La colección o tabla de cuadros
   El número de cuadros de la colección.
Este procedimiento deberá abrir el fichero para escritura, y mediante un bucle recorrer la tabla e ir "escribiendo" cada registro de la colección en el fichero.

Definir un procedimiento de nombre lee_fichero que reciba como parámetros:
   El nombre de un fichero
   La tabla de cuadros o colección
   El número de cuadros de la colección.
Este procedimiento abrirá el fichero para lectura, irá leyendo los datos del fichero registro a registro y los irá almacenando en la tabla colección.

Para probar estos procedimientos deberá crear un programa principal que presente al usuario dos opciones:

Leer del teclado: Se solicitará que se introduzcan los datos de la colección y posteriormente se guardarán eso datos en un fichero, cuyo nombre se solicitará al usuario.

Leer de un fichero: Se solicitará el nombre de un fichero (donde previamente se han guardado los datos de una colección) y presentar por pantalla los datos leídos del fichero.

El resultado debe ser similar a esto:

   Introducir por teclado (T) o leer de fichero(F)? T
   Numero de cuadros ? 2
   >Datos primera coleccion
    Numero: 1
    Titulo: Amanece
    Autor: Jose Luis
    Precio: 2000
    Numero: 2
    Titulo: Verano
    Autor: Marina
    Precio: 1250
   > Nombre Fichero donde guardar
   coleccion.dat

----------------------------------------------------

   (una vez que con la primera ejecución se a leído la colección por teclado y guardado  en un fichero, probamos a  leer desde fichero)

   Introducir por teclado (T) o leer de fichero(F)? F
   > Nombre Fichero donde leer
   coleccion.dat
   >Datos primera coleccion
   1: Amanece
     Autor: Jose Luis
     Precio: 2000
   ---
   2: Verano
     Autor: Marina
     Precio: 1250
   ---

Ejercicio2:

Contar el número de líneas y el número de caracteres de un fichero de texto.
Realizar un programa que abra un fichero de texto para lectura, y lo vaya leyendo línea a línea. Deberá presentar como resultado final el nombre del fichero, el número de líneas y el número de caracteres.

El resultado debe ser similar a esto:

   (usamos un fichero de prueba, prueba.txt)

   C:\cursopro>type prueba.txt
   Linea 1
   Linea 2
   Linea 3 y última

   -------------------------------
   
(ejecutamos el programa para ver si funciona)

   C:\cursopro>nombre_programa-ejercicio2
   Nombre Fichero origen: prueba.txt
   Fichero: prueba.txt 3 30

Ejercicio3:

Se propone realizar un programa que abra un fichero de texto, cree una copia del mismo y añada al final de la copia una cadena de caracteres.
El programa deberá:
   Solicitar el nombre del fichero de entrada, y abrirlo para lectura.

   Solicitar el nombre del fichero destino, comprobar que es distinto del nombre del fichero de entrada, y    si es así abrirlo para escritura.

   Leer línea a línea el fichero de entrada: En cada iteración del bucle leerá una línea del fichero de    entrada y escribirá esa misma línea en el fichero destino.

   Una vez alcanzado el final del fichero origen, se cerrará el mismo y a continuación se añadirá una línea    adicional al fichero destino. Tras añadir esta línea se cerrará también el fichero destino.

Para probar el programa se a  usado el fichero de texto prueba.txt.

El resultado debe ser similar a esto:

   C:\cursopro>nombre_programa-ejercicio2
   Nombre Fichero origen: prueba.txt
   Nombre Fichero destino: copia.txt
   Linea adicional: Esta es la nueva línea

-----------------------------------------------------

   (ejecutamos copia.txt para comprobar si funciona)

   C:\cursopro>type copia.txt
   Linea 1
   Linea 2
   Linea 3 y última
   Esta es la nueva línea




Fin de ejercicios.

Pues nada más... Estos son los ejercicios, quiero recalcar que no son míos, pero por circunstancias no puedo nombrar la fuente... También reiterar que yo solo e resuelto hasta el bloque6 y alguno del bloque7.

Si no consiguen sacar la solución de alguno... Pues ya saben, pregunten en este mismo subforo sus dudas.
Espero que les valgan para algo.

Salu2.
16  Programación / Ejercicios / Pascal+Procedure+Figuritas. en: 26 Noviembre 2005, 02:32 am
Buenas..
Pues otro problema con un ejercicio...
Se me pide que haga un programa (con procedimientos), para que presente por pantalla una “pirámide”. El programa solicita la altura de la pirámide, y con el carácter que se va a realizar... Algo como esto:

Introduzca la altura de la pirámide:7
Introduzca el carácter:#

#
##
###
####
#####
######
#######

Lo más parecido que e hecho es esto:

Código:
program figuritas;

var

    longitud:integer;
    longitud2:integer;
    caracter:char;


procedure figura;

var

   i:integer;

begin
        longitud2:=0;
        for i:=longitud2 to longitud do
          write(',',caracter);
end;

begin
write('Introduzca las veces que desea que se repita un caracter: ');
readln(longitud);

write('Introduzca que caracter desea que se repita: ');
readln(caracter);

figura;
end.



Pero no tengo ni idea de cómo codificarlo para que lo presente con la forma de la pirámide... Imagino que con alguna estructura que valla añadiendo un espacio (writeln(‘’);) entre cada carácter.. O... Es que no se me ocurre nada...
Mira que e hecho ya programas con funciones y procedimientos, y ningún problema... Pero con esta chorrada, ni idea.

A ver si a alguno.
Salu2.
17  Programación / Ejercicios / Pascal+Case Of en: 18 Noviembre 2005, 20:40 pm
Buenas. E modificado el programa teléfono (hace unos días pedí ayuda para este código, pero con otra finalidad, que por cierto gracias a jvchino, que no tuve tiempo de responder en el otro post).

En este nuevo código el programa solicita al usuario la duración de sus llamadas y también que tipo de llama es (Nacional, Provincial o Local). Luego presenta los resultados, por un lado, de las llamadas Nacionales, Provinciales o Locales (su duración y el numero realizado de cada tipo) y por otro, los totales (numero total, duración total y media). Por ultimo solicita al usuario si desea realizar otra lista.

Código:

program telefonos;

var
    (*Variables control TOTALES*)
   numero: integer;
   duracion: real;
   media: real;
   durac_total:real;
   
   (*Variables control Case of, Nacionales, Provinciales o Locales*)
   tipo:integer;
   N:real;
   P:real;
   L:real;
   duracionN:real;
   duracionP:real;
   duracionL:real;

   (*Variable Repeat until*)
   opcion:char;

begin

   repeat

     writeln('');
     write('Introduzca la duracion de la llamada en minutos (0 para terminar): ');
     readln(duracion);




     duracionN:=0;
     duracionP:=0;
     duracionL:=0;
     durac_total:=0;
     while (duracion>0) do

           begin
       write('Introduzca el tipo de llamada. 1:Nacional, 2:Provincial, 3:Local: ');
       readln(tipo);
       writeln('');

                       case (tipo) of
                            1: duracionN:=duracionN+duracion;
                            2: duracionP:=duracionP+duracion;
                            3: duracionL:=duracionL+duracion;
                       else
                       write('Opcion no permitida.');
                       writeln('');
                       writeln('');
                   end;

           if (tipo=1)then N:=N+1;
              if (tipo=2)then P:=P+1;
                if (tipo=3)then L:=L+1;



       write('Introduzca la duracion de la llamada en minutos (0 para terminar): ');


       durac_total:=durac_total+duracion;
       numero:=numero+1;
       readln(duracion);

           end;

       media:=durac_total/numero;
  writeln('');
  writeln('');
  writeln('');
  writeln('-Especificacion llamadas Nacionales, Provinciales y Locales-');
  writeln('');


  writeln('El numero de llamadas nacionales a sido: ',N:0:0,' y su duracion: ',duracionN:3:2,' minutos.');
  writeln('El numero de llamadas provinciales a sido: ',P:0:0,' y su duracion: ',duracionP:3:2,' minutos.');
  writeln('El numero de llamadas locales a sido: ',L:0:0,' y su duracion: ',duracionL:3:2,' minutos.');

  writeln('');
  writeln('-Totales-');
  writeln('');

  writeln('Numero de llamadas: ',numero);
  writeln('Duracion total: ',durac_total:3:2,' minutos.');
  writeln('Duracion media: ',media:3:2,' minutos.');

   writeln('');
   write('Desea continuar para realizar otra lista de llamadas? S/N: ');
   readln(opcion);
   until ((opcion ='N') or (opcion ='n')) ;

end.

Pues bien, no soy capaz (dentro del case of) a codificarlo para que el usuario pueda meter para las Nacionales una N, para las Provinciales una P y para las Locales una L. Sí lo conseguí hacer, si solo hubiera que "almacenar" la duración, o bien el numero pero ambas a la vez no, ya que para sacar el numero de llamadas de cada tipo, e usado la sentencia selectiva if then (lo intente de otras muchas maneras, pero al final la única que se me salio fue esta.)

Al tener que añadir la sentencia if then, la variable "tipo", no puede almacenar datos de tipo "char", (N, P, L), por que se produce un error entre tipos de datos en las variables (ya que en las variables N, P o L se van a almacenar datos de tipo numérico).

Pues nada más... Si me podéis echar una mano...

Salu2.
18  Programación / Ejercicios / Pascal-Ejercico con while do en: 14 Noviembre 2005, 02:56 am
Se me propuso hacer un programa en pascal el cual tiene que hacer esto:

Suponga que desea saber que "perfil" tienen sus llamadas telefónicas. Para ello realizará un programa que solicite la duración de las llamadas y calcule:
-la duración total de sus llamadas
-el valor medio
-el número total de llamadas
-y los presente por pantalla.

Bien, el  “algoritmo” (por llamarlo de alguna manera) que a mí se me ocurrió es el siguiente:

>iniciar los valores de las variables necesarias, numero de llamadas y duración total de todas las llamadas
>leer la primera llamada
>mientras llamada sea mayor que cero
   >incrementar el numero de llamadas en uno
   >incrementar el tiempo total que suman todas las llamadas
   >leer otra llamada
>presentar resultados.

Y el código en pascal:
Código:
program telefonos;

var


   numero: integer;
   duracion: real;
   media: real;


begin

  write('Duracion de la llamada (0 para terminar): ');
  readln(duracion);

  while (duracion>0) do
 
        begin
          numero:=numero+1;
          duracion:=duracion+duracion;
        end;

  media:=numero/duracion;

  writeln('Numero de llamadas: ',numero);
  writeln('Duracion total: ',duracion);
  writeln('Duracion media: ',media);
 
end.

Se compila, pero lo ejecutar y de
Código:
write('Duracion de la llamada (0 para terminar): ');
 readln(duracion);
Ya no pasa...

Sugerencias? Cuantas cosas me encontráis mal?
Si esta mal de la cabeza a los pies, no quiero la solución solo una orientación.

Salu2.
19  Informática / Software / Nero y grabadora en: 11 Enero 2005, 08:17 am
Buenas noches.
Seguramente el problema que les voy a indicar a continuación lo han respondido en otras ocasiones, pero después de echar un vistazo a los post no e encontrado nada.

La cosa es la siguiente. Tengo el NERO5 y tras instalarlo en mi PC (corre bajo Windows XP) no me encuentra la grabadora, entro en el menú grabadoras (o algo así, no recuerdo) donde se supone que tiene que salir una lista con las grabadoras para seleccionarla, pero no aparece ninguna. Ya les adelanto que la grabadora si que funciona, ya que con el programa que traía el sistema, conseguí tostar algún CD (pero quite el programa porque era un asco). Si me pueden decir alguna manera de solucionarlo o el linck (si existe) a algún post relacionado se lo agradecería.

Nada más.
Salu2.
20  Media / Diseño Gráfico / TheGIMP en: 20 Diciembre 2004, 12:08 pm
Este post es para que me den su opinión.

Bueno pues me pondré en breve con algún programa de creación/retoque fotográfico y no se si empezar con el PHOTOSHOP o con el TheGIMP (principalmente para creación de web,s). Ya miré el TheGIMP y por su interfaz y tal parece más fácil que el Photoshop (hice alguna cosilla en Photoshop y me costo un mundo, a mí particularmente).
Pero la pregunta es: ¿Es igual de potente el TheGIMP como el Photoshop?

Salu2
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines