Anfänger I/O-problem

zwob

Grünschnabel
moin,

ich versuch C++ zu lernen und hab ne Aufgabe bekommen, welche wie folgt lautet:

Was geschieht intern beim Schreiben/Lesen einer Ganzzahl mit den Anweisungen
int zahl;
cin >> zahl;
cout << zahl;

Entwickel dafür einen "Ersatzquelltext", der nur auf der Ein- bzw. Ausgabe einzelner Zeichen basiert, d.h., erlaubt sind nur die Anweisungen
char c;
c=cin.peek();
cin=cin.get();
cout.put(c);


nun, beim ersten Teil denke ich, wird ne Zahl zeichenweise eingelesen bis Ende-Null, gespeichert und schließlich zeichenweise wieder ausgegeben. Ich weiß nur nich, ob das als Antwort ausreicht.
Den zweiten Teil könnte ich lösen, indem ich ne while-Schleife benutze, aber genau das soll ich ja vermeiden, denke ich.

Könnt ihr mir bei meinem Problem und dieser Aufgabe helfen?
Vielen Dank im voraus...
 
na den zweiten Teil wollte ich wie folgt schreiben:

char zeichen;
while(cin.get(zeichen)) cout.put(zeichen);

cin.peek() liefert mir ja das nächste Zeichen, aber wozu brauch ich das dann noch? Die Aufgabenstellung hört sich für mich aber so an, als ob ich das zwingend nutzen müsste...
 
also das lässt sich auch rekursiv lösen... Ich Poste nacher mal nen Lösungsvorschlag.

edit:
Hust ich glaub das wird doch nix draus, mein C tut ned des was es soll, sry.
Aber Rekursiv ging des auch.
 
Zuletzt bearbeitet:
Hy!

@NomadSoul:

Warum willst du das denn rekursiv lösen? Sicherlich geht es auch, aber eine rekursion ist doch völlig unnötig, und bei langen Textzeilen verbrauchst du nur unnötig Speicher ( für die eine Variable die du in der Funktion deklarieren musst)

@zwob
Es ist meiner Meinung nach schon erlaubt, das so zu machen, jedenfalls steht dort nichts davon, das du alle Funktionen benutzen musst.
Eindeutig: "erlaubt sind nur die Anweisungen"
Und die Schleife muss auch erlaubt sein, denn anders ist das Problem nicht sinnvoll zu lösen.

mfg
uhu01
 
moin


Was hällst du von dieser Lösung?!
Code:
#include <iostream>

using namespace std;

int main()
{
	char c;

	while(cin.peek() != '\n')
	{
		c = cin.get();
		cout.put(c);
	}

        cin.get();          //optional

	return 0;
}


mfg
umbrasaxum
 
jo, ich glaub das ist die gesuchte Lösung. Is eigentlich gar nich so schwer, aber irgendwie fehlt mir noch n bissl der Überblick um sowas zu lösen :rolleyes:

Tausend Dank für Eure Hilfe
 
naja, wenn unser Prof so eine Aufgabe stellt, dann ist klar das nur diese Konstrukte benutzt werden dürfen.
Für mich klingt das Rekursiv, und jedes itterative Problem ist auch rekursiv lösbar oder wars umgekehrt ... ;-]
 
moin


Die Aufgabe wäre auch Rekursiv lösbar, ist aber in diesem Fall völlig unnötig...


mfg
umbrasaxum
 
Zurück