Raised This Month: $51 Target: $400
 12% 

Desvirtúe aquí.


  
 
 
Thread Tools Display Modes
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 08-01-2012 , 21:39   Re: Desvirtúe aquí.
#19141

Quote:
Originally Posted by gladius View Post
Con punteros puedes modificar el tamaño del size de una variable. Un ejemplo que te puedo hacer es en C++
por ejemplo.. lo que yo quiero hacer es crear una array cuyo size depende del valor que paso por la native.. hasta donde intente no era posible..
__________________

www.amxmodx-es.com

Steam: Luchokoldo

Last edited by rak; 08-01-2012 at 21:41.
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 08-01-2012 , 22:24   Re: Desvirtúe aquí.
#19142

Quote:
Originally Posted by rak View Post
por ejemplo.. lo que yo quiero hacer es crear una array cuyo size depende del valor que paso por la native.. hasta donde intente no era posible..
Code:
#include <iostream>
using namespace std;

void AumentarCapacidad(int *var, int *limit, int n)
{
       int i, size, Tempvar[(*limit)];                   
              
       // Guardamos los datos para que no se pierdan
       for(i = 0; i < (*limit); i++)
       {
              Tempvar[i] = var[i];
       }       
       
       // Agregamos al arreglo n casillas
       var = new int[size = (*limit) + n;];
       
       // Metemos los datos anteriormente guardados
       for(int i = 0; i < (*limit); i++)
       {
              var[i] = Tempvar[i];
       }
       
       // Nuevo size del arreglo
       (*limit) = size;
}

main()
{
       int *arr, size, celdas, i;
       
       cout << "Size del arreglo: ";
       cin >> size;
       
       // Definir el size inicial
       arr = (int *)calloc(size, sizeof(int));
       
       for(i = 0; i < size; i++)
       {
             arr[i] = i * i;
             cout << "Posicion( " << i + 1 << " ): " << arr[i] << endl;
       }
       
       cout << endl << "Aumentar casillas: ";
       cin >> celdas;
       
       int tempsize = size;
       
       AumentarCapacidad(arr, &size, celdas);
       for(i = tempsize; i < size; i++)
       {
             arr[i] = i * i;
             cout << "Posicion( " << i + 1 << " ): " << arr[i] << endl;
       }
       
       cout << endl << "Arreglo Total" << endl;
       
       for(i = 0; i < size; i++)
       {
             arr[i] = i * i;
             cout << "Posicion( " << i + 1 << " ): " << arr[i] << endl;
       }
       free(arr);
       
       return 0;
}
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).


Last edited by gladius; 08-01-2012 at 22:24.
gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 08-02-2012 , 01:19   Re: Desvirtúe aquí.
#19143

sacando el hecho que entendí poco y nada xD no sabría pasarlo a pawn xD

gracias gladius por tu tiempo
__________________

www.amxmodx-es.com

Steam: Luchokoldo
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 08-02-2012 , 02:01   Re: Desvirtúe aquí.
#19144

Quote:
Originally Posted by rak View Post
sacando el hecho que entendí poco y nada xD no sabría pasarlo a pawn xD

gracias gladius por tu tiempo
Te voy a mencionar 2 cosas.

Primero creo que en Pawn no hay punteros es lamentable.

Y segundo, te voy a explicar como hacerlo.

Te explico, solo concéntrate en la función. Vamos a imaginar que no hay función y que todo está en la misma parte.

1. Creas la variable, en este caso un arreglo de enteros.

Code:
int *arreglo;
Por qué tiene un asterisco?.
Es un puntero a un entero, trabajamos con la dirección de memoria de la variable.

Por qué no posee el tamaño del arreglo?
Puede tenerlo para arreglos inicialmente estáticos y posteriormente se hacen dinámicos. O se puede dejar como está y es completamente dinámico.

* Los strings son punteros, hacen lo mismo que esto, la única diferencia es que este no es una cadena de caracteres.

2. Nuestro segundo paso es definir su tamaño inicial, si nuestra variable cumple que es completamente dinámica, debemos definir un valor inicial. Y para eso acudimos a la función calloc, lo que hace es asignar espacio en la memoria para N elementos del arreglo(Una descripción simple).

Code:
arreglo = (int *)calloc(N, sizeof(int));
int * Se declara de tipo Entero
N Elementos del arreglos
sizeof(int) el tamaño de cada elemento (el tamaño debe ser de un entero por ende el sizeof(int) son 4 bytes)

3. Para modificar el tamaño de nuestro arreglo, se debe aplicar lo siguiente.
Code:
arreglo = new int[N + 10];
Lo que hace es declarar la variable arreglo como un arreglo de enteros utilizando la estructura de new (Como si fuera una class o struct), asignándole memoria.

* Tiene relación con los Tipos de Datos Abstractos(TDA).

Finalmente ya has modificado la variable, pero cuando esta es cambiada pierde todos los valores establecidos en la memoria. Por ende se debe antes guardar los datos en una variable temporal y al realizar el cambio de tamaño asignarle los valores nuevamente.

ejemplo
Code:
// Guardamos los datos para que no se pierdan
       for(i = 0; i < N; i++)
       {
              Tempvar[i] = arreglo[i];
       }       
       
       // Agregamos al arreglo 10 elementos
       arreglo = new int[N + 10];
       
       // Metemos los datos anteriormente guardados
       for(int i = 0; i < N; i++)
       {
              arreglo[i] = Tempvar[i];
       }

Y finalmente llegas a lo que anteriormente te coloqué, ojalá hayas entendido un poco más.

Te adjunto un ejemplo simple con todo.

Code:
int *arreglo, size;
       
       // Definir el size inicial
       arreglo = (int *)calloc(size, sizeof(int)); 
       
       // Guardamos los datos para que no se pierdan
       int Tempvar[size];
       for(i = 0; i < size; i++)
       {
              Tempvar[i] = arreglo[i];
       }       
       
       // Agregamos al arreglo 10 elementos
       arreglo = new int[size + 10];
       
       // Metemos los datos anteriormente guardados
       for(int i = 0; i < size; i++)
       {
              arreglo[i] = Tempvar[i];
       }
Saludos
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).


Last edited by gladius; 08-02-2012 at 02:06.
gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 08-02-2012 , 02:33   Re: Desvirtúe aquí.
#19145

sisi entendi mas.. hice un par de intentas de otras formas que no habia probado pero me parece que es imposible hacerlo en pawn; si no tubiera que pasar el contenido por un forward utilizaria array dinamicas.. tengo ganas de aprender c++ ahora xD

gracias gladius por todo :B
__________________

www.amxmodx-es.com

Steam: Luchokoldo
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
Javivi
AlliedModders Donor
Join Date: Dec 2008
Old 08-02-2012 , 05:40   Re: Desvirtúe aquí.
#19146

Quote:
Originally Posted by S34Qu4K3 View Post
Lo lo lo lo
empeze un proyectito en C++ que a los que sepan C++ les doleran los ojos al leer el code xD
Qué novedad!



https://forums.alliedmods.net/showthread.php?t=191537
ya tengo 18 d:
__________________
Javivi is offline
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 08-02-2012 , 17:27   Re: Desvirtúe aquí.
#19147

Quote:
Originally Posted by rak View Post
sisi entendi mas.. hice un par de intentas de otras formas que no habia probado pero me parece que es imposible hacerlo en pawn; si no tubiera que pasar el contenido por un forward utilizaria array dinamicas.. tengo ganas de aprender c++ ahora xD

gracias gladius por todo :B
paso la array dinamica por el forward y epic win e.e testeado y funciona :B
__________________

www.amxmodx-es.com

Steam: Luchokoldo
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 08-03-2012 , 02:55   Re: Desvirtúe aquí.
#19148

__________________

www.amxmodx-es.com

Steam: Luchokoldo
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 08-03-2012 , 14:18   Re: Desvirtúe aquí.
#19149

sin duda el battlefield 3 es el mejor juego que he visto XDD (en historia no, en multijugador si )
__________________
xLeoNNN is offline
Send a message via MSN to xLeoNNN
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 08-03-2012 , 15:03   Re: Desvirtúe aquí.
#19150

Alguien sabe alguna manera de grabarse uno jugando ps3/xbox/wii u otro (PC NO!) ?
quiero hacer unos videos, pero no sé como, averigué y encontre un tutorial bueno, pero necesitas como 1000 cables y es el medio problema xD
__________________
xLeoNNN is offline
Send a message via MSN to xLeoNNN
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:02.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode