Anfang bis Ergebnis



  • n'guten Mittag 😃

    hab folgendes Programm geschrieben und es funzt was nicht:

    int grafik, ram;
            int ram_t = 1024, grafik_t = 128;
            //ram => 2048; grafik => 256;
            for(grafik = grafik_t, ram = ram_t; grafik != 2048, ram != 256; ++grafik, ++ram)
            if(grafik == 256 && ram == 2048)
                {
                break;
                }
                cout<<grafik<<endl<<ram;
    

    Dabei will ich dass die For-Anweisung so lange "ram" und "grafik" erhöht,bis die Werte so aussehen:

    ram => 2048; grafik => 256;
    

    Aber dabei sollten erst die beiden Werte ausgegeben werden,wenn sie auch die gewünschten Werte haben und nicht

    0
    1
    2
    3
    ..
    2048
    
    0
    1
    2
    3
    4
    ..
    256
    

    Das sollte auf gar keinen Fall kommen,sondern nur einfach das Endergebnis.
    Weil wenn ich es so mit meinem derzeitigen Code ausführe,passiert nichts d.h die Konsole ist komplett leer.. -.-'

    Daniel 😉



  • int grafik, ram;
            int ram_t = 1024, grafik_t = 128;
            //ram => 2048; grafik => 256;
            for(grafik = grafik_t, ram = ram_t; grafik <= 256 && ram <= 2048; ++grafik, ++ram)
            {                  // Block vergessen
                if(grafik == 256 && ram == 2048)
                {
                     break;
                }
           }
           cout<<grafik<<"\n"<<ram<<endl;
    

    Edit gedrückt, statt zitieren 🙄



  • hallo,

    danke es klappt,aber leider kommt folgendes heraus:

    257
    1153

    Warum nur das?

    daniel 😉



  • Naja, überleg dir mal, was deine Schleife macht.
    Sie zählt einerseits von 128 bis 256 und andererseits von 1024 bis 2048. Welcher Wert wird denn zuerst erreicht?
    Was willst du eigentlich erreichen?



  • THX 1138 schrieb:

    Was willst du eigentlich erreichen?

    ram sollte 2048
    und
    grafik sollte 256 werden.

    aber ich verstehe die schleife echt nicht ^^
    für mich klingt sie ganz logisch,nur funktionieren tut sie nicht wie ich es will ..

    daniel 😉



  • vIELLEICHT N

    UR eine variable PRO

    SCHLEIfe.



  • for(
                      grafik = grafik_t, ram = ram_t;          // grafik und ram werden vor dem ersten Schleifendurchgang gesetzt
                      grafik <= 256 && ram <= 2048;     // Die Schleife wird solange durchgeführt, wie grafik kleiner-gleich 256 und ram kleiner-gleich 2048 ist
    ++grafik, ++ram)                             // In jedem Durchgang werden beide um eins erhöht
    

    So, und wenn nun grafik 257 ist, hört die Schleife auf

    Mach doch einfach zwei Schlaufen 🙂
    Oder gleich grafik = 256; ram = 2048; 😃



  • for(unsigned short graphic = 128, ram = 1024; (graphic <= 256 && ram <= 2048); ++graphic, ++ram);
    
    std::cout << graphic << std::endl;
    std::cout << ram << std::endl;
    

    Wo der sinn ist bleibt allerdings verborgen ...



  • THX 1138 schrieb:

    for(
                      grafik = grafik_t, ram = ram_t;          // grafik und ram werden vor dem ersten Schleifendurchgang gesetzt
                      grafik <= 256 && ram <= 2048;     // Die Schleife wird solange durchgeführt, wie grafik kleiner-gleich 256 und ram kleiner-gleich 2048 ist
    ++grafik, ++ram)                             // In jedem Durchgang werden beide um eins erhöht
    

    So, und wenn nun grafik 257 ist, hört die Schleife auf

    irgendwie kommt da kein ergebnis heraus,obwohl ich es ausgegeben hab:

    int grafik, grafik_t = 1024;
        int ram, ram_t = 128;
        for(grafik = grafik_t, ram = ram_t;          // grafik und ram werden vor dem ersten Schleifendurchgang gesetzt
            grafik <= 256 && ram <= 2048;     // Die Schleife wird solange durchgeführt, wie grafik kleiner-gleich 256 und ram kleiner-gleich 2048 ist
            ++grafik, ++ram)
            cout<<grafik;
    

    THX 1138 schrieb:

    Mach doch einfach zwei Schlaufen 🙂

    Wenn das erste (sprich deine erste Antwort mit Code) funktionieren würde,dann würde ich es ja machen.. 😉

    THX 1138 schrieb:

    Oder gleich grafik = 256; ram = 2048; 😃

    Das is das billigste was ich je gehört hab 😃

    (D)Evil schrieb:

    for(unsigned short graphic = 128, ram = 1024; (graphic <= 256 && ram <= 2048); ++graphic, ++ram);
    
    std::cout << graphic << std::endl;
    std::cout << ram << std::endl;
    

    Wo der sinn ist bleibt allerdings verborgen ...

    Funktioniert nicht einmal .. aber danke trotzdem für die Mühe 👍

    daniel 😉



  • Vielleicht so:

    int grafik, ram;                   
    int grafik_t = 128, ram_t = 1024; 
    
    for(grafik = grafik_t; grafik != 256; grafik++)
    {
        if(grafik == 256)
        {
            break;
        }
    }
    
    for(ram = ram_t; ram != 2048; ram++)
    {
        if(ram == 2048)
        {
            break;
        }
    }
    
    cout << ram << endl << grafik << endl;
    

    Sinn ergeben die Schleifen aber keinen da man gleich: grafik = 256 ram = 2048 schreiben könnte!



  • Hmm sorry hab vergessen das du ja nicht in der Lage bist einen Code leicht anzupassen damit er funktioniert ...

    const unsigned short	const_graphic	= 128; // Hier halt der Ausgangswert für graphic angeben
    const unsigned short	const_ram		= 1024; // Hier Ausgangswert für Ram angeben
    const unsigned short	max_ram			= 2048; // Den zu erreichenden Wert für Ram angeben
    const unsigned short	max_graphic		= 256; // Den zu erreichenden Wert für Graphic angeben
    unsigned short			graphic			= const_graphic; // Damit du auch ja nichts anpassen musst ... hier wird dein Ausgangswert in eine Variable kopiert, damit deine Ausgangsvariable in Ruhe gelassen wird ...
    unsigned short			ram				= const_ram; // das selbe für ram ...
    
    while (++graphic < max_graphic); // Hochzählen ...
    while (++ram < max_ram);
    
    std::cout << graphic << std::endl; // Ausgeben ...
    std::cout << ram << std::endl;
    


  • Danke Leute,dieser Support hier ist echt ein Wahnsinn!
    Ich bedanke mich recht herzlich an alle,die mir geholfen haben 😉

    Mit freundlichem Gruß
    Daniel



  • :Daniel: schrieb:

    hallo,

    danke es klappt,aber leider kommt folgendes heraus:

    257
    1153

    Warum nur das?

    daniel 😉

    weil die for-Schreife nicht wegen des break in dem if verlassen wird, sondern,
    da deine for-Bedingung nicht mehr erfüllt ist: 257<=256 -> falsch


Anmelden zum Antworten