Visual Studio C++ Tabelle (nwerte einlesen)

kroatinho

Grünschnabel
Ich bin dabei ein programm in Visual Studio C++ zu entwickeln ( bin unerfahren) und habe nun folgendes Problem. Ich möchte eine Klasse anlegen die folgendes macht
Ich schreibe in Sie eine Art "Tabelle"
1. sie errechnet mir den wert n = y + z
2. mit dem errechneten n möchte ich aus folgender "Tabelle" die zugehörigen Werte H, G, T mir zum weiteren rechnen entnehmen.

Tabelle

n H G T
1 8 11 3
2 7 55 6
3 4 43 8
4 6 41 7
5 3 30 11

3. ich rechne mit den Werten weiter z.B. OP = (H * G) + T

Wie realiesiere ich das vorallem das mit der Tabelle wie lege ich diese an?

Ich bedanke mich im Vorraus für eure Antwort
 
Hi und Willkommen bei tutorials.de :)

Ich bin mir nicht ganz sicher, ob ich dich richtig verstanden habe, aber:
Du suchst wahscheinlich ein zweidimensionales Array.
Bei deiner Tabelle, ist da n immer 1-2-3-4...durchnummeriert oder nicht?
Wenn es so nummeriert ist brauchst du n gar nicht mitspeichern.

Ein Array ist prinzipiell einmal eine Menge von Variablen, zB nicht nur ein int, sondern 20.
Statt
C++:
int i;
legt man das dann so an:
C++:
int i[20];

Auf die einzelnen ints kannst du mit den [] Klammern und einer Nummer zugreifen (die praktisch dein n ist):
zB i[2], i[17] usw...
Zu zählen begonnen wird bei 0.
Ein "int i[20]" hat also 20 ints von i[0] bis i[19].

Für deine Tabelle brauchst du jetzt ein sogenanntes zweidimensionales Array.
=ein Array, das wieder aus mehreren Array aus ints... besteht.
Ein normales (eindimensionales) Array wäre daher mit einer Zeile deiner "Tabelle" vergleichbar.
Ein zweidim. Array ist dann ein Array aus Zeilen, also eine ganze Tabelle.

Angelegt wird das für zB 4 Zeilen mit jeweils 8 Spalten mit ints so:
C++:
int meinarray[4][8];

Da bei 0 zu zählen begonnen wird, ist die vierte Spalte aus der zweiten Zeile: meinarray[1][3]

Wenn du jetzt deine H-G-T-Tabelle hast, sind das drei Spalten.
Angenommen, du hast 100 solche HGT´s, ist das dann
C++:
int tabelle[100][3];

Aus der ersten Zeile sind dann H tabelle[0][0], G tabelle[0][1] und T tabelle[0][2].

Noch was: Bitte beachte in Zukunft die Netiquette, der du bei deiner Anmeldung zugestimmt hast.
Einen Link findest du jederzeit ganz unten.

Gruß
 
danke für die flotte antwort!
kann man die tabelle nicht irgendwie mit Set/Get einlesen und anlegen und dann jenachdem welches n ich herausbekomme die zugehörigen werte entnehmen?
gruß
 
danke für die flotte antwort!
kann man die tabelle nicht irgendwie mit Set/Get einlesen und anlegen und dann jenachdem welches n ich herausbekomme die zugehörigen werte entnehmen?
gruß
 
Hallo,

da möglicherweise feststeht, welche Einträge in einer Tabellenzeile enthalten sein sollen (H, G und T), würde ich statt des zweidimensionalen Arrays lieber ein struct für die Daten einer Zeile verwenden und diese dann in ein eindimensionales Array stecken. Da macht die Sache etwas übersichtlicher :-)
C++:
typedef struct
{
    int H;
    int G;
    int T;
} TableData;

TableData aTableData[100];  // legt eine Tabelle mit 100 Zeilen an

// Füllen der n-ten Zeile (n darf natürlich nicht größer als 99 sein)
int n = 10;
aTableData[n].H = 8;
aTableData[n].G = 11;
aTableData[n].T = 3;

// Rechnen mit Werten der n-ten Zeile (n darf natürlich nicht größer als 99 sein)
int n  = 10;
int OP = (aTableData[n].H * aTableData[n].G) + aTableData[n].T;

kann man die tabelle nicht irgendwie mit Set/Get einlesen und anlegen und dann jenachdem welches n ich herausbekomme die zugehörigen werte entnehmen?
Ich hoffe Zuweisung und Zugriff wird aus meinem obigen Beispiel klar. Das n interpretiere ich mal als laufende Nummer und entspricht daher dem Index des Arrays. Beachte, dass bei C/C++ die Indexierung immer mit 0 beginnt.

Das obige Beispiel realisiert ein sogenanntes statisches Array, d.h. die Anzahl der Arrayelemente, respektive der Tabellenzeilen ist festgelegt und unveränderbar. Falls die Anzahl der Zeilen vorher nicht bestimmbar ist, muss eine dynamische Datenstruktur verwendet werden, z,B. die Klasse "vector" aus der C++ - Klassenbibliothek.

Gruß
MCoder
 
SUPER ANTWORT DANKE******

abher habe eins ist mir nicht klar mein n ist kein INDEX das heist meine Tabelle könnte auch so aus sehen wie mache ich es dann?

Tabelle

Tabelle

n H G T
1.2 8 11 3
2.7 7 55 6
4.9 4 43 8
5.0 6 41 7
5.5 3 30 11
 
Das 'n' kann man auf jeden Fall noch mit in die struct aufnehmen:
C++:
typedef struct
{
    int n;
    int H;
    int G;
    int T;
} TableData;

Deinen vorletzten Post hatte ich so interpretiert, dass 'n' als so eine Art Schlüssel zur Identifizierung der Tabellenzeile dienen soll. Wenn Werte mehrfach vorkommen können (wie in deinem letzten Beispiel) funktioniert das natürlich nicht.

Gruß
MCoder
 
Wenn du durch n die anderen Werte finden möchtest, musst du alle durchgehen und prüfen, wo dein n ist.

Ich hab mich mal beim Code von MCoder bedient:
C++:
typedef struct
{
    int H;
    int G;
    int T;
} TableData;
 
TableData aTableData[100];

//Füllen... 

int i,OP,suchn=33;    //zB wenn du n=33 haben willst
for(i=0;i<100;i++)
{
    if(aTableDate.n==suchn)
    {
        OP = (aTableData[i].H * aTableData[i].G) + aTableData[i].T;
        //mach noch was mit OP
    }
}

Gruß
 
Zurück