2 Probleme für meine Projekt arbeit



  • Mechanics schrieb:

    itjohnny schrieb:

    es wird wohl noch mehr Ungereimtheiten haben

    Ja. Das ist z.B. ziemlicher Quatsch:

    char farben[21][20]

    Dies wurde uns anhand eines anderen Beispiels in der Schule so gezeigt.
    Einfach an einem anderen Muster.
    Ich muss eine Auswahl haben bis 21, weil bei der Eingabe von 20 die Ausgabe:"Kein Ring" erscheinen muss.



  • Besser wäre

    const char* farben[21] = { /* ... */ };
    


  • Th69 schrieb:

    Besser wäre

    const char* farben[21] = { /* ... */ };
    

    Werde es gleich mal anpassen.

    Ich muss hier schon mal ein riesengrosses Kompliment aussprechen an dieses Forum. Ich hatte es mir schon länger überlegt, mich hier anzumelden, hatte aber das Gefühl, das ich dies alleine bewerkstelligen kann.
    Ich finde es wirklich super von Euch, wie hilfsbereit man in diesem Forum ist.

    Danke schon mal vorab:)



  • itjohnny schrieb:

    Also wäre noch das Problemchen mit der Abfrage ob 4 oder 5 Ringe
    und die Wertzuweisung

    Die Abfrage kannst du im Prinzip genauso aufbauen wie für die Farben. Solange Werte ungleich 4 oder 5 eingegeben werden soll die Schleife durchlaufen und abfragen.

    Ich würde mich auch von der Vorstellung trennen mit "Farben" zu rechnen. Sofern ich die Farbcodes richtig verstanden habe musst du doch nur an der 3./4. Stelle mit anderen Werten rechnen als dir deine Integer ring1, ring2, ring3,... liefern. Hier bietet sich eig. die Verwendung von switch an

    switch(ring3)
    {
        case 1:
        {
            multiplikator=XY;
            break;
        }
        case 2:
        {
            multiplikator=XYZ;
            break;
        }
        case 3:
        ...
    }
    

    Für die Toleranz an Stelle 4 kannst du das dann ähnlich aufbauen.

    Wenn du dein switch noch in eine separate Funktion "auslagerst" kannst du auch ganz bequem die Fallunterscheidung zwischen 4 und 5 Ringen vornehmen.

    Viel Spaß und nicht verzweifeln 😃



  • Maisinator schrieb:

    Hier bietet sich eig. die Verwendung von switch an

    Kann man machen, wird aber ganz schön länglich. Eigentlich reicht hier auch ein Array oder bei der Multiplikator kann man sogar eine Formel (10^ring3) nehmen.



  • ja, das hast Du richtig verstanden. bin zwar nicht mehr zum versuchen gekommen, aber heute nachmittag gehts.

    ich verstehe auch nicht wie ich beim Ring 3 die Abfrage hinbekomme, dass man nur zwischen zahl 0-6 und 10 und 11 wählen kann. Habe jetzt fast alles durchprobiert aber begreife es nicht. Obwohl ich eigentlich dieses Fach nicht wirklich mag,(hauptsächlich weil ich es nicht verstehe) finde ich, steckt eine grosses Potential dahinter um sich mehr damit zu beschäftigen. Es lässt mich manchmal gar nicht mehr los 🙂

    Also ich werde am Nachmittag noch mal alles durchprobieren und melde mich wieder.

    Hier ist noch der Code vom RIng 3 der nicht funktionieren will

    do 
    			{
    			cout <<"geben sie die Farbe des 3. Rings ein (0 bis 6 || 10 oder 11): ";
    			cin >> ring3;
    		}while((ring3<0) || (ring3>6) || (ring3==10) || (ring3==11));
    


  • So gehts:

    while((ring3<0 || ring3>6) && ring3!=10 && ring3!=11)
    

    Die Schleife wird solange ausgeführt wie ring3 nicht zwischen 0 und 6 ist, und auch nicht 10, und auch nicht 11 ist. Ich hab mich gerade aber auch ein paarmal vertan bin ich die richtige Bedingung hatte 😉



  • sebi707 schrieb:

    So gehts:

    while((ring3<0 || ring3>6) && ring3!=10 && ring3!=11)
    

    Die Schleife wird solange ausgeführt wie ring3 nicht zwischen 0 und 6 ist, und auch nicht 10, und auch nicht 11 ist. Ich hab mich gerade aber auch ein paarmal vertan bin ich die richtige Bedingung hatte 😉

    Wenigstens war ich schon mal nicht weit daneben. Ich hatte die 2 && auch schon probiert, aber wahrscheinlich die falschen vergleichsoperatoren

    Danke 😃



  • Man kann doch auch gleich den Text 1:1 umsetzen und dann die Abfrage negieren:

    do
    {
        cout <<"geben sie die Farbe des 3. Rings ein (0 bis 6 || 10 oder 11): ";
        cin >> ring3;
    } while(!((ring3>=0 && ring3<=6) || ring3==10 || ring3==11));
    

    Mittels der De Morgansche Gesetze ergibt das dann den von sebi707 beschriebenen Ausdruck.

    PS: Die Klammern um das && habe ich nur zur Verdeutlichung hingeschrieben - auch ohne wäre es richtig, da && stärker bindet als ||.



  • Th69 schrieb:

    Man kann doch auch gleich den Text 1:1 umsetzen und dann die Abfrage negieren:

    do
    {
        cout <<"geben sie die Farbe des 3. Rings ein (0 bis 6 || 10 oder 11): ";
        cin >> ring3;
    } while(!((ring3>=0 && ring3<=6) || ring3==10 || ring3==11));
    

    Mittels der De Morgansche Gesetze ergibt das dann den von sebi707 beschriebenen Ausdruck.

    PS: Die Klammern um das && habe ich nur zur Verdeutlichung hingeschrieben - auch ohne wäre es richtig, da && stärker bindet als ||.

    Danke Dir für den Tip, aber ich glaube das bring ich nicht auf die Reihe.
    Mal schauen. eins nach dem anderen

    EDIT: hab den letzten Beitrag nach mehrmaligem Lesen doch nun auch verstanden. Ist die gleiche Abfrage einfach auf einen anderen Weg.

    Zu der Frage wegen den 4 oder 5 ringen:
    Sehe ich das richtig, das diese Abfrage eine if/else ist und gehe ich da richtig vor das ich beim if einfach die 4 Ringe nach einander ausgebe und bei else dann alle 5.
    Ich habs mal so gemacht, habe aber natürlich jede menge fehler



  • Th69 schrieb:

    Man kann doch auch gleich den Text 1:1 umsetzen und dann die Abfrage negieren:

    do
    {
        cout <<"geben sie die Farbe des 3. Rings ein (0 bis 6 || 10 oder 11): ";
        cin >> ring3;
    } while(!((ring3>=0 && ring3<=6) || ring3==10 || ring3==11));
    

    Mittels der De Morgansche Gesetze ergibt das dann den von sebi707 beschriebenen Ausdruck.

    PS: Die Klammern um das && habe ich nur zur Verdeutlichung hingeschrieben - auch ohne wäre es richtig, da && stärker bindet als ||.

    Also dieser Code will bei mir so nicht funktionieren,mit oder ohne klammern.



  • Bei mir schon. Sicher das du alles richtig mit kopiert hast? Auch die Negation (Ausrufezeichen) am Anfang? Oder was funktioniert nicht richtig?



  • ja, brauchte mehrere anläufe, weil du so viele klammer gemacht hast:)
    im besten Fall, hats bei mir eben auch noch die anderen Zahlen die nicht erwünscht sind auch eingelesen, oder dann einfach nicht weitergegangen zu ring4



  • Hallo alle miteinander

    Ich bin jetzt noch auf zwei Probleme gestossen und weiss nicht mehr weiter.
    Das Code hat funktioniert, bis ich die abfrage für die toleranzwerte hinzugefügt habe. bin auch wirklich nicht sicher ob das so korrekt ist.

    wenn jemand noch mal lust hätte drauf zu schauen und mir vielleicht noch paar tipps geben kann, wäre ich sehr dankbar. die berechnung für den zweiten toleranzwert funktioniert auch nicht richtig.

    vielen Dank im voraus

    http://ideone.com/e.js/t8RwjG


Anmelden zum Antworten