Verbindung meiner Tabellen

Da_Bow

Grünschnabel
Aufgabenstellung:

Es werden Zwei Tabellen gebraucht in denen X und Y Koordinaten vorhanden sind!
Die Tabellen sind unterschiedlich groß! Mit einer Schleife sollte ich die Tabellenname, Tabellen Spalte und Tabellen Zeile ändern können!

Was ich schon habe!:
Dies ist mein spot.h-File
Code:
static int TAB0[2][18]=	{{60,70,80,90,90,90,90,90,70,60,50,30,30,30,30,30,40,50},
						 {10,20,30,40,50,60,70,80,90,90,90,80,70,60,50,40,30,20},
						};
static int TAB1[2][17]=	{{60,70,80,90,100,110,120,120,120,120,120,100, 90, 80, 60, 60, 60,},
						 {10,20,30,40, 30, 20, 10,  0,-10,-20,-30,-40,-40,-40,-30,-20,-10,},
						};

____________________________________________________________________________
Ich habe schon meine zwei Tabellen jetzt brauch ich einen Funktion bzw. eine Definition wie ich diese Zwei Tabellen unter bestimmten Parameter aufrufen kann******
Code:
z.B: int SPOT[2]={*TAB0,*TAB1};

Dies geht jedoch leider nicht so!
____________________________________________________________________________
Code:
void X_Cnt(int WertX )
{	
    int i,j,k;
	j=0;
	k=0;
	CntTab=0;
	for(k= -5;k<5;k++)
	for(i=0;i<18;i++)
	{				   
	    if( TAB0[0][i]== WertX || TAB0[0][i] +k == WertX)
		{
			CntTab++;
			CntBuf[j++]= TAB0[1][i];
		}
return;
}

____________________________________________________________________________
In meiner Funktion will ich nicht jedesmal schreiben TAB0 dann TAB1! Dieser Tal soll durch eine Schleife ersetzt werden!

Hat jemand eine Idee?
Bin kurz vorm Verzweifeln:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(!:mad:
Vielen Dank im Voraus!
 
Hi und Willkommen bei tutorials.de,

C++:
//Am Anfang
int *TAB[2];
int tabDimSize[2];
...
TAB[0] = (int *)TAB0;
tabDimSize[0] = 18; //Größe der zweiten Dimension
TAB[1] = (int *)TAB1;
tabDimSize[1] = 17;

...
//Zugriff auf TABn, Index [a][b]:
TAB[n][a * tabDimSize[n] + b] = ...;

Sonstiges:
Wenn dir nicht klar ist, warum vor den Arrays in der h-Datei static steht, dann entferne es.

(Satzzeichen etc. sind keine Rudeltiere.)
 
Hi ich glaub du hast nicht verstanden was ich möchte******
Und zwar ich brauch nicht zwei dimensionen sondern 3!

Ich möchte Sagen:
Tabellen
Zeilen
Spalten

z.B.: Tabbelle 1 hat zwei Spalten und 23 Zeilen

z.B.: Tabbelle 3 hat zwei Spalten und 44 Zeilen

ok?
 
Zuletzt bearbeitet:
Hallo

Ich verstehe nicht ganz, was das bedeutet:
Ich habe schon meine zwei Tabellen jetzt brauch ich einen Funktion bzw. eine Definition wie ich diese Zwei Tabellen unter bestimmten Parameter aufrufen kann******
Willst du einen Array von Tabellen und dann auf einen Index dieses Arrays zugreifen?
Grundsätzlich: Codetags verwenden.

Gruss
cwriter
 
So zum letzeten mal dass es alle verstehen was ich möchte!
Wie man oben sieht habe ich zwei Tabellen. Eine mit Tab0[2][18]und eine mit Tab1[2][17]
Die esrte dimension der Arrays ist bei den beiden gleich [2] die zweite ist jedoch unterschiedlich!
Da ich nicht TAB[2][2][18] schreiben will weil es bei der TAB1 den Array [1][18] und [0][18] nicht gibt möchte ich die Tabbelen zusammen fügen!
zB.: SPOT[2]={*TAB0,*TAB1}; dies funktioniert leider nicht
Damit ich später in eine schleife nicht nur die TAB0 nach einem Wert durchsuchen kann.
Sondern mit der TAB1 weitermachen kann!
ich hoffe das war deutlich was ich meine!
Sorry für Umstände!
 
Irgendwie verstehe ich nicht wozu das gut sein soll.

Wenn du beide Tabellen im Grunde gleich behandeln willst, dann schreib dir einfach eine Funktion die eine Tabelle verarbeitet und rufe diese Funktion erst für TAB0 auf, und danach für TAB1.

Ansonsten hat sheel bereits demonstriert wie du die Tabellen wie gewünscht verarbeiten kannst (du hast es nur falschnicht verstanden).
 
Also nochmal!
In den Tabellen stehen werte siehe oben!
Diese Werte muss ich vorher initialisieren!
Ich brauche nur eine Funktion in der ich die Tabellen zusammen fassen kann!
Und in der ich auf die erste dimension bzw zweite dimension zugreifen kann!
Ist es so schwer zu verstehen?
 
In den Tabellen stehen werte siehe oben!
Ja.
Diese Werte muss ich vorher initialisieren!
Äh, ja?
Ich brauche nur eine Funktion in der ich die Tabellen zusammen fassen kann!
Und wir brauchen bzw. verlangen einen freundlicheren Ton.
Und in der ich auf die erste dimension bzw zweite dimension zugreifen kann!
Sag mal, hast du sheels Beitrag gelesen?
Du erwartest doch sowas wie int Mappe[2][2][18]. Da die 18 nicht gegeben ist, musst du mit Pointern arbeiten, auch wenn du es nicht wahrhaben willst.
Ist es so schwer zu verstehen?
Ja.

Gruss
cwriter

EDIT: sheels Beispiel IST dreidimensional. Du hast deine schon zweidimensionalen Tabellen, dazu kommt die dritte Dimension von int *TAB[2].
 
Zuletzt bearbeitet:
wo ist dann die erste Dimension?
Ich checks nicht!
Sorry bin am verzweifeln!
Erklär mir einfach wie ich z.B.: auf TAB0[0][5] und TAB1[0][5] mit seiner Funktion zugreifen kann! Dann check ich es!
 
Zuletzt bearbeitet:
Ok.

x ist die erste Dimension.
y ist die zweite Dimension.
z ist die dritte Dimension.

Soweit zur Geometrie. In der Programmierung kann man sich daran halten, jedoch ist es ein wenig anders.

int i ist eine Dimension, da äquivalent zu int i[1].
int i[1][2][3].... Mit jedem Paar eckiger Klammern kommt eine Dimension hinzu.
Soweit die Basics.
Bei sheels Beispiel hast du nun folgendes:
Deine 2D-Tabellen wie z.B. TAB1[2][18] und ein Containerarray.
TAB1 ist für den Computer nur eine lange Kette an 4-Byte-Blöcken. 2*18=36, und [2][18]==[36].
Soweit klar?
Sheel holt sich den Pointer, der auf den Anfang dieser Kette zeigt und fügt diesen an int *TAB[2] an. Danach iteriert er durch.
Alles klar?

Gruss
cwriter

EDIT: In deinem Fall konkret
C:
//Zugriff auf TABn, Index [a][b]:
TAB[n][a * tabDimSize[n] + b] = ...;
//n ist die Nummer der Tabelle, a*tabDimSize[n] ist die erste Dimension und b ist die zweite.
//TAB1[a][b] == TAB[1][a * tabDimSize[1] + b]
 
Zuletzt bearbeitet:
Zurück