[C++] Problem bei Konsolenanwendung

TheSentinel

Ensign
Registriert
März 2007
Beiträge
145
Hallo zusammen,
zu erst muss ich sagen dass ich erst vor paar tagen mit C++ angefangen hab... Bin also noch ein n00b ^^
Zu meinem problem: Ich habe ne kleine konsolenanwendung geschrieben mit dem man eine Zahl quadrieren kann.Nun wollte ich das ganze mit einer 2ten Eingabe erweitern. Aber nachdem man bei der ersten eingabe die Zahl eingibt, berechnet er die erste eingabe und überspringt die 2te und es kommt der text für die 2te eingabe. Und ergebnis ist 0. Wollte euch nun fragen was ich falsch mache.

Code:
// Test5.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include "cstdlib"

int main()
{
	char Buffer[30], Buffer2[30];
	std::cout << "Gib eine Zahl ein.Deine Zahl wird quadriert! " << std::flush;
	std::cin.get(Buffer, sizeof(Buffer));
	std::atoi(Buffer);
	std::cin.get(Buffer2, sizeof(Buffer2));
            std::atoi(Buffer2);
	std::cout << " Gib eine weitere Zahl ein! " << std::flush;
	int a, b, c, d;
	a = std::atoi(Buffer);
	b = (a * a);
	c = std::atoi(Buffer2);
            d = (a * c);
	std::cout << "Ergebnis:" << b << std::endl;
            std::cout << "Ergebnis: " <<  d << std::endl;

	void wait (); 

    std::cin.clear(); 
    std::cin.ignore(std::cin.rdbuf()->in_avail()); 
    std::cin.get(); 

}


int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}
 
1.) Was, bei Bill Gates fettem A****, ist _tmain?
2.) Warum "deklarierst" du die Funktion wait() mitten in der main()? Das ist "pfui".
3.) Du rufst die Funktion atoi() auf. allerdings machst du mit den Rückgabewert der Funktion absolut nichts. Der wird ignoriert. Schau dich hier mal um: http://www.cppreference.com/stdstring/index.html
4.) Versuche mal std::cin >> Buffer anstelle der con.get() Funktion.
 
Nebenbei noch:
Code:
#include [color=red]<[/color]iostream[color=red]>[/color]
#include [color=red]<[/color]cstdlib[color=red]>[/color]

Das mit wait() scheint mir eher ein Versehen zu sein?

Und ein kleiner Anfall von std::itis :) Das ist wirklich nicht nötig und verschlechtert die Lesbarkeit schon recht dramatisch, zumal z.B. atoi nicht in std liegen muss.

Und zum eigentlichen Problem, das hat Boron schon gesagt: Benutz cin >> a; usw. Hantier lieber garnicht erst mit unformatierem Input rum (also hier cin.get()), wenn du ihn garnicht haben willst. Zumal du dir so die atoi-Aufrufe und das char*-Gefrickel sparen kannst.
 
Zuletzt bearbeitet:
Hallo,
danke erstmal für die antworten.
1.) Das mit wait() is kein versehen.^^ Das sollte dazu dienen dass die konsole offen bleibt. Die schließt sich nämlich sonst bei mir sofort wieder.
2.) Ich verwende nur das was ich in nem ebook gelernt hab zu verwenden. Ob das gut oder schlecht is kann ich im moment natürlich schlecht bewerten^^
3.) Ich versuch mal eure tipps.

Mfg TheSentinel
 
Also:
1.) Das macht aber kein wait sondern definiert den Prototypen einer Funktion namens wait, die keine Argumente bekommt und void als Rückgabewert hat. Die Syntax an der Stelle ist ein bisschen tricky. Würde auch nicht das machen, was du willst. Die richtige Lösung ist, solchen Krempel komplett rauszuwerfen und das Programm aus einer Shell zu starten, also cmd.exe in deinem Fall.
2.) Welches E-Book ist das? Da würde ich gerne mal reinschauen ^^

Gruß
 
In dem Buch werden System-Header aber auch in spitzen Klammern inkludiert, und nicht in doppelten Anführungszeichen. ;) Liest sich aber gar nicht mal so schlecht. Nur hatte der Schreiber anscheinend std:: in seiner Zwischenablage :D
 
Hmm ja ich weiß aber das is ja nich das problem.^^
Der compiler meckert nun aber wenn ich die ganzen std:: weglasse. Selbst bei cout sagt er undeclared identifier. Oder sollt ich nen anderen compiler verwenden? Sry wenn ich euch damit nerve und n00b fehler mach.^^

Mfg TheSentinel
 
Schreib unter die #includes ein "using namespace std;". Früher oder später (jetzt sofort nicht) solltest du dir aber darüber klarwerden, was das bedeutet.

Über Aussagen wie "Compiler XYZ" ist Murks, würde ich mir ohne Begründung mit Hand und Fuß garkeine Gedanken machen. Mit MS VC++ 2008 hast du einen modernen und guten Compiler + IDE an der Hand. (und dann noch dev-c++ *würg*)
 
hi,

wieso fängst du nicht mit einem leichteren Programm an?
 
Zurück
Oben