tutorials.de Buch-Aktion 05/2012
Like Tree4Danke
  • 1 Beitrag von sheel
  • 1 Beitrag von MCoder
  • 1 Beitrag von MCoder
  • 1 Beitrag von sheel
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
998
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kroatinho kroatinho ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    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
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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
    Code cpp:
    1
    
    int i;
    legt man das dann so an:
    Code cpp:
    1
    
    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:
    Code cpp:
    1
    
    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
    Code cpp:
    1
    
    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ß
    kroatinho bedankt sich. 

  3. #3
    kroatinho kroatinho ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    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ß
     

  4. #4
    kroatinho kroatinho ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    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ß
     

  5. #5
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    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
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    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;

    Zitat Zitat von kroatinho Beitrag anzeigen
    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
    kroatinho bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  6. #6
    kroatinho kroatinho ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    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
     

  7. #7
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Das 'n' kann man auf jeden Fall noch mit in die struct aufnehmen:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    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
    kroatinho bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    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ß
    kroatinho bedankt sich. 

Ähnliche Themen

  1. Webservice: Visual Studio 2008 vs Visual Studio 2010 Express for Windwos Phone
    Von Johannes7146 im Forum .NET Web und Kommunikation
    Antworten: 4
    Letzter Beitrag: 27.09.10, 23:06
  2. Antworten: 3
    Letzter Beitrag: 07.08.08, 15:23
  3. Antworten: 2
    Letzter Beitrag: 18.11.04, 19:20
  4. Antworten: 2
    Letzter Beitrag: 16.11.04, 17:12
  5. Eine Frage im zusammenhang von Visual BASIC und Visual STUDIO
    Von CodeControl im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 29.09.04, 09:20

Stichworte