Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » while schleife...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.04.2007, 10:42 Uhr
Paze_braucht_hilfe



Hallü, ich bräuchte bei dem Programm dann doch mal Hilfe...
Aufgabenstellung:

Die Umsätze in 3 Unternhemen sollen pro Quartal berechnet werden. Es soll jeder Monat eingegeben werden.

Das Problem -> Bei der Eingabe von 0.0 soll das Programm beendet werden, aber die bis dahin eingegebenen Monats-umsätze berechnet werden.

Entwerder ich komm in eine Schleife, oder das Programm behauptet immer als ergebniss 0.

Für schnelle hilfe wäre ich sehr dankbar...



C++:
#include <iostream.h>


void main()

{
    int quartal;
    char firma;
    int monat;
    float umsatz;
//    int erg;
    float gesammt;


    quartal = 1;
    while (quartal < 5)
        {
        cout << quartal <<". Ouartal" << endl;
        quartal = quartal + 1;

        
//-------------------------------------------------------

    firma = 'A' ;
    while (firma < 'D')
    {
        cout << "Unternehmen " << firma << endl;
        firma = firma + 1;
        
//-------------------------------------------------------

    monat = 0;
    while (monat < 3)

    {
            monat = monat + 1;
        
        cout << "Umsatz Monat " << monat << ":" << endl;
        cout << "( Bei Eingabe von 0.0 wird das Programm beendet )" << endl;

        cin >> umsatz;
            
        if (umsatz = 0.0)
        {
            gesammt = umsatz + umsatz + umsatz;
            cout << gesammt;
            cout << endl << endl;
            goto ende;
        }
        else;

        cout << endl << endl;
        
    }
    
    
//-------------------------------------------------------------


    gesammt = umsatz + umsatz + umsatz;

        cout << "umsatz: " << gesammt << endl << endl << endl;

    }
    }


ende:;


}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.04.2007, 11:12 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Vermutlich so irgendwie ...

C++:
#include <iostream>

int main(int argc, char* argv[])
{
        int quartal = 1, monat;
        char firma;
        float umsatz, gesamt;
        while(quartal < 5)
        {
                firma = 'A';
                std::cout << quartal++ << ". Quartal" << std::endl;
                while(firma < (int)'D')
                {
                        std::cout << (char)firma++ << std::endl;
                        monat = 0, umsatz = 0, gesamt = 0;
                        while(monat < 3)
                        {
                                std::cout << "Umsatz Monat " << ++monat << ":" << std::endl;
                                std::cout << "( Bei Eingabe von 0.0 wird das Programm beendet )" << std::endl;
                                std::cin >> umsatz;
                                gesamt += umsatz;
                                if(umsatz == 0.0)
                                {
                                        std::cout << gesamt << std::endl << std::endl;
                                        return EXIT_SUCCESS;
                                }
                                else
                                {
                                        std::cout << std::endl << std::endl;
                                }
                        }
                        std::cout << gesamt << std::endl << std::endl;
                }
        }
        return EXIT_SUCCESS;
}

So wie du den Umsatz berehcnet hast, macht es mal gar kein Sinn. Du nimmst das letzte, was du eingegeben hast und multiplizierst es mit 3. Aber ich denke, du willst das erste + das 2te + das 3te, was du eingegeben hast. Dann ist da noch dein Vergleich in der if Abfrage. Du schreibst if(umsatz = 0.0) - das ist immer war, weil du 0.0 erfolgreich umsatz zugewiesen hast. Es muss if(umsatz == 0.0) heißen. Dein goto ist auch unnötig. Ein return beendet dein Programm ...

Ansonsten solltest du mal ein wenig Struktur in deinen Quelltext bringen ...
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

Dieser Post wurde am 25.04.2007 um 11:17 Uhr von J-jayz-Z editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.04.2007, 11:21 Uhr
~Paze_braucht_hilfe
Gast


hmm....also, dein
C++:
return EXIT_SUCCESS;



funktioniert bei mir nicht...vermutlich andere C version.

aber das mit

C++:
if (umsatz == 0.0)


hat funktioniert. Danke hierfür.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.04.2007, 11:59 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Dann schreib anstatt EXIT_SUCCESS einfach ne 1. Also
C++:
return 1;
Sollte aber eigentlich tun ... Es ist aber C++, kein C ....
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.04.2007, 12:28 Uhr
ao

(Operator)


Für EXIT_SUCCESS muss <stdlib.h> inkludiert werden, bzw. <cstdlib> - dann heißt es aber std::EXIT_SUCCESS, nehme ich an. Außerdem ist EXIT_SUCCESS, soweit ich mich erinnere, nicht 1 sondern 0.

Achso: float-Variablen auf Gleichheit zu testen kann unerwartete Ergebnisse haben, besonders wenn mit Werten verglichen wird, die vom Typ double sind. Literale ohne 'f'-Suffix, so wie 0.0, sind double.

Warum verwendest du nicht als Abbruchkennzeichen einen beliebigen negativen Umsatz? Ist viel sicherer.

Gruß,
ao

Dieser Post wurde am 25.04.2007 um 12:33 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.04.2007, 13:28 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Klar, 0 ... Ist das ne gcc eigenheit, das EXIT_SUCCESS auch ohne cstdlib geht?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.04.2007, 14:26 Uhr
-Biohazard-



Hallo Paze,
wieso benutzt du kein 2-dimensionales Integer-Array? Also int umsatz[4][5]; wobei das erste die Firma und das zweite den Umsatz pro Quartal beinhaltet
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.05.2007, 10:42 Uhr
~Paze_mal_wieder
Gast


Also ich danke euch allen mal...
es war zwar für mich jetzt nicht wirklich hilfreich, aber ich habs hinbekommen und läuft wunderbar

Nochmal thx für die Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: