Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Zahlenfolge über eine Konsole einlesen auch die 0!

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
06.04.2007, 19:02 Uhr
SpecialK



Hallo,

ich stecke fest bei einem kleine C++ Programm, ich möchte ganze Zahlen von 0 bis n einlesen, und bekomm das einfach nicht hin ich komm aus meiner schleife immer nur durch 0 oder einer anderen zahl raus, was ich nicht möchte, da diese dann ja nicht eingeben werden dürfen...

int main()
{
int buffer, numberOfInt = 0; // Eingabepuffer und Anzahl der Zahlen
int numbers[100]; // Array fuer ganze Zahlen, max 100
// Eingabe der Zahlen
cout<<"Bitte geben Sie die Zahlen ein: ";
do
{
cin>>buffer;
numbers[numberOfInt++] = buffer;
}
while(buffer!=0 && numberOfInt < 100); //solange bis die 0 eingegeben wurde
for(int i=0; i <= numberOfInt-2; i++)
cout<<numbers[i]<<endl;

system("Pause");
return 0;
}

gibt es irgendwie ne möglichkeit trotzdem noch wörter einzulesen oder durch eine taste zu beenden....

Ich wäre euch super dankbar für eure Hilfe.... Gruß aus Lübeck
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.04.2007, 19:18 Uhr
Kest
saint


Hi!

Mach mal mit >-1<.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.04.2007, 19:20 Uhr
Kest
saint


Schwachsinn. Ich dachte du wolltest was anderes.


Man könnte noch vor der Eingabe der Zahlen festlegen, wie viele Zahlen man eingeben möchte.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 06.04.2007 um 19:26 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.04.2007, 19:36 Uhr
SpecialK



high,

hmmm das ist es ja, es soll eine beliebige anzahl sein von zahlen...

und irgenwie müsste ich mit einer bestimmten, das einlesen beenden können....

die zahlen sollen später sortiert werden.....


Aber ich glaub ich weiß wie ichs jetzt mach, hätts zwar anders schöner gefunden, aber deine -1 hat mich auf eine idee gebracht, ich breche ab wenn eine zahl kleiner gleich null ist weil es sollen nur positive zahlen sein ;-)

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.04.2007, 19:44 Uhr
Blubber2063



Warum brech doch einfach ab, wenn jemand exit eingibt, du darfst dann halt nur nicht direkt einlesen, sondern vergleichst erst den eingelesenen String mit exit und wandelst danach mit stringstream in den int um.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.04.2007, 20:15 Uhr
kurt



machs doch einfach so...


C++:
const int maxNumbers = 100;
int numbers[maxNumbers];
int buffer, i;


for (i = 0; i < maxNumbers; i++)
{
     cin >> buffer;
     if (0 == buffer) exit;  

     numbers[i] = buffer;
}

for (int j = 0; j < i; j++)
{
     cout << numbers[j] << endl;
}




MFG kurt
--
der tod ist sicher... das leben nicht... !!

Dieser Post wurde am 06.04.2007 um 20:17 Uhr von kurt editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.04.2007, 22:57 Uhr
0xdeadbeef
Gott
(Operator)


exit ist in C++ äußerst gefährlich, weil dann _garnichts_ mehr aufgeräumt wird. Mach ein break draus.

Oder, machs gleich sinnvoll und schreib

C++:
#include <algorithm>
#include <exception>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>

#ifdef _WIN32
#include <cstdlib>
#endif

struct exit_tag : public std::exception {
  virtual char const *what() const throw() { return "Uncaught exit tag"; }
};

unsigned read_number(std::string const &prompt) throw(exit_tag)  {
  std::istringstream isstr;
  unsigned x;
  std::string line;

  do {
    std::cout << prompt << std::flush;
    std::getline(std::cin, line);

    if(line == "exit") throw exit_tag();

    isstr.clear();
    isstr.str(line);
    isstr >> x;
  } while(!isstr);

  return x;
}

int main() {
  std::vector<unsigned> numbers;

  try {
    while(true) {
      numbers.push_back(read_number("Zahl eingeben, oder \"exit\" zum Beenden: "));
    }
  } catch(exit_tag &e) {
  }

  std::copy(numbers.begin(), numbers.end(), std::ostream_iterator<unsigned>(std::cout, ""));
  std::cout << std::endl;

#ifdef _WIN32
  std::system("pause");
#endif
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 06.04.2007 um 23:02 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.04.2007, 11:14 Uhr
SpecialK



Super Danke Schön!!!!!!


ich probiers mal mit dem letzten Quelltext, muss den aba erstam verdauen, lol ;-)



Das funktioniert hier, TOP - Frohe Ostern
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: