Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-11-2003
darkone2k3 darkone2k3 is offline
Miembro
 
Registrado: oct 2003
Ubicación: Frente al Computador.
Posts: 29
Poder: 0
darkone2k3 Va por buen camino
Redimensionar un arreglo

Saludos amigos foristas.
Alguien sabe como puedo redimensionar un arreglo en tiempo de ejecución.

Código:
 Function Pide_Poli( Lista: Array Of Double ): Double;
   Var
      Truco, Grado, Seguro, Seguros: String;
      ClickedOK1, ClickedOK2, ClickedOK3, ClickedOK4: Boolean;
      J: Array Of Double;
      n, i: Integer;
   Begin
      Seguros := '';
      ClickedOK1 := InputQuery( '', 'De que grado deseas tu polinomio (De grado 3 en delante)?', Grado );
      While LowerCase( Seguros ) <> 's' Do
      Begin
         ClickedOk2 := InputQuery( '', 'Estás seguro que deseas un polinomio de grado: ' + Grado + ' (s/n)?', Seguros );
         If ClickedOK2 Then
            If LowerCase( Seguros ) <> 's' Then
               ClickedOK3 := InputQuery( '', 'De que grado deseas tu polinomio (De grado 3 en delante)?', Grado );
      End;
      n := StrToint( Grado ) + 1;

//      SetLength( lista, n );
//      ReAllocMem( Lista, n * sizeof( integer ) );

      For i := 0 To Length( j ) - 1 Do
      Begin
         ClickedOK4 := InputQuery( '', 'Introduce el termino a ' + IntToStr( i ) + ' x^' + IntToStr( i ), Truco );
         j [i ] := StrToFloat( Truco );
         showmessage( inttostr( i ) + ' ' + floattostr( j [i ] ) );
      End;
      For i := 0 To length( j ) - 1 Do
         Lista [i ] := j [i ];
      showmessage( 'largo de lista: ' + inttostr( length( lista ) ) );
   End;
Lo que pasa es que necesito redimensionar el arreglo llamado "Lista", y como pueden ver en el código resaltado de azul, he tratado de hacerlo de esas 2 formas, pero me arroja el siguiente error: "Incompatible types"
Si alguien conoce otra forma de redimensionar arreglos en tiempo de ejecución, me avisa por favor.

PD 1 : A esta función, la "llamo" desde un Boton, de la siguiente manera:
Código:
         Var
   Poli: Array Of Double;
   Tol, Val: Double;
   x: String;
   ClickedOK: Boolean;
Begin
   x := 's';
   While LowerCase( x ) = 's' Do
   Begin
      Pide_Poli( Poli );
      checa_valor( Poli, val, tol ); //Se pide la aproximación inicial y se revisa que cumpla la condición.
      despliega_raiz( Poli, tol, val ); //Por ultimo despliega el polinomio y la raiz.
      ClickedOK := InputQuery( '', 'Deseas resolver otro polinomio?( s / n )', x );
   End;
Donde "Poli" es un arreglo del mismo tipo que el de la función "Pide_Poli"

PD 2: A todo esto, está funcion está originalmente en c++ y la estoy "transformando" a Delphi 6(espero que la haya "transformado" bien), aquí les pongo el código en c++:
Código:
void pide_poli(vector<double> &lista)
{	int  n;
	char x;
	cout<<"Este es un programa que resuelve polinomios "<<endl;
	cout<<"De que grado deseas tu polinomio (De grado 3 en delante) ?"<<endl;
	//Aqui se revisa que ese sea el dato correcto elegido por el usuario.
	do
	{
	cin>>n;
	cout<<"Estas seguro que deseas un polinomio de grado "<<n<<"?"<<endl;
	cin>>x;
			if(tolower(x) != 's')
			cout<<"¿Cual es el grado que deseas para tu polinomio?"<<endl;
		
	}while(tolower(x) !='s');
	lista.resize(n+1);//Se crea el vector del tamaño deseado por el usuario.
		for(int i=0; i<lista.size();i++)
		{
			cout<<"Introduce el termino a"<<i<<" x^"<<i<<endl;
			cin>>lista[i];
		}
}
Y así se llama a la función en c++:
Código:
int main()
{	
	vector<double> poli;
	double    tol, val;
	char x;
	do
	{
	system("cls");
	pide_poli(poli);//Se crea el nuevo polinomio deseado.
	checa_valor(poli,val,tol);//Se pide la aproximación inicial y se revisa que cumpla la condición.
	system("cls");			 //	Al igual que la tolerancia.
	despliega_raiz(poli,tol,val);//Por ultimo despliega el polinomio y la raiz.
	cout<<"Deseas resolver otro polinomio?"<<endl;
	cin>>x;
	}while(tolower(x) =='s');
	return 0;
}
Espero haber sido lo más claro posible, me despido. Salu2 desde Chile.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:56:42.


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
Copyright 1996-2007 Club Delphi