1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

"Programmdatenbank für bearbeiten und fortfahren" Visual Studio

  • Spite82
  • 18. September 2007 um 08:37
  • Unerledigt
  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 18. September 2007 um 08:37
    • #1

    Hallo,

    habe eine Frage an euch Profis!!
    Ich bin dabei ein Programm zu schreiben, in dem in etwa sowas mache:

    cross newCross;
    newCross = getShortLongLengths(newCross);

    Seit ich das eingebaut habe (und natürlich die Funktion) hängt wenn ich nicht, wie im Thread-Titel beschrieben, konfiguriere, das Programm auf.

    Die Methode liefert mir 2 Werte für newCross zurück: cross.long_length und cross.short_length (beides float).
    Wenn ich debugge und mir nach dieser Zeile die Werte anschaue, steht bei mir bei cross.long_length immer igendsowas wie 2.03847-den aus, bei cross.short_length stimmt der angezeigte Wert??
    Wenn ich jedoch mit cout << ...... die Werte ausgeben lasse, so stimmen diese.

    Also die Methode getShortLongLengths(cross newCross) sieht ca. so aus:
    {
    float area = STR_LENGTH * STR_LENGTH;
    float s_length = rand_uniform(STR_LENGTH * 0.65, STR_LENGTH * 0.8); //von erstem Wert bis max. zum 2. Wert eine Random-Zahl generieren
    float l_length = area/s_length;
    newCross.long_length = l_length;
    newCross.short_length = s_length;
    return newCross;
    }

    woran kann das liegen, daß mein Programm jetzt nur noch mit dieser Einstellung läuft? Hat jemand eine Erklärung dafür?

    Ich hoffe das ist keine zu extreme Noob-Frage, aber ich wüsste nicht, was da nicht hinhauen sollte.....

    Lg
    Spite

  • Lui
    4
    Lui
    Mitglied
    Punkte
    100
    Beiträge
    19
    • 18. September 2007 um 23:15
    • #2

    Hört sich schon irgendwie komisch an, ich bezweifel aber dass es irgendwas mit den Einstellungen zu tun hat.

    Ich verstehe auch nicht ganz wozu du das newCross überhaupt an die Funktion übergibts, außerdem wird es garnicht initialisiert. In der Funktion werden die Werte aber dann sowieso überschrieben ....? Oder übergibts du vielleicht eine Referenz, wobei du dann aber gar keinen Rückgabe wert benötigen würdest.

    Du hast ja 2 Variablen mit dem Namen newCross, eines außerhalb der Funktion und den Übergabeparameter, der so wie es aussieht die nicht initialisierte Struktur kopiert und dann auch nur innerhalb der Funktion gültig ist. Kann es sein dass du da evtl. das falsche newCross zum falschen Zeitpunkt überwachst und dabei eigentlich eh alles passt?

    Für mich logischer wäre:

    Code
    cross getShortLongLengths(void)
    {
        float area = STR_LENGTH * STR_LENGTH;
        float s_length = rand_uniform(STR_LENGTH * 0.65, STR_LENGTH * 0.8); //von erstem Wert bis max. zum 2. Wert eine Random-Zahl generieren
        float l_length = area/s_length; 
        cross temp;
        temp.long_length = l_length;
        temp.short_length = s_length;
        return temp;
    }
    ...
    cross newCross = getShortLongLengths();
    Alles anzeigen



    MfG Lui

    Beyond Reality

  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 19. September 2007 um 09:47
    • #3

    Ok, ich denke ich habs nicht so genau beschrieben, das newCross hat schon einige Werte zugewiesen, daher habe ich es auch übergeben.

    Das newCross in der Funktion ist eigentlich nur in der Funktion selbst sichtbar dachte ich..... vielleicht sollte ich es tatsächlich umbenennen, ist auch übersichtlicher denke ich....

    Stimmt, im Endeffekt kommt mir das irgendwie komisch vor, das das Programm laufen sollte mit meiner Einstellung und sonst nicht.
    Da ich aber sowieso noch einmal einiges verändert habe muß ich es sowieso erstmal wieder so weit bringen (vielleicht heut noch). Wenns dann wieder nicht funktioniert, melde ich mich wieder.

    Danke erstamal für deinen Tipp.
    Lg
    Spite

  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 19. September 2007 um 20:22
    • #4

    Also ich bin jetzt wieder so weit, wie ich war, als ich den Post geschrieben habe.

    Jetzt scheint alles zu funktionieren, wieso weiß ich allerdings auch nicht, aber die hauptsache ist ja, das es funkioniert.

    Lg
    Spite

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung