Frage zu bool funktion



  • if (str[k]!=('A'||'G')
    {
        a = false;
        break;
    }
    

    Wie kann das kompilieren?



  • Mein Gott, nimm doch einfach einen Algorithmus 😮 😮

    bool test (string str)
    {
       return str.find_first_not_of("AG") == std::string::npos;
    }
    

    Edit: Rechtschreibfehler.
    Edit³: Man, ich mach die ganze Zeit Flüchtigkeitsfehler... 🙄


  • Mod

    FreakY<3Cpp schrieb:

    if (str[k]!=('A'||'G')
    {
        a = false;
        break;
    }
    

    Wie kann das kompilieren?

    Das ist zwar nicht sinnvoll, aber gültiges C++. Zuerst wird 'A' mit 'G' logisch verODERt, was true ergibt. true ist in den Zahlenwert 1 konvertierbar. Dieser wird mit str[k] verglichen. Das ist den Compilern die ich kenne nicht einmal eine Warnung wert.



  • SeppJ schrieb:

    FreakY<3Cpp schrieb:

    if (str[k]!=('A'||'G')
    {
        a = false;
        break;
    }
    

    Wie kann das kompilieren?

    Das ist zwar nicht sinnvoll, aber gültiges C++. Zuerst wird 'A' mit 'G' logisch verODERt, was true ergibt. true ist in den Zahlenwert 1 konvertierbar. Dieser wird mit str[k] verglichen. Das ist den Compilern die ich kenne nicht einmal eine Warnung wert.

    Ich meinte eher die Klammersetzung.



  • FreakY<3Cpp schrieb:

    SeppJ schrieb:

    FreakY<3Cpp schrieb:

    if (str[k]!=('A'||'G')
    {
        a = false;
        break;
    }
    

    Wie kann das kompilieren?

    Das ist zwar nicht sinnvoll, aber gültiges C++. Zuerst wird 'A' mit 'G' logisch verODERt, was true ergibt. true ist in den Zahlenwert 1 konvertierbar. Dieser wird mit str[k] verglichen. Das ist den Compilern die ich kenne nicht einmal eine Warnung wert.

    Ich meinte eher die Klammersetzung.

    Aha! Hier haben wir also einen klaren Fall von NICHT KOPIERT! 🤡



  • Sone schrieb:

    FreakY<3Cpp schrieb:

    SeppJ schrieb:

    FreakY<3Cpp schrieb:

    if (str[k]!=('A'||'G')
    {
        a = false;
        break;
    }
    

    Wie kann das kompilieren?

    Das ist zwar nicht sinnvoll, aber gültiges C++. Zuerst wird 'A' mit 'G' logisch verODERt, was true ergibt. true ist in den Zahlenwert 1 konvertierbar. Dieser wird mit str[k] verglichen. Das ist den Compilern die ich kenne nicht einmal eine Warnung wert.

    Ich meinte eher die Klammersetzung.

    Aha! Hier haben wir also einen klaren Fall von NICHT KOPIERT! 🤡

    Ja, damit man weiß was ich meine. Übrigens ist deine Lösung falsch.



  • FreakY<3Cpp schrieb:

    Übrigens ist deine Lösung falsch.

    weil..........
    Edit: Jetzt ohne Spaß, die ist völlig korrekt.



  • Nach 3 mal editieren schon.



  • Namal schrieb:

    die einen String darauf testet ob nur Buchstaben A und G drin vorkommen.

    Sone schrieb:

    FreakY<3Cpp schrieb:

    Übrigens ist deine Lösung falsch.

    weil..........
    Edit: Jetzt ohne Spaß, die ist völlig korrekt.

    Der TE will, dass beide Buchstaben vorkommen sollen.

    bool test(const string& str)
    {
    	return str.find_first_not_of("AG") == std::string::npos;
    }
    
    int main()
    {
    	cout << boolalpha << test("AAAA") << endl; // sollte false sein.
    	cout << boolalpha << test("GGGG") << endl; // sollte false sein.
    	cout << boolalpha << test("AAGG") << endl; // nur das sollte true sein.
    }
    


  • Sone schrieb:

    Mein Gott, nimm doch einfach einen Algorithmus 😮 😮

    Er bastelt sich doch nen Algorithmus. Du rufst einfach nur ne Funktion auf.

    Gugelmoser schrieb:

    Der TE will, dass beide Buchstaben vorkommen sollen.

    Wo steht das?



  • Michael E. schrieb:

    Gugelmoser schrieb:

    Der TE will, dass beide Buchstaben vorkommen sollen.

    Wo steht das?

    quote - String darauf testet ob nur Buchstaben A und G drin vorkommen. - end quote

    Zumindest verstehe ich das unter und . :p



  • Das verstehe ich aber auch anders als du, Gugelmoser. Mit "A und G" bezeichnet er hier eine Menge an zulässigen Zeichen. Und falls ein Zeichen im String vorkommt, welches nicht aus dieser Menge ist, soll false ausgegeben werden, sonst true. So verstehe ich das. Und es sieht mir auch so aus, als ob das mit dem find_first_not_of eine Lösung dafür wär.



  • Bin immer wieder erstaunt welche diskussionen einfache fragen entfachen 🙂

    Also die aufgabe war einen DNA strang darauf zu überprüfen ob nur A T G und C drin vorkommen und dann aufgaben die darauf aufbauen. zB. dass der Strang durch drei teilbar ist usw. Die klammarsetzung war natürlich völliger blödsinn, aber bin ja auch anfänger :p



  • Namal schrieb:

    Bin immer wieder erstaunt welche diskussionen einfache fragen entfachen 🙂

    Ich bin immer wieder erstaunt darüber, wie unpräzise man Fragen stellen kann.

    Namal schrieb:

    Also die aufgabe war einen DNA strang darauf zu überprüfen ob nur A T G und C drin vorkommen

    Ein DNA Strang hat immer nur A T G und C "drin". Du willst wahrscheinlich einen String (Zeichenkette) überprüfen, ob sie einen DNA Strang repräsentiert (rate ich jetzt mal).



  • krümelkacker schrieb:

    Ich bin immer wieder erstaunt darüber, wie unpräzise man Fragen stellen kann.

    Dein nick ist bei dir wohl das programm...



  • In diesem Gewerbe erleichtert das die Kommunikation untereinander und insbesondere die mit dem Computer ungemein, denn
    Computer sind doof.



  • Und ich kapiere nicht, wie man die Frage des OP falsch verstehen kann.

    Das einzige was der OP verbessern kann ist der Threadtitel. Die Frage war sonnenklar.



  • FreakY<3Cpp schrieb:

    Nach 3 mal editieren schon.

    Tut mir Leid, aber dein Beitrag war 5 Minuten nach meinem letzten Edit.
    🙂
    Aber sry, ich muss weniger Editieren.

    @Michael: HMM? Wurde ihm vorgeschrieben, dass er selber einen so banalen Algorithmus programmieren soll?
    Anstatt sich also die Hände schmutzig zu machen, tut er, was alle Programmierer tun: faul sein 😃



  • Sone schrieb:

    @Michael: HMM? Wurde ihm vorgeschrieben, dass er selber einen so banalen Algorithmus programmieren soll?

    Was Michael meint ist, dass es bereits ein Algorithmus war. Du hast nur eine Funktion aufgerufen.



  • Shade Of Mine schrieb:

    Und ich kapiere nicht, wie man die Frage des OP falsch verstehen kann.

    Das einzige was der OP verbessern kann ist der Threadtitel. Die Frage war sonnenklar.

    Vorallem wenn man sich dann selbst mit sowas "ownt"

    krümelkacker schrieb:

    Ein DNA Strang hat immer nur A T G und C "drin". Du willst wahrscheinlich einen String (Zeichenkette) überprüfen, ob sie einen DNA Strang repräsentiert (rate ich jetzt mal).

    Wo ist bei deinem "nur A T G und C" zu meinem "nur A und G" ?? Soweit mir bekannt, müssen nicht alle diese buchstaben vorkommen.


Anmelden zum Antworten