Witam, jestem nowy na forum i od niedawna rozpocząłem naukę programowania w c++.
Uczę się w Dec c++ 4.9.9.2. przy pomocy książki "Symfonia c++ tomy I-IV".
Wykonuję to co jest w książce napisane, jednak gdy kompiluję program i uruchamiam go, w wierszu poleceń widnieje napis: "Podaj liczbe". Jest to część programu więc wybór muszę zatwierdzić enterem.
Ale po naciśnięciu entera wyłącza się okno.
Szukałem w googlach, na innych forach i próbowałem wielu rzeczy, ale się nie udawało. Więc proszę Was o pomoc: Co zrobić żeby program nie wyłączał się po naciśnieciu "enter".
Jeżeli będzie trzeba to wkleję kod.
Program jest po prostu wykonywany do końca i kończony, natomiast konsola którą wywołał dev z automatu się wyłącza. Po pierwsze zmień IDE a na pewno kompilator. Po drugie, jeżeli zatrzymasz program do naciśnięcia klawisza to konsola się sama nie zamknie. Jak uruchomisz program z już włączonej konsoli to będzie wszystko ok, jak być powinno.
Ok, a jakie IDE polecasz? I co w dev c++ jest takie złe?
Z prostych - code::blocks. Z bardziej zaawansowanych - Visual Studio. O dev-ie możesz sobie poczytać - wielokrotnie wałkowane było czemu jest zły.
A jest jakaś opcja żeby w tym dev c++ program nie wyłączał się po enterze? Chcę na nim chociaż pierwszy temat dokończyć :)
Na razie wygląda tak:
#include <iostream.h>
#include <conio.h>
int main()
{
int stopy ; //to do przechowywania liczby stop
// liczby stop
float metry ; //do wpisania wyniku
float przelicznik = 0.3 ; //przelicznik:
//stopy na metry
cout << "Podaj wysokosc w stopach : " ;
cin >> stopy ; //przyjecie danej
//z klawiatury
metry = stopy * przelicznik; // wlasciwe przeliczenie
cout << "\n" ; // to samo co : cout <<endl ;
// -----wypisanie wynikow
cout << stopy << "stop - to jest : "
<< metry << "metrow\n" ;
readln () ;
return 0 ;
getch () ;
system ("pause");
}
Przenieś " return 0; " poniżej " system("pause"); ".
return 0 na koniec i bangla.
Niestety, przeniesienie "return" nic nie pomogło :(
To albo wyglądaj za oknem jasnej gwiazdy, albo zmień kompilator ;p
Ściągnąłem CodeBlock 10 wkleiłem to z dev c++ do CodeBlock, skompilowałem, nacisnąłem "run" pojawił się wiersz poleceń ale zamiast mojego programu: "Press any key to continue."... Wole jednak zostać i męczyć się z dev c++. Zaakceptuję to iż trzeba otwierać program przez konsole (to kilka sekund więcej - więc nie tak źle).
Dzięki za pomoc :)
Miłego programowania
Z takim podejściem nie zajdziesz dalej niż za narożnik pokoju ;p Trochę samodyscypliny i chęci. Założę się, że nie znalazłeś, paru wpisów na blogach o devie, czy chociażby mojego postu na DP à propos deva, a nie trudno to znaleźć w googlach ;p
poza tym wyjście z programu konsolowego po skończeniu obliczeń jest w większości wypadków oczekiwanym zachowaniem. Gdybyś odpalał swój program z konsoli zobaczył byś jego wyjście, a okno by się nie zamykało. Rozumiem jednakże, że podczas etapu programowania chciałbyś zatrzymać okno, a więc najlepiej do tego celu zastosować przed return konstrukcję typu:
std::cin.sync();
std::cin.get();
I tak jak podano wyżej, najlepiej zamienić starego, nędznego dev'a na code::blocks. Konsola odpalana spod IDE zatrzymuje się automatycznie, a to co jest na końcu napisane nie jest już częścią twojego programu tylko kodem doklejonym przez środowisko.
- Jak było wyżej powiedziane, zmien Deva na Code::Blocks. tam nie musisz dodawać system("pause")/getch()/innych trików, program odpalany jest z konsoli wbudowanej w C::B i zatrzymuje się po wykonaniu programu.
- Zmień podręcznik, uczysz się z przestarzałego wydania, aż dziw, że nikt tego jeszcze nie powiedział. Grębosz wydał "Symfonię C++ standard", która jest zaktualizowanym podręcznikiem do C++a.
Każda symfonia jest nędznym podręcznikiem, więc bez większej różnicy które wydanie ;p Deva zmien, i to najlepiej na VS.
PANI EDTA
Dodam, że uczyłem się, i polecam to : http://helion.pl/ksiazki/c-inzynieria-programowania-victor-shtern,cppiop.htm . Moja opinia o symfonii jest wykształcona po przeczytaniu części starej i całości nowego wydania.
Jasne, szukałeś w całym internecie...
http://4programmers.net/C/FAQ/Zatrzymanie_okna_programu
Wpisz getchar(); dwa razy;
.....
getchar();
getchar();
Lub cin.get(); cin.get();
:)
Nie wiem czemu, ale na QT i Win7 trzeba dwa razy wpisac getchar(); Przynajmniej na laborkach, na uczelnianych komputerach. ...