A Variable index for a simple array

Posted By: Vittel

A Variable index for a simple array - 09/01/17 16:06

Hi together.

I'm very new here and i have a question:

I would like to create an var array (in lite-c gamestudio a8) that looks like this:
var agent[5] = (1,2,3,4,5)

But i would lineto exchange the [5] with a var like rat.
Not
var agent[5]
But
var agent[rat]

Rat should be changeble douring the programm run with a button or else.


Please help me, im searching for days now
Posted By: Ch40zzC0d3r

Re: A Variable index for a simple array - 09/01/17 16:43

You can use malloc (sys_malloc) to do that.
Dont forget to free the memory
Posted By: Vittel

Re: A Variable index for a simple array - 09/01/17 18:38

Thank you for the fast answer.

Can you maybe write an example. I tried it , but i cant figure out how it works.
Posted By: Ch40zzC0d3r

Re: A Variable index for a simple array - 09/01/17 19:34

Code:
int *agent = (int*)sys_malloc(rat * sizeof(int));

for(int i = 0; i < agent; i++)
    agent[i] = 25 + i;

sys_free(agent);

Posted By: Vittel

Re: A Variable index for a simple array - 09/02/17 08:45

Also da mir Englisch nicht so liegt schreibe ich kurz auf Deutsch weiter.
Vielen Dank Ch40zzC0d3r für deine Hilfe. Leider habe ich weitere Probleme. Einerseits kommt wenn ich dein Script eingebe ein Syntax-Fehler den ich weder beheben noch verstehen kann.

Andererseits ist mein Verständnis für das Programmieren noch sehr gering. Ich verstehe wie ich ein array schreibe und wie die Positionierung funktioniert.
also:
var rat; // mein zukünftiger Stellvertreter für die Arrayauswahl
var agent[5] = (1,2,3,4,5); //das ist mein array
agent[3] //damit rufe ich den vierten Wert ab, also den Wert 4

doch jedesmal wenn ich einen versuch starte dieses agent[3] durch agent[rat] zu ersetzen, so wird immer der Wert agent[0] abgerufen. ich verstehe nicht wie ich dem programm beibringen kann dass dieses rat eine variabel ist und nicht bloss eine Wert den das programm auf 0 setzen soll.



andererseits sehe ich immer wieder den begriff initialisieren des arrays. warum benötige ich das und welchen Einfluss hat dies auf das spätere Abrufen der Array-Werte?






Vielleicht sind die Fragen simpelste Einsteigerfragen, doch ich finde im Internet leider keine Antwort darauf, wie ich das in LITE-C lösen kann.
Ich bitte darum um ein wenig Verständniss und hoffe auf weitere Hilfe.

Vielen Dank
Posted By: Superku

Re: A Variable index for a simple array - 09/04/17 06:59

Was genau ist deine Frage, wie du entweder
1) ein Array dynamisch (bei Laufzeit des Programms) und beliebiger Länge erstellen kannst, oder
2) beliebige Einträge über eine Variable als Index auslesen kannst?

Originally Posted By: Vittel
doch jedesmal wenn ich einen versuch starte dieses agent[3] durch agent[rat] zu ersetzen, so wird immer der Wert agent[0] abgerufen.

Setzt du "rat" denn vorher überhaupt auf einen anderen Wert (0,..,4)?
Bspw. wie folgt:
Code:
///////////////////////////////
#include <acknex.h>
#include <default.c>
///////////////////////////////

var rat; // mein zukünftiger Stellvertreter für die Arrayauswahl
var agent[5] = { 1,2,3,4,5 }; //das ist mein array

void main()
{
	fps_max = 60;
	while(1)
	{
		rat = total_secs%5;
		DEBUG_VAR(agent[rat],20);
		wait(1);
	}
}

Posted By: Vittel

Re: A Variable index for a simple array - 09/07/17 16:54

Also es sollte folgendermassen aussehen:

Das array wird vor der Aktivierung des Programms erstellt und die Länge und Einträge bleiben immer gleich. Nur möchte ich während der Laufzeit des Prgramms die var (rat) verändern können und damit die Einträge des arrays (agent) abrufen.

also:
var rat; // mein zukünftiger Stellvertreter für die Arrayauswahl
var agent[5] = { 1,2,3,4,5 }; //das ist mein array

function blabla () { //die Funktion zur veränderung der var (rat)
rat +=1;
}

PANEL* anzeige = { //Anzeige der Daten
digits (310, 225, 5, "Arial#24bi", 1, agent); //hier soll an der stelle wo agent steht der Wert angezeigt werden, der durch die var (rat) aus dem array (agent) ausgelesen wurde
}


heisst: ich aktiviere die function und erhöhe damit den wert der var (rat).
Dabei möchte ich dass das array (agent) auf den Wert hinter der var (rat) "reagiert", also erkennt: "ich muss jetzt eine andere Position meines arrays auslesen als zuvor".



Ich vermute dass ich noch zu wenig Erfahrung mit der Programmiersprache habe um mich verständlicher auszudrücken.


Trotzdem schon vielen Dank für eure Hilfe, ich denke ich habe auch schon einiges anderes durch diese Forum hier gelernt und bin froh um ein solches Füllhorn an Wissen, das mir damit zur Verfügung steht.
Posted By: Ayumi

Re: A Variable index for a simple array - 09/07/17 22:08

Du verdrehst hier was.

Entweder du erhöhst "rat" um einen Wert und nutzt ihn als Indizierung für dein Array:

Code:
rat = 2;
var value = agent[rat];



Oder du weist der Variable "rat" einen Wert aus dem Array zu:

Code:
rat = agent[2];




EDIT:
Ich erweitere mal mit dem Code von oben:

Code:
var value = 0;
var rat; // mein zukünftiger Stellvertreter für die Arrayauswahl
var agent[5] = { 1,2,3,4,5 }; //das ist mein array

PANEL* anzeige = 
{ 
	digits (310, 225, 5, "Arial#24bi", 1, value);
}

void main()
{
	fps_max = 60;
	while(1)
	{
		rat = total_secs%5;
		DEBUG_VAR(agent[rat],20);
		
		value = agent[rat];
		wait(1);
	}
}


© 2024 lite-C Forums