Neuling



  • Hallo nochmals zusammen,

    ich bin immer noch nicht weiter gekommen. Wie schaut denn diese Befehlsfolge in reinem C-Code aus ???????Also kein c++ oder sonstiges, sondern reiner C-Code........... Habe mal folgendermassen angefangen:

    int zahl=0,zahl1=0;
    int zahlmax=0,zahlmin=0;
    int count;

    for (count=1; count<=9; count++)//Schleife leuft 9 mal + 1 die Erste Auffeorderung
    {
    printf("\n\tBitte geben Sie eine Zahl ein\t");
    scanf ("%d",&zahl);
    fflush(stdin);
    if (zahlmin>=zahl);//zahlmin wird ausgeweartet
    zahlmin=zahl;
    else if (zahlmax<=zahl);//zahlmax wird ausgeweartet
    zahlmax=zahl;

    } //Ausgabe min und max Werte

    printf("\n\n");
    printf ("\tSie haben die kleinste Zahl: %.0lf \n\n" ,zahlmin);
    printf ("\tund die groeste Zahl: %.0lf eingetippt\n" ,zahlmax);

    Irgendwas ist da noch falsch, nur weiß ich nicht was......



  • Ja, da fehlen noch C++ Tags (unter den Smilies)
    Außerdem sollte nach nem if kein Semikolon kommen
    fflush(stdin); ist glaube ich nicht so ne dolle Idee...
    Und dann solltest du es vermeiden, min/max mit "eigenen" Werten zu initialisieren(erst mal hast du ja max nur deklariert und min 0 zugewiesen - max kann also auch 9999 sein - und dein Ergebnis ist falsch. und/oder du gibst nur zahlen > 0 ein und das Minimum ist trotzdem 0)
    deshalb nehm doch die erste eingabe für das initialisieren der werte

    ich hab kein plan von dem ganzen scanf/printf zeugs und falls du die HA wirklich in C machen willst, bist du hier eindeutig im falschen Forum, deshalb hab ich mal die C++ Varianten genommen
    Falls du was nicht verstehst, kannste ja nachfragen:

    #include <iostream>
    
    int main()
    {
      int wert;
      int max, min;
    
      std::cout << "Bitte geben Sei eine Zahl ein!\t";
      std::cin >> wert;
      max = min = wert;
    
      for(int count=1; count < 9; count++)
      { 
        std::cout << "Bitte geben Sei eine Zahl ein!\t";
        std::cin >> wert;
        if(wert < min)
          min = wert;
        if(wert > max)
          max = wert; 
      }
    
      std::cout << std::endl;
    
      std::cout << "Min.: " << min << std::endl
        << "Max.: " << max << std::endl;
    
      //ggf. Konsole offen halten
    }
    

    bb

    PS: Schleife leuft 9 mal (ich will nen Smilie, was sich die Augen zu hält :D)



  • Nö,

    dieser Code soll rein in C sein.



  • andy135 schrieb:

    Irgendwas ist da noch falsch, nur weiß ich nicht was......

    Hm, hast du eine Fehlermeldung oder was Ähnliches? Oder woher weisst du, dass etwas falsch ist?

    Edit: %.0lf - bist du da sicher bei int ?



  • Weil er bei min-Wert immer nur 0 ausgibt. Die Ausgabe des Maxwertes stimmt.



  • andy135 schrieb:

    Weil er bei min-Wert immer nur 0 ausgibt. Die Ausgabe des Maxwertes stimmt.

    lies meinen post



  • Wenn ich aber zahlmin mit int ohne =0 initialisiere, dann kommt die Fehlermeldung, oder Warnung, dass eine nicht initialisierte lokale Variable verwendet wurde. Das gleiche gilt auch für zahlmax.....



  • ich geh mal davon aus, dass du lesen kannst und versuch es noch mal:

    myself schrieb:

    Und dann solltest du es vermeiden, min/max mit "eigenen" Werten zu initialisieren(erst mal hast du ja max nur deklariert und min 0 zugewiesen - max kann also auch 9999 sein - und dein Ergebnis ist falsch. und/oder du gibst nur zahlen > 0 ein und das Minimum ist trotzdem 0)
    deshalb nimm doch die erste eingabe für das initialisieren der werte

    bb



  • unskilled schrieb:

    Also mit 10 Werten hab ichs auch nicht kürzer hinbekommen...
    Hier braucht man halt STRG+Z um das eof anzugeben... (kA, was man in der Unix-Welt drücken müsste^^)

    #include <algorithm>
    #include <iostream>
    #include <iterator>
    #include <set>
    
    int main()
    {
    	std::set<int> values;
    	values.insert(std::istream_iterator<int>(std::cin), std::istream_iterator<int>());
    	std::cout << "min: " << *values.begin() << "; max: " << *values.rbegin() << std::endl;
    }
    

    Es wäre einfach, wenn es copy_n gäbe - aber aus irgend nem Grund gibts das nicht... Aber hauptsache es gibt 20Milliarden replaces bei string...

    #include <algorithm>
    #include <iostream>
    #include <iterator>
    #include <vector>
    
    int main()
    {
    	std::vector<int> values;
    	std::copy_n(std::istream_iterator<int>(std::cin), std::back_inserter(values), 10); //(src, dest, count)
    	std::sort(values.begin(), values.end());
    	std::cout << "min: " << *values.begin() << "; max: " << *values.rbegin() << std::endl;
    }
    

    PS:
    ist hieran irgendwas falsch?

    #include <iostream>
    #include <iterator>
    #include <set>
    
    int main()
    {
    	std::set<int> values(std::istream_iterator<int>(std::cin), std::istream_iterator<int>());
    }
    

    MSVC 9 schrieb:

    error C2751: 'std::cin' : the name of a function parameter cannot be qualified

    hoffe du hast dein basecap schief auf!? 😃



  • poser schrieb:

    hoffe du hast dein basecap schief auf!? 😃

    sieht man doch am Code 😃



  • It0101 schrieb:

    poser schrieb:

    hoffe du hast dein basecap schief auf!? 😃

    sieht man doch am Code 😃

    Ich habs leider verlegt - und deshalb versuch ich meine Coolness so zum Ausdruck zu bringen - keine gute Idee? ^^
    btw: Ich hab doch so gar mehrere anfänger-freundliche Lösungen gepostet...

    bb


Anmelden zum Antworten