You are not logged in.

  • Login

1

Sunday, June 17th 2007, 6:41pm

Einlesen in bestimmter Form

Hallo zusammen.

Ich sitzte gerade irgendwie auf dem Schlauch und bräuchte eure Hilfe.
Folgende Aufgabenstellung:

Ich soll in ein int-arry eine Zeichenfolge in folgender Form einlesen:
<3,4,2,6>

Auf deutsch:
- Beginnend mit dem Zeichen "<"
- Zahlen getrennt mit ","
- Ende durch Zeichen ">"
- Leerzeichen sollen ignoriert werden

Hoffe ihr könnt mir weiterhelfen mit dem ein oder anderen Gedanken- und Quellcodeanstoss ;)

2

Sunday, June 17th 2007, 6:50pm

hm warscheinlich am einfachsten ließt du zuerst einen char ein, testest auf '<' dann in einer schleife immer >>>int - char<<< biss char ein '>' ist

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
 
int main()
{
   char the_char;
   int value;
   std::vector<int> vector;
 
   std::cin >> the_char;
   if (the_char != '<') return
   std::cin >> the_char;
   while (the_char != '>')
   {
 
   }
}

3

Sunday, June 17th 2007, 6:51pm

Ich bin ja nicht so der C-Gott, aber geht das nicht mit scanf?

C Quellcode

1
2
3
4
5
6
int var1;
int var2;
int var3;
int var4;
 
scanf("<%i,%i,%i,%i>", var1, var2, var3, var4);


Aber wie gesagt, soviel Ahnung hab ich von C nicht ;)

4

Sunday, June 17th 2007, 7:24pm

wenns 4 sind würde das gehen, nur

1) format-strings sind eher gefährlich (in diesem Fall nicht)
2)

C Quellcode

1
2
int var[4];
scanf("<%d,%d,%d,%d>", var, var + 1, var + 2, var + 3);
ist die Array-version

5

Sunday, June 17th 2007, 7:36pm

Also es sollte eine Zahlenfolge beliebiger endlicher Länge sein!!!

@ darthdespotism: Danke für den "Anstoss". Werd das noch einmal ausprobieren.

@BennyBunny: Es sollte schon in C++ umgesetzt werden :)

6

Sunday, June 17th 2007, 7:57pm

Mein Lösung wäre:

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream> 
#include <vector> 
 
int main() 
{ 
   char the_char; 
   int value; 
   std::vector<int> myvector; 
 
   std::cin >> the_char; 
   if (the_char != '<') return 
   std::cin >> the_char; 
   while (the_char == ',') 
   { 
      std::cin >> value;
      std::cin >> the_char;
      myvector.push_back(value);
   } 
}


gegebenenfalls Fehler behandlung, den vaector gegen einen geeigneteren Container tauschen, etc.

Musste schnell weg ;)

7

Tuesday, June 19th 2007, 7:35am

Dankeschön. Soweit funktioniert alles :)

Jetzt hab ich aber noch ein kleines Problem:
Wie kann ich den cin auf sein Failbit stellen?
Ich dachte eigentlich das geht so:

C Quellcode

1
std::cin.fail();

will aber irgendwie nicht so ganz.

Könnt ihr mir sagen, wie ich die verschiedenen Bits für das cin per Hand setzen kann?

Danke

8

Tuesday, June 19th 2007, 6:26pm

Hat sich erledigt!!!

C Quellcode

1
std::cin.clear(ios::failbit);

Social bookmarks