Ein neues Thema erstellen  Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: kein 3-dimensionales Array?
BeitragVerfasst: 03.05.2002, 11:42 

Registriert: 14.12.2001, 01:00
Beiträge: 146
Wohnort: Erzgebirge/Sachsen
ich war heute einigermaßen überrascht, als ich feststellte, dass es bei Small keine 3-D Arrays gibt. :(
nun hab ich das Problem, wie ich das umgehen kann. Ich hab nur die Idee mit einem 2. Array das auszugleichen, oder weiß jemand von euch eine elegantere Lösung? :-?

_________________
bye Weaselweb


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.05.2002, 16:25 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Du kannst sogar ein 1-D Array benutzen.... :)

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.05.2002, 19:21 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Letztenendes ist jedes Array 'eindimensional' im Speicher abgelegt.

Bio

_________________
It's not a bug, it's a feature !


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 10.05.2002, 07:38 

Registriert: 14.12.2001, 01:00
Beiträge: 146
Wohnort: Erzgebirge/Sachsen
Zitat:
Du kannst sogar ein 1-D Array benutzen.... :)
ach nee, das wusste ich jetzt nicht
mh, also bleibt mir nix anderes übrig, als mehrere arrays zu nutzen

_________________
bye Weaselweb


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 10.05.2002, 08:25 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Wieso mehrere Arrays?

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 10.05.2002, 10:24 

Registriert: 14.12.2001, 01:00
Beiträge: 146
Wohnort: Erzgebirge/Sachsen
naja, wenn ich keine 3D-Felder habe muss ich die mir aus mehreren "bauen"

_________________
bye Weaselweb


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 10.05.2002, 10:28 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Achso, jetzt, aha. Irgendwie habe ich mal wieder Unfug gelesen, naemlich "2d Array" statt "2. Array". Drum dachte ich Du hast den Loesungsansatz schon.

Wenn Du ein 3-d Array mit festen Dimensionen hast, kannst Du das ganze auch als 2-d bzw. 1-d Array erstellen. Du musst nur wissen, welche Groesse Deine Dimensionen haben. (Macht man in der Bildverarbeitung staendig).

Bleistiel:
Code:
/* Ein 3-d Array, das auf 2 Dimensionen Strings (die dritte DImension) speichert */
/* Also eine 2-d Stringtabelle */

#include <console>
#include <core>

/* Funktion zum Befuellen der Tabelle mit Strings */
set_string_2d( zweiD[], dX, dY, maxlen, x, y, string[] ) {

   // Position im der Tabelle bestimmen.
	new insert = (y*dX + x) * maxlen;
	new pos = insert;
	new i = 0;
	new len = strlen( string );
	
	if ( len > maxlen ) len = maxlen;

   /* String an dieser Stelle hineinschreiben (in die 3. Dimension) */
	while ( pos < insert+maxlen ) {
		while ( pos < insert+len ) {
			zweiD[pos] = string[i];
			++pos; ++i;
		}  // while
         /* Auffuellen mit Nullen */
		zweiD[pos] = '^0';
		++pos;
	}  // while

}


/* Funktion zum Ausgeben der Tabelle */
print_string_2d( const dreiD[], dX, dY, dZ ) {
	new x,y,z;
	new cChar;
	new pos = 0;

	for ( y = 0; y < dY; ++y ) {
		for ( x = 0; x < dX; ++x ) {
			for ( z = 0; z < dZ; ++z ) {
				cChar = dreiD[pos]?dreiD[pos]:' ';
				printf( "%c",  cChar );
				++pos;
			}  // for

			printf( "   " );
		}  // for

		printf( "^n" );
	} // for
}

/* Funktion zum Auslesen eines Strings */
get_string_2d( string[], x, y, zweiD[], dX, dY, dZ ) {

	new pos = (y*dX + x) * dZ;
	new i = 0;
	
	while ( zweiD[pos] != 0 ) {
		string[i] = zweiD[pos];
		++pos; ++i;
	}  // while
	zweiD[pos] = '^0';
}


/* Das ganze Testen */
main() {

	const dX = 4;
	const dY = 5;
	const dZ = 12;
	const dim = dX * dY * dZ;

   /* Dies ist nun ein Array in dem die drei Dimensionen hintereinenader stehen */
   /* Reihenfolge ist z,x,y. Man kann sich das ganze als 2-d Flaeche vorstellen, 
       auf der Hochhaeuser Stehen. Beim Durchlaufen klappert man erst alle
       Stockwerke des Hauses an Position (0,0) ab, dann (1,0), (2,0), usw. */
	new einD[dim];

	new string[dZ];

	set_string_2d( einD, dX, dY, dZ, 0, 0, "null" );
	set_string_2d( einD, dX, dY, dZ, 1, 0, "eins" );
	set_string_2d( einD, dX, dY, dZ, 2, 0, "zwei" );
	set_string_2d( einD, dX, dY, dZ, 3, 0, "drei" );
	set_string_2d( einD, dX, dY, dZ, 4, 0, "vier" );
	set_string_2d( einD, dX, dY, dZ, 0, 1, "fuenf" );
	set_string_2d( einD, dX, dY, dZ, 1, 1, "sechs" );
	set_string_2d( einD, dX, dY, dZ, 2, 1, "sieben" );
	set_string_2d( einD, dX, dY, dZ, 3, 1, "acht" );
	set_string_2d( einD, dX, dY, dZ, 4, 1, "neun" );
	set_string_2d( einD, dX, dY, dZ, 0, 2, "zehn" );
	set_string_2d( einD, dX, dY, dZ, 1, 2, "elf" );
	set_string_2d( einD, dX, dY, dZ, 2, 2, "zwoelf" );
	set_string_2d( einD, dX, dY, dZ, 3, 2, "dreizehn" );
	set_string_2d( einD, dX, dY, dZ, 4, 2, "vierzehn" );
	set_string_2d( einD, dX, dY, dZ, 0, 3, "fuenfzehn" );


	print_string_2d( einD, dX, dY, dZ );

	get_string_2d( string, 2, 1, einD, dX, dY, dZ );
	printf( "^n^nString an Postition (%d,%d) ist '%s'.", 2, 1, string );
	

}

Ergibt als Ergebnis:
Code:
null          eins         zwei          drei            vier
fuenf       sechs      sieben       acht            neun
zehn        elf           zwoelf       dreizehn     vierzehn
fuenfzehn
 
String an Postition (2,1) ist 'sieben'. 
Obiger Code ist schnell zusammengeschrieben (aber gecheckt) und daher kein Beispiel fuer besondere Effizienz.

*edit* Super, und das nennt sich fixed font :roll: *edit*

_________________
There are no stupid questions, only stupid people.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 7 Beiträge ] 


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de
Original Design von "[ Half-Life Admin Mod © Alfred Reynolds 2000-2003 ] - [ site design by Jägermeister ]"