Quellcode erstellen !! ich komm nicht weiter hab meinen quellcode reingeschrieben den ich bisher habe könnt ihr mir weit



  • Hallo Liebe Leutz;
    ich habe eine sehr dringende bitte ich schreibe morgen ne klassenarbeit in c++, und habe ne aufgabe die ich bisher nicht lösen kann könnt ihr mir vielleicht weiterhelfen?

    Gesucht ist der quellcode für di folgende aufgabenstellung einer leistungsberechnung:

    -Nach der Tastatureingabe von einem Strom in A und einer Spannung in V wird die leistung berechent und auf den Bildschirm ausgegeben.
    -für eine berechnete leistung kleiner 1000w wird die leistung in der einheit kw ausgegeben
    -für eine leistung größer gleich 1000w wird die leistung in der einheit kw ausgegeben
    -für leistungen zwischen 7w und 18w soll zusätzlich der folgende text ausgegeben werden:,,Es handelt sich eventuel um ein energiesparendes Leuchtmittel.´´
    -formel zur leistungsberechnung: Leistung = Strom * Spannung

    Diesen Quellcode habe ich bereits geschrieben aber es funktioniert nicht.

    {
    float Strom;
    float Spannung;
    float Leistung;
    float Leistung_in_kw;
    cout<<"Bitte geben Sie den Strom in Ampere an und bestätigen Sie mit Enter: "<<"\n";
    cin>>Strom;
    cout<<"Bitte geben Sie die Spannung in Volt an und bestätigen Sie mit Enter: "<<"\n";
    cin>>Spannung;
    Leistung=StromSpannung;
    Leistung_in_kw=(Strom
    Spannung)/1000;
    if(Leistung<1000.0){
    cout<<"Die Leistung betraegt: "<<Leistung_in_kw<<" kw"<<"\n";
    if(Leistung>=1000.0){
    cout<<"Die Leistung betraegt: "<<Leistung_in_kw<<" kw"<<"\n";
    if(Leistung_in_kw>=0.007<=0.018){
    cout<<"Es handelt sich eventuel um ein energiesparendes Leuchtmittel! "<<Leistung_in_kw<<"kw"<<"\n";

    }
    return 0;

    }}}

    Vielen Dank im Voraus.
    Lg tobi 😕 😕 😕 😕



  • Hast du das in deinem Editor auch so stehen (ich meine ohne Einrückungen)?
    Denn mit Einrückungen sieht man den Fehler sofort:

    if(Leistung<1000.0)
    {
    	cout<<"Die Leistung betraegt: "<<Leistung_in_kw<<" kw"<<"\n";
    	if(Leistung>=1000.0)
    	{
    		cout<<"Die Leistung betraegt: "<<Leistung_in_kw<<" kw"<<"\n";
    		if(Leistung_in_kw>=0.007<=0.018)
    		{
    			cout<<"Es handelt sich eventuel um ein energiesparendes Leuchtmittel! "<<Leistung_in_kw<<"kw"<<"\n";
    		}
    	}
    }
    


  • Du musst bei jedem if die Klammer wieder schließen, mal ganz abgesehen davon, dass bei Zahlen größer, gleich und kleiner 1000 W genau das gleiche passiert. "funktioniert nicht" ist grundsätzlich eine sehr ungenaue Angabe. Ansonsten solltest du dein Programm in [cpp]Code[/cpp]-Tags schreiben.



  • Ich habs zwar gerade nicht getestet, aber mir fällt auf, dass du die if-Abfragen erst ganz am Ende wieder schließt. Das heißt wenn die Leistung nicht kleiner 1000 passiert gar nichts. Probiere es lieber so:

    if(Leistung<1000.0)
        std::cout << "Die Leistung betraegt: " << Leistung_in_kw << " kw" << std::endl;
    if(Leistung>=1000.0)
        std::cout << "Die Leistung betraegt: " << Leistung_in_kw << " kw" << std::endl;
    if(Leistung_in_kw>=0.007<=0.018)
        std::cout << "Es handelt sich eventuel um ein energiesparendes Leuchtmittel! " << Leistung_in_kw << " kw" << std::endl;
    

    Da die Anweisungen nur Einzeiler sind, brauchst du in diesem Fall sogar keine Klammern. Sobald die Anweisungen in einer if-Abfrage größer ind brauchst du schon welche! Wichtig ist dann, dass du sie auch wieder früh genug schließt.

    Außerderm brauchst du das nicht so schreiben:

    cout << " Text " << "\n";
    

    Du kannst das \n direkt in den String schreiben, oder du benutzt direkt std::endl. Das setzt ein \n ein und flusht direkt den Ausgabepuffer.
    Das ganz würde dann so aussehen:

    std::cout << "Text\n";
    // oder
    std::cout << "Text" << std::endl;
    

    P.S.:
    "Funktioniert nicht" ist keine genaue Fehlerbeschreibung. Erkläre besser, wo genau dein Fehler liegt, und was der Compiler/Linker/Debugger sagt.

    EDIT:
    Viel zu spät 😡



  • if(Leistung_in_kw>=0.007<=0.018) <---ist keine Bedingung /fehler

    und wie schon erwähnt sind die Klammern in Bezug auf return 0; falsch.



  • Und übrigens braucht man std::endl hier nicht / man sollte es nicht unbedingt verwenden, denn man muss den Konsolenpuffer nicht flushen (auch wenn es hier nicht viel ausmacht).



  • habe nun diesen Quellcode:
    Kann mir aber nicht für die werte zwischen 7 und 18 die Zeichenkette ausgeben lassen kann mir jemand weiterhelfen
    Und vielen dank an den helfer zuvor:

    Lg tobi
    float Strom;
    float Spannung;
    float Leistung;
    float Leistung_in_kw;
    cout<<"Bitte geben Sie den Strom in Ampere an und bestätigen Sie mit Enter: "<<"\n";
    cin>>Strom;
    cout<<"Bitte geben Sie die Spannung in Volt an und bestätigen Sie mit Enter: "<<"\n";
    cin>>Spannung;
    Leistung=StromSpannung;
    Leistung_in_kw=(Strom
    Spannung)/1000;
    if(Leistung<1000.0)
    cout << "Die Leistung betraegt: " << Leistung_in_kw << " kw" << "\n";
    if(Leistung>=1000.0)
    cout << "Die Leistung betraegt: " << Leistung_in_kw << " kw" << "\n";
    if(Leistung_in_kw>=0.007<=0.018)
    cout << "Es handelt sich eventuel um ein energiesparendes Leuchtmittel! " << Leistung_in_kw << " kw" <<"\n";

    }



  • Hat doch schon mal jemand geschrieben.
    Leistung_in_kw>=0.007 ergibt einen boolean und der wird dann mit 0.018 verglichen. Schreib lieber:

    if(Leistung >= 7 && Leistung <= 18)
    


  • HighLigerBiMBam schrieb:

    if(Leistung_in_kw>=0.007<=0.018) <---ist keine Bedingung /fehler

    und wie schon erwähnt sind die Klammern in Bezug auf return 0; falsch.



  • wxSkip schrieb:

    Hat doch schon mal jemand geschrieben.
    Leistung_in_kw>=0.007 ergibt einen boolean und der wird dann mit 0.018 verglichen. Schreib lieber:

    if(Leistung >= 7 && Leistung <= 18)
    

Anmelden zum Antworten