Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Schleifen und der %Operator

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 < [ 2 ]
000
17.11.2004, 15:55 Uhr
~nachty
Gast


ein Programm soll ausgehend vom Sonntag ermitteln welcher Wochentag der n-te Tag nach Sonntag ist ( n ist einzulesen ) - die Eingabe ist solange zu wiederholen ( if -Schleife ? ) bis eine beliebig gewählte Endbedingung ( n > 100 ) eingegeben wird - Nach Beendigung der Bestimmung des Wochentags ist die Gesamtzahl der Eingaben und der Anteil der Sonntage ( in Prozent ) anzugeben

komme bisher auf keinen grünen Zweig (-;
wäre für jede Hilfe dankbar
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.11.2004, 16:01 Uhr
0xdeadbeef
Gott
(Operator)


Klingt nach ner Hausaufgabe. Zeig mal deinen Ansatz her, dann geb ich nen Kommentar ab, aber die ganze Aufgabe mach ich dir nicht.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.11.2004, 16:07 Uhr
virtual
Sexiest Bit alive
(Operator)


if != schleife
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.11.2004, 16:11 Uhr
~nachty
Gast


klar ist das ne Hausaufgabe - hab meinen Quelltext nicht hier ( den werd ich am Samstag nachreichen ) aber meine Idee war das man beginnend mit 0 ( also sonntag ) und dann die n-Tage hinzuaddiert - die Summe wird durch 7 geteilt wobei der sich ergebende Rest den Wochentag bestimmt : Rest 0 entspricht Sonntag, Rest 1 entspricht Samstag usw.

und hier genau liegt auch mein Probelm - ich habe keine Ahnung wie ich diesen Term programmiertechnisch umsetze
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.11.2004, 16:40 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von ~nachty:
klar ist das ne Hausaufgabe - hab meinen Quelltext nicht hier ( den werd ich am Samstag nachreichen )


Da denn: bis Samstag.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.11.2004, 16:42 Uhr
~nachty
Gast


schon klar - aber vielleicht will sich ja trotzdem wer zu dem Kernproblem äussern ( weil ich das eben nicht hinbekomme )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.11.2004, 17:03 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich würde dem Samstag die 6, nicht die 1 geben. (also dem Montag die 1). Ansonsten ist die Beschreibung von Dir doch schon recht nahe an dem, was Sache ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.11.2004, 16:59 Uhr
(un)wissender
Niveauwart


Tja, falls du es noch brauche kannst...



C++:
#include <algorithm>
#include <iostream>
#include <string>

int main()
{
    const unsigned ANZAHL_WOCHENTAGE = 7, MAX_INPUT = 100;
    unsigned input = 0, eingaben = 0, vorkommenWochentage[ANZAHL_WOCHENTAGE];
    
    enum
    {
        Sonntag = 0,
        Montag,
        Dienstag,
        Mittwoch,
        Donnerstag,
        Freitag,
        Samstag
    };
    
    std::fill(vorkommenWochentage, vorkommenWochentage + ANZAHL_WOCHENTAGE, 0);
    
    std::cout << "Eingabe beendet mit einer Zahl groesser " << MAX_INPUT << std::endl;
    while(true)
    {
        std::cout << "Eingabe: ";
        std::cin >> input;
        if(std::cin.fail())
        {
            std::cin.clear();
            std::string temp;
            std::getline(std::cin, temp);
            std::cout << "Eingabefehler!" << std::endl;
            input = 0;
            continue;
        }
        
        if(input > MAX_INPUT)
        {
            break;
        }

        ++eingaben;
        switch(input % ANZAHL_WOCHENTAGE)
        {
            case Sonntag:
                std::cout << "Sonntag" << std::endl;
                ++vorkommenWochentage[Sonntag];
                break;
            case Montag:
                std::cout << "Montag" << std::endl;
                ++vorkommenWochentage[Montag];
                break;
            case Dienstag:
                std::cout << "Dienstag" << std::endl;
                ++vorkommenWochentage[Dienstag];
                break;
            case Mittwoch:
                std::cout << "Mittwoch" << std::endl;
                ++vorkommenWochentage[Mittwoch];
                break;
            case Donnerstag:
                std::cout << "Donnerstag" << std::endl;
                ++vorkommenWochentage[Donnerstag];
                break;
            case Freitag:
                std::cout << "Freitag" << std::endl;
                ++vorkommenWochentage[Freitag];
                break;
            case Samstag:
                std::cout << "Samstag" << std::endl;
                ++vorkommenWochentage[Samstag];
                break;
        }
    }
    
    std::cout << "\n\n--------------Auswertung----------\n\n";
    std::cout << "Anzahl der Eingaben: " << eingaben << std::endl;

    if(eingaben > 0)
    {
        std::cout << "Anteil der Sonntage: "
                  << static_cast<float>(vorkommenWochentage[Sonntag]) / eingaben
                  << std::endl;
        std::cout << "Anteil der Montage: "
                  << static_cast<float>(vorkommenWochentage[Montag]) / eingaben
                  << std::endl;
        std::cout << "Anteil der Dienstage: "
                  << static_cast<float>(vorkommenWochentage[Dienstag]) / eingaben
                  << std::endl;
        std::cout << "Anteil der Mittwoche: "
                  << static_cast<float>(vorkommenWochentage[Mittwoch]) / eingaben
                  << std::endl;
        std::cout << "Anteil der Donnerstage: "
                  << static_cast<float>(vorkommenWochentage[Donnerstag]) / eingaben
                  << std::endl;
        std::cout << "Anteil der Freitage: "
                  << static_cast<float>(vorkommenWochentage[Freitag]) / eingaben
                  << std::endl;
        std::cout << "Anteil der Samstage: "
                  << static_cast<float>(vorkommenWochentage[Samstag]) / eingaben
                  << std::endl;
    }
    
    return 0;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.11.2004, 17:24 Uhr
0xdeadbeef
Gott
(Operator)


Für diese Aufgabenstellung reicht

C++:
#include <iostream>

int main() {
  unsigned num_inputs = 0, sundays = 0, input;

  while(true) {
    std::cout << "Tage nach Sonntag (0-100, >100 für Abbruch): " << std::flush;
    std::cin >> input;

    if(input > 100) break;

    ++num_inputs;
    if(input % 7 == 0)
      ++sundays;
  }

  std::cout << num_inputs << " Eingaben, davon " << (double(sundays) * 100.0 / num_inputs) << "% Sonntage." << std::endl;
}


völlig aus. Wenns unbedingt so ausführlich sein soll, halte ich

C++:
#include <iostream>
#include <string>

int main() {
  unsigned num_inputs = 0, weekdays[7] = { 0 }, input;
  std::string weekday_names[] = { "Sonntag", "Montag", "Dienstag", "Mittwoch",
                                  "Donnerstag", "Freitag", "Samstag" };

  while(true) {
    std::cout << "Tage nach Sonntag (0-100, >100 für Abbruch): " << std::flush;
    std::cin >> input;

    if(input > 100) break;

    ++num_inputs;
    ++weekdays[input % 7];
  }

  std::cout << num_inputs << " Eingaben." << std::endl;
  for(int i = 0; i < 7; ++i)
    std::cout << weekday_names[i] << ": " << double(weekdays[i] * 100 / num_inputs) << '%' << std::endl;
}


für sinnvoller als diese switch-Konstruktion...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 21.11.2004 um 17:33 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.11.2004, 21:22 Uhr
(un)wissender
Niveauwart


Jo, ich wollte es halt nur besonders übersichtlich machen.
Vielleicht ist mir das nicht ganz gelungen.
Du verwendest im unteren Bsp. dreimal die Ziffer 7. Nee, nee...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: