Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ayuda con los array (https://www.clubdelphi.com/foros/showthread.php?t=69019)

snake25237 21-07-2010 02:42:11

Ayuda con los array
 
Hola soy nuevo por acá, y nuevo también en este lenguaje de programación.
Mi pregunta es sencilla... como hago para declarar un arreglo con sus elementos... osea quiero asignarles los valores como constante.. alguna ayudita..???

gracias

Caral 21-07-2010 02:44:58

Hola
Y se puede saber que es lo que quieres hacer?, algo un poco mas concreto ya que se pueden hacer diversos tipos de array y creo que seria bueno que ayudaras a los que te quieran ayudar.
Saludos

Caral 21-07-2010 02:53:41

Hola
Una pequeña busqueda en google y salio un buen ejemplo.
Saludos

snake25237 21-07-2010 02:54:13

hola caral especificamente necesito resolver este problema propuesto en clases:

Diseñe un algoritmo que lea un numero cualquiera y lo busque en el vector X, el cual tiene almacenados 8 elementos. Escribir la posición donde se encuentra almacenado el numero en el vector o el mensaje “NO” si no lo encuentra. Búsqueda secuencial.

el vector X lo debe almacenar el programador (osea yo) y no el usuario....

gracias y saludos

Caral 21-07-2010 03:04:40

Hola
Encontre esta funcion que esta interesante:
No es exactamente con numeros, pero me parece que te dara una idea de como hacerlo.
Código Delphi [-]
function TFunciones.DiaDeLaSemana(Fecha: TDate; Completo:Boolean=False): string;
var
  DiasSemana:array[1..7] of string;
begin
  //Calculamos la letra del día de la semana
  if Completo then
    begin
      DiasSemana[1] := 'DOMINGO'; DiasSemana[2] := 'LUNES';
      DiasSemana[3] := 'MARTES';  DiasSemana[4] := 'MIERCOLES';
      DiasSemana[5] := 'JUEVES';  DiasSemana[6] := 'VIERNES';
      DiasSemana[7] := 'SABADO';
    end
  else
    begin
      DiasSemana[1] := 'D'; DiasSemana[2] := 'L'; DiasSemana[3] := 'M';
      DiasSemana[4] := 'X'; DiasSemana[5] := 'J'; DiasSemana[6] := 'V';
      DiasSemana[7] := 'S';
    end;
  Result := DiasSemana[DayOfWeek(Fecha)];
end;
Con esto se puede establecer en donde esta el dia de semana, seria el mismo caso con numeros, me parece.
En esto de los arrays estoy para aprender pero ten paciencia, ya deben de estar por llegar los maestros.
Saludos

snake25237 21-07-2010 03:11:48

Caral..... mil gracias me servirá de mucho la información graciassssss

mañana tengo evaluación de esto y estoy un poco perdido XD

Caral 21-07-2010 03:15:11

Hola
En la pagina que puse al principio esta un ejemplo que se acerca mas a lo que buscas, aunque siempre este en letras, define mejor la posicion.
Revisalo, tal vez te guíe algo mas:
Código Delphi [-]
type
  TCharArray = array of char; // Required below
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FurnishDynamicArray(var typeArray : TCharArray);
????procedure ShowOpenTypeArray(typeArray : Array of char);
????procedure ShowOpenConstArray(const constArray : Array of const); 
  end;
 
var
  Form1: TForm1;
 
implementation
{$R *.dfm} // Include form definitions
 
procedure TForm1.FormCreate(Sender: TObject);
var
  // Define a dynamic array
  charArray : TCharArray;
  openArray : Array [0..2] of char;

  i : Integer;

begin
  // Pass the undefined array as a dynamic array to a subroutine
  FurnishDynamicArray(charArray);

  // Furnish an array for the next routine
  openArray[0] := 'N';
  openArray[1] := 'o';
  openArray[2] := 'w';

  // Pass this predefined array as an open array to a subroutine
  ShowOpenTypeArray(openArray);

  // Show all elements of the passed array
  for i := 0 to High(charArray) do
      ShowMessage('charArray['+intToStr(i)+'] = '+charArray[i]);

  // Pass a number of characters as an open constant array to a subroutine
  ShowOpenConstArray(['H','e','l','l','o']);
end;

// Procedure that updates a dynamic array size
// IMPORTANT - note that the array type must not be defined here -
//             we must use an array type to avoid the array being treated
//             as an open array.
procedure TForm1.FurnishDynamicArray(var typeArray : TCharArray);
var
  i : Integer;

begin
  // Set the length of the single dimension array
  SetLength(typeArray, 5);

  // Furnish this array - remember that dynamic arrays start at 0
  for i := 0 to 4 do
    typeArray[i] := Chr(Ord('A') + i);
end;

// Procedure that takes an open array
procedure TForm1.ShowOpenTypeArray(typeArray : Array of char);
var
  i : Integer;

begin
  // Show all elements of the passed array
  for i := 0 to High(typeArray) do
    ShowMessage('typeArray['+intToStr(i)+'] = '+typeArray[i]);
end;

// Procedure that takes an open constant array
procedure TForm1.ShowOpenConstArray(const constArray : Array of const);
var
  i : Integer;

begin
  // Show all elements of the passed array
  // IMPORTANT - we assume here that the constant types are all char
  //             See the TVarRec type for more on Variant types.
  for i := 0 to High(constArray) do
    ShowMessage('constArray['+intToStr(i)+'] = '+constArray[i].VChar);
end;

 
end.
Y da un mensaje con esto:
Cita:

typeArray[0] = N
typeArray[1] = o
typeArray[2] = w
charArray[0] = A
charArray[1] = B
charArray[2] = C
charArray[3] = D
charArray[4] = E
constArray[0] = H
constArray[1] = e
constArray[2] = l
constArray[3] = l
constArray[4] = o
Como veras en la posicion 1 esta o, en la 2 esta w y asi sucesivamente.
Estoy aprendiendo mucho, que bueno.:)
Saludos

Caral 21-07-2010 04:18:49

Hola
Aqui el asunto esta en cambiar Length por algo que funcione ya que esto lo que hace es indicar la cantidad de elementos del array y compararlo con el dato que esta en el edit.
Es lo que se me ocurre de momento ya que no manejo bien los array.
Código Delphi [-]

  TPosicion = array[1..8] of integer;

const
  Posicion_dada: TPosicion = (1,7,3,4,8,6,2,5);

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  total, Numero :Integer;
begin
  Numero:= StrToInt(Edit1.Text);
  total := Length(Posicion_dada);
  if (Numero = total) then begin
  ShowMessage(IntToStr(Posicion_dada[total]));
  end
  else
  ShowMessage('No esta en esa posicion');
end;
Ya vendra algun maestro y ayudara.:)
Saludos

Lord Delfos 22-07-2010 00:28:36

Si entiendo lo que querés hacer, sería algo así:

Código Delphi [-]
const MisDatos : array[1..8] of Integer = (13, 32, 134, 76, 9, 41, 3, 17);

procedure Buscar(QueCosa: Integer);
var Ind: Integer;
begin
  Ind:= 1;
  while (Ind <= 8) {o length(MisDatos)} and (MisDatos[Ind] <> QueCosa) do
    Inc(Ind);

  if Ind <= 8 {o Length(MisDatos)} then
    ShowMessage('Encontrado en la posición ' + IntToStr(Ind))
  else
    ShowMessage('No encontrado.');
end;

Por cierto, si lo que querés declarar es una matriz, se sigue el mismo principio:

Código Delphi [-]
const  MiMatriz: array[1..3, 1..5] of Integer = 
(
      (1, 2, 3, 4, 5),
      (1, 2, 3, 4, 5),
      (1, 2, 3, 4, 5)
);

Por cierto, hay un 99% de probabilidad de que le erres con la cantidad de valores que pongas y obtengas el error "[Error] Unit1.pas(30): Number of elements differs from declaration"... :) Eso es porque pusiste cuatro en vez de cinco, o mezclaste las dimensiones y pusiste 3x5 en vez de 5x3...

¿Eso es lo que querías?

Saludetes.

snake25237 07-08-2010 00:37:05

hola..!!!! muchas gracias por su ayuda amigos me sirvió de mucho


La franja horaria es GMT +2. Ahora son las 18:07:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi