Programar

Hola experto, necesito crear un programa donde se encuentren
registrados todos los nombres de las películas que tengo, separadas en
categorías según el tipo de película. Al ejecutar el programa, quiero
colocar el nombre de una película y que el programa me diga si la tengo
o no. Yo trabajo con ALGO y PASCAL pero no he podido crear el programa

1 Respuesta

Respuesta
1
¿Qué partes son las que no consigues hacer?
Muéstramelas documentadas (con un par de comentarios, para saber de un vistazo qué se supone que deberían hacer) y te echo una mano ^^
Había hecho algo en algo como:
Algoritmo Películas
Variables
              ;entrada
              C : entero ; Cantidad de Películas
              N : cadena ; Nombre de la Película
              Titanic : cadena
              ;proceso
              i                 : entero
              ;salida
              Mensaje : cadena
Inicio
;entrada
Imprimir "introduzca cantidad de películas: "
Leer C
Para i<- 1 hasta C hacer
;lectura de los datos de cada pelicula
Imprimir "¿Cual es el nombre de la película? : "
Leer N
;proceso, determinar si la pelicula se tiene
   si (N=Titanic) entonces
   mensaje<-"Si tenemos la pelicula!.."
   Sino
   Mensaje<-"Lo siento, no la tenemos!.."
finsi
; impresión de resultados
imprimirln N," ", mensaje
finpara
Fin
Yo pondría las películas almacenadas en un ARRAY (arreglo) de STRING + tipo de plícula (cadena)
Luego no tienes más que recorrelo en tu bucle.
Un ejemplo en Pascal del bucle en concreto:
CONST MaxPeliculas=50;//el nº máximo de películas que podrá manejar tu programa;
TYPE TTipoPeli=(vacio,terror,comedia,suspense,accion,aventuras{y todo lo que quieras poner. Lo de "vacio" es para declarar que ese hueco del array es como si estuviera vacío});
CONST TTipoPeli_to_STRING[9]:ARRAY[LOW(TTipoPeli)..HIGH(TTipoPeli)] OF STRING=
                                          ('vacío','terror','comedia','suspense','acción','aventuras');
//Esta constante es un array, donde metes el tipo de peli y devolverá su STRING correspondiente. Muy útil y eficiente
//El STRING está limitado a 9 caracteres, para no desperdiciar memoria a lo burro. Lo suyo es hacer lo mismo con los STRING de los nombres de las pelis
TYPE TPelicula=RECORD
                         nombre:STRING;
                          {todos los datos que quieras poner para las películas}
                         tipo:TTipoPeli;
         TVideoteca=ARRAY[1..MaxPeliculas] OF TPelicula;
Luego, en el bucle, en vez de comprobar solo el nombre, comprueba que la categoría sea la misma.
Para comprobar el nombre, te aconsejo hacer "IF UPCASE(N)=UPCASE(nombre) THEN", para que no importen las mayúsculas y minúsculas ;)
Si no sabes cómo leer un TTipoPeli, aquí pongo un ejemplo:
{********************}
WRITELN('Introduzca el nombre de la película a buscar:')
READLN(N);//yo me estiraría un poco y la llamaría "nombre", para que luego fuera más legible el código
N:=UPCASE(N);
//lo pasamos a mayúsculas, para que la comparación sea mejor
//Si nomhiciéramos esto, "TiTaniC" sería distinto a "Titanic", y eso no mola
WRITELN('Elige una categoría:');
FOR i:=SUCC(LOW(TTipoPeli)) TO HIGH(TTipoPeli) DO WRITELN('  ',ORD(i),' ',TTipoPeli_to_STRING(i));
//Escribimos todas las categorías disponibles. Ojo con no pasarte de 9, porque abajo solo leemos un carácter, y "10" ya son 2 caracteres; habría que cambiar la lectura de la opción
//HIGH(TTipoPeli) devuelve el TTipoPeli más alto - el de más a la derecha - y LOW, el más bajo. SUCC devuelve el SUCESOR - el inmediatamente a la derecha - y si pusieras PRED, sería el predecesor.
//Los tipos declarados por el programador, por dentro solo son números. El primero cale 0, luego 1, 2, 3, ...
//Esto lo puedes comprobar haciendo un ORD(TTipoPeli), que devolverá su "número". Para hacer el proceso inverso - dar el número y que devuelva el TTipoPeli correspondiente - , pones TTipoPeli(numero). Es "parecido" a un array
REPEAT
  opciontipopeli:=UPCASE(READKEY);
UNTIL (opciontipopeli>='1') AND (opciontipopeli<='5');
//Con esto leemos una opción válida, para que no pulñse por ejemplo "ñ", y el programa como si nada :s
//Opciontipopeli es un CHAR (caracter), y toma el valor de la tecla que se pulse (READKEY es una función READKEY:CHAR)
CASE opcion OF
 '1':tipopeli:=TTipoPeli(1);
 '2':tipopeli:=TTipoPeli(2);
 '3':tipopeli:=TTipoPeli(3);
 '4':tipopeli:=TTipoPeli(4);
 '5':tipopeli:=TTipoPeli(5);
 END;
//Aquí utilizamos lo que expliqué arriba. Hay una forma mejor, pero que ya sería rizar el rizo, y no quiero liar - si quieres que te la enseñe, solo pregunta de nuevo ;)
//Ahora, el bucle de búsqueda:
encontrado:=FALSE;
//una variable booleana que nos indicará si lo hemos encontrado o no
WHILE (i<=MaxPeliculas) AND (NOT encontrado) DO
 encontrado:=(UPCASE(peliculas.nombre)=N) AND (peliculas.tipo=tipopeli);
//se acaba el bucle
//Ahora, encontrado será TRUE si está la peli con ese nombre y esa categoría, y FALSE si no
Si no quieres buscar por tipo de Película, pues quita las partes de tipopeli ^^
Lo del tipopeli lo puedes utilizar por ejemplo, si te piden un listado por categorías. Sería un FOR i:=1 TO MaxPeliculas DO
     IF peliculas.tipo=tipopeli THEN WRITELN(peliculas.nombre);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas