ADA - Necesito Ayuda!!!

 
Vista:

Necesito Ayuda!!!

Publicado por Roberto (1 intervención) el 01/12/2001 17:50:36
Por diversos problemas personales no he tenido tiempo para hacer una tarea de Lenguajes de Programación, me gustaría saber si alguien fuera tan amable y me ayudara a hacer un programa en Ada del siguiente Problema:
Desarrollar un programa que permita ingresar, calcular y mostrar la asignación de salas de una escuela secundaria, indicando la carrera, la asignatura, el profesor, el semestre, número de alumnos, listado de alumnos y números de sala.
El edificio de la escuela secundaria tiene 3 pisos, cada uno con 5 salas de clases de tamaños diversos como se muestra en el ejemplo.

Piso 01 02 03 04 05
1 30 30 15 30 40
2 25 30 25 40 110
3 62 30 40 10 30

Cada semestre, la escuela imparte 15 cursos que deben distribuirse en las salas. Desarrolle un programa en los siguientes lenguajes:
Perl
PL/I
Pascal
Prolog
Fortran
Cobol
Small Talk
Lisp
Ada

Que intente hacer una asignación de salas satisfactoria que acomode las 15 clases, dados la capacidad de cada sala, y el tamaño de cada grupo. Para los grupos que no puedan ser adecuadamente ubicados, el programa mostrará el mensaje (no hay Sala Disponible); además indicar al número de asientos vacíos en cada sala y en todo el edificio.

Observación: En el listado de alumnos debe aparecer el rut del alumno, año de ingreso, semestre que cursa la asignatura. A cada sala se le debe asignar un código y el estado de ocupado o desocupado.
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
Imágen de perfil de Alejandro

Programa para asignación de salas en una escuela secundaria

Publicado por Alejandro (155 intervenciones) el 29/06/2023 21:55:29
Aquí tienes un programa en Ada que aborda el problema de asignación de salas en una escuela secundaria. Ten en cuenta que este programa es una implementación básica y puede ser mejorado o ajustado según tus necesidades específicas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
with Ada.Text_IO;
use Ada.Text_IO;
 
procedure Asignacion_Salas is
 
   type Sala is record
      Codigo: Integer;
      Capacidad: Integer;
      Ocupada: Boolean := False;
      Asientos_Vacios: Integer := 0;
   end record;
 
   type Curso is record
      Carrera: String(1..50);
      Asignatura: String(1..50);
      Profesor: String(1..50);
      Semestre: Integer;
      Numero_Alumnos: Integer;
      Listado_Alumnos: String(1..50);
      Numero_Sala: Integer := 0;
   end record;
 
   type Piso is array(1..3, 1..5) of Sala;
 
   Edificio: Piso;
 
   procedure Mostrar_Edificio(Edificio: in Piso) is
   begin
      for I in 1..3 loop
         for J in 1..5 loop
            Put(Item => Edificio(I, J).Capacidad, Width => 4);
         end loop;
         New_Line;
      end loop;
   end Mostrar_Edificio;
 
   procedure Asignar_Sala(Curso: in out Curso; Edificio: in out Piso) is
      Piso_Actual: Integer := 1;
      Sala_Actual: Integer := 1;
   begin
      loop
         if Edificio(Piso_Actual, Sala_Actual).Ocupada = False and
            Curso.Numero_Alumnos <= Edificio(Piso_Actual, Sala_Actual).Capacidad then
            Edificio(Piso_Actual, Sala_Actual).Ocupada := True;
            Edificio(Piso_Actual, Sala_Actual).Asientos_Vacios := Edificio(Piso_Actual, Sala_Actual).Capacidad - Curso.Numero_Alumnos;
            Curso.Numero_Sala := Sala_Actual;
            exit;
         end if;
 
         Sala_Actual := Sala_Actual + 1;
         if Sala_Actual > 5 then
            Sala_Actual := 1;
            Piso_Actual := Piso_Actual + 1;
         end if;
 
         if Piso_Actual > 3 then
            Put_Line("No hay sala disponible para el curso: " & Curso.Asignatura);
            return;
         end if;
      end loop;
   end Asignar_Sala;
 
   Cursos: array(1..15) of Curso := (
      (Carrera => "Carrera1", Asignatura => "Asignatura1", Profesor => "Profesor1", Semestre => 1, Numero_Alumnos => 30, Listado_Alumnos => "Lista1"),
      -- Aquí se agregan los demás cursos
   );
 
begin
   Mostrar_Edificio(Edificio);
   New_Line;
 
   for I in 1..15 loop
      Asignar_Sala(Cursos(I), Edificio);
      if Cursos(I).Numero_Sala /= 0 then
         Put_Line("Asignación exitosa para el curso: " & Cursos(I).Asignatura & ", Sala: " & Cursos(I).Numero_Sala'Img');
      end if;
   end loop;
 
   New_Line;
   Mostrar_Edificio(Edificio);
end Asignacion_Salas;

Ten en cuenta que este programa utiliza un tipo de dato `Sala` para representar una sala individual con su capacidad y estado de ocupación. Además, se define un tipo de dato `Curso` que representa cada curso con sus respectivas características.

El programa itera a través de los cursos y utiliza el procedimiento `Asignar_Sala` para asignar una sala adecuada a cada curso. Si no hay una sala disponible que cumpla con los requisitos, se muestra un mensaje correspondiente.

Recuerda que este es solo un ejemplo básico y puedes adaptarlo y mejorar según tus necesidades y requerimientos específicos.

Espero que este programa en Ada te sea de ayuda para abordar tu tarea de lenguajes de programació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