ADA - string ada

 
Vista:

string ada

Publicado por daniel (1 intervención) el 19/07/2010 21:38:37
Buenas a todos:

Mirar tengo que hacer un programa que es como un registro en el que guardo nombres los cuales tienen 50 caracteres como maximo y despues de ordenarlos y otras cosas el programa debe devolverlos.

El problema es que defino el string entre 1 y 50 caracteres y cuando me lo devuelve, si el nombre es juan, al no tener 50 caracteres rellena con simbolos asta llenar los caracteres dandome juan mas un monton de dibujitos.

¿Alguien puede resolver mi problema ponendome un ejemplo?, no me deis solo teoria porfavor
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

Cómo manejar cadenas de longitud variable en Ada

Publicado por Alejandro (155 intervenciones) el 01/07/2023 00:42:31
En Ada, las cadenas tienen una longitud fija y se rellenan con caracteres nulos ('\0') si no se utilizan todos los caracteres disponibles. Sin embargo, para manejar cadenas de longitud variable, puedes utilizar el tipo "Unbounded_String" de la biblioteca "Ada.Strings.Unbounded".

Aquí tienes un ejemplo de cómo utilizar "Unbounded_String" para almacenar nombres de longitud variable:

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
with Ada.Text_IO;
with Ada.Strings.Unbounded;
 
procedure Registro is
   package Unbounded_IO is new Ada.Text_IO.Text_IO (Item => Ada.Strings.Unbounded.Unbounded_String);
   use Ada.Text_IO;
   use Ada.Strings.Unbounded;
 
   type Nombre is new Unbounded_String;
   type Registro is array (Positive range <>) of Nombre;
   Lista : Registro (1 .. 10);
 
   procedure Imprimir_Nombres is
   begin
      for I in Lista'Range' loop
         Put(Item => Lista(I));
         New_Line;
      end loop;
   end Imprimir_Nombres;
 
   procedure Agregar_Nombre (Nuevo_Nombre : in Nombre) is
   begin
      Lista(Lista'Last') := Nuevo_Nombre;
   end Agregar_Nombre;
 
begin
   Agregar_Nombre (Nuevo_Nombre => To_Unbounded_String("Juan"));
   Agregar_Nombre (Nuevo_Nombre => To_Unbounded_String("Pedro"));
   Agregar_Nombre (Nuevo_Nombre => To_Unbounded_String("María"));
 
   Imprimir_Nombres;
end Registro;

En este ejemplo, se utiliza el tipo "Nombre" que es una cadena de longitud variable. Puedes agregar nombres a la lista utilizando el procedimiento "Agregar_Nombre" y luego imprimir todos los nombres utilizando el procedimiento "Imprimir_Nombres". Al utilizar "Unbounded_String", no tendrás que preocuparte por la longitud fija de las cadenas y los nombres se imprimirán correctamente sin relleno adicional.

Recuerda que debes incluir la biblioteca "Ada.Strings.Unbounded" para poder utilizar "Unbounded_String".
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