ADA - Ristras

 
Vista:

Ristras

Publicado por Fermin (1 intervención) el 11/11/2006 22:17:46
hola, tengo problemilla con un ejercicio de clase.

me dan una ristra y un caracter, y tengo que buscar la posicion de ese caracter dentro de la ristra.
vale, se supone que para hacer eso tengo que hacer:

A: natural

A= index (R,C)

y me aparece este error:
apariciones_car.adb: Error: line 10 col 6 LRM:8.6(28), Cannot resolve; if calling the Index at line 110 of file ada.strings.unbounded.spc, type mismatch for param 2, Pattern: String (found Character); if calling the Index at line 123 (same file), type mismatch for param 2, Set: Character_Set (found Character).

por lo que me han comentado no puedo buscar un caracter dentro de la ristra, por que no son del mismo tipo. ¿como lo cambio?
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

Error al buscar posición de un carácter dentro de una cadena

Publicado por Alejandro (155 intervenciones) el 30/06/2023 17:27:12
El error que estás obteniendo se debe a que estás intentando usar el procedimiento `Index` de Ada en una cadena de caracteres (`String`) en lugar de un conjunto de caracteres (`Character_Set`). El procedimiento `Index` busca un patrón en una cadena completa y devuelve la posición donde se encuentra ese patrón.

Para encontrar la posición de un carácter dentro de una cadena de caracteres, puedes utilizar un bucle y recorrer la cadena uno a uno. Aquí tienes un ejemplo de cómo puedes hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
with Ada.Text_IO;
 
procedure Buscar_Caracter is
   type Cadena is array (Integer range <>) of Character;
   R : Cadena := "Hola, mundo!";
   C : Character := 'a';
   Encontrado : Boolean := False;
 
begin
   for I in R'Range loop
      if R(I) = C then
         Ada.Text_IO.Put_Line("El caracter se encuentra en la posición " & Integer'Image(I));
         Encontrado := True;
         exit;  -- Salir del bucle si se encuentra el caracter
      end if;
   end loop;
 
   if not Encontrado then
      Ada.Text_IO.Put_Line("El caracter no se encuentra en la cadena.");
   end if;
end Buscar_Caracter;

En este ejemplo, se define una cadena `R` y un carácter `C` que deseas buscar dentro de la cadena. Se utiliza un bucle `for` para recorrer cada posición de la cadena. Si se encuentra el carácter en alguna posición, se muestra el mensaje con la posición. Si no se encuentra, se muestra un mensaje indicando que el carácter no está presente en la cadena.

Espero que esto te ayude a resolver tu problema.
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