Pierwszy program w C++

0

Hey

Napisałem swój pierwszy program z którym mam problem (korzystam z książki J.Grebosz-SymfoniaC,Dev-C++).

#include <iostream.h>

main()
{
int liczba; //definicje zmiennych
float mnoznik;
float razy=3;

cout << "Podaj liczbe do przemnozenia:";
cin >>liczba; //to co wpiszemy zostanie dodane do zmiennej liczba

mnoznik=liczba*razy;

cout <<"\n";

cout <<liczba<<"stop-to jest:"
<<mnoznik<<"metrow\n";
}

Program ma pomnożyc podaną liczbę przez 3 i podac wynik, tylko tyle. Problem w tym, że po podaniu liczby program się zamyka i jeszcze jedno nie rozumiem trzech ostatnich linijek kodu-ich znaczenia dla programu. Nie rozumiem jeszcze czemu program się zatrzymuje nie mając polecenia getch();

Bardzo proszę o pomoc.

0

Twoja wersja Symfonii jest stara, lepiej znajdź symfonie c++ standard. getch() po prostu zatrzymuje program, dlatego bez getch()(i bez zamiennika) się program nie zatrzymuje.

0

Ale dziwi mnie to, że program się zarzymuje po mimo braku getcha. Tylko znika po wpisaniu jakiejś wartości i naciśnięciu enter. Wpisywałem getcha na końcu ale kompilatro pokazywał, że to jest błąd. Jak to rozwiązac ?

0

Konsola się zamyka, bo program skończył działanie, zrobił co miał zrobić, wypisał co miał wypisać i tyle. Dlatego getch() się dodaje, który siedzi w conio.h
Ogólnie zmień książkę, bo masz starą wersję i będziesz miał problemy. Zmień IDE bo DevC++ jest stare i zbugowane (polecam Code::Blocks).

0

Program zatrzymuje się dlatego, że wywołałeś funkcję cin- która wczytuje wartość

0

Po dodaniu odpowiedniej biblioteki i getcha pokazuje problem z getchem.

0

Ponieważ jest to funkcja getchar() - pobierz znak (a nie getcha), lub getch()
//EDIT: a sorry ty odniniłeś :). jeśli Ci ciąle nie działa spróbuj tego:

#include <conio.h>
#include <iostream>

int main()
{    
    getch();  
    return 0;
}
0
#include <iostream.h>
#include <conio.h>

 main()
{
  int liczba;        //definicje zmiennych
  float mnoznik;
  float razy=3;

  cout << "Podaj liczbe do przemnozenia:";
  cin >>liczba;     //to co wpiszemy zostanie dodane do zmiennej liczba

  mnoznik=liczba*razy;

  cout <<"\n";

  cout <<liczba<<"stop-to jest:"
  <<mnoznik<<"metrow\n";
  getchar();
  return 0;

}

Wpisuje tak jak radzicie i ciągle jest bład z getchar();

0

Dopisz cin.ignore();
Ignoruje to enter

0

Nie ma nagłówka iostream.h a za używanie conio.h powinni skazywać na dożywocie ciężkich robót przy debugowaniu kodu w COBOL'u.

0

Jak pisze coś prostrzego to getchar działą więc to chyba nie wina bibliotek. Zaraz chyba za wariuje jak tego nie rozwiąże.

0

Spróbuj tego:

#include <iostream>
using namespace std; 

int main()
{
int liczba; //definicje zmiennych
float mnoznik;
float razy=3;
 
cout << "Podaj liczbe do przemnozenia:";
cin >>liczba; //to co wpiszemy zostanie dodane do zmiennej liczba
 
mnoznik=liczba*razy;
 
cout <<"\n";
 
cout <<liczba<<"stop-to jest:"<<mnoznik<<"metrow\n";

system("pause");
return 0;
}

Jeśli to nie zadziała to będzie wina kompilatora (może nie masz zainstalowanych bibliotek?)

0

"Nie ma nagłówka iostream.h a za używanie conio.h powinni skazywać na dożywocie ciężkich robót przy debugowaniu kodu w COBOL'u."

Jak nie ma jak jest iostream.h i czemu nie wolno używać conio.h?

Po dodaniu cin.ignore(); nic si e nie zmienia :(

0

Sytuacja wygląda tak: z poleceniem system("pause"); wszystko działa jak powinno ale z getchar(); już nie. Wyjaśni mi ktoś czemu tak się dzieje (dodam, że korzystam z Windows XP).

0

@winerfresh: WIN! Same czytanie COBOLa jest męką.

Ta symfonia przedstawia standardy Borlanda Turbo C++ 3.1 Anno Domini 1992. Tam nie ma nawet typu bool. STLa tam chyba też nie ma, ani klasy std::string.
I brak przestrzeni nazw std. Borland najpierw chyba nie wiedział co to jest, a potem wszystkie standardowe funkcje i stałe, nawet printf z cstdio tam wrzucił, nie pozostawiając ich globalnie tak jak reszta kompilatorów.

iostream.h nie ma, bo twórcy c++ zdecydowali, że standardowe biblioteki powinno się ładować wpisując samą nazwę (tzn. iostream, cstdio zamiast stdio.h itd). Tak więc niektóre kompilatory tolerują iostream.h tylko dlatego, że jest taki plik w include. A inne albo nie tolerują w ogóle, albo wyświetlają info o przestarzałym sposobie includowania bibliotek.

conio.h jest nieprzenośne systemowo (tylko na windowsach jest). Sama biblioteka też dawno niewspierana.

Co do getchar to includuj cstdio, bo to w niej jest ta funcja. Funkcja system znajduje się w cstdlib, niejawnie includowana przez inne

polecam stronkę:
http://www.cplusplus.com/reference/

0

Teraz to mam mętlik w głowie. Kiedy pisze prosty program z poleceniem cout i biblioteką iostream to getchar działa ale kiedy program urozmaicę do tego stopnia jaki podałem wyżej to już po podaniu liczby i kliknięciu enter się wyłącza.

0

bo enter jest pobierany przez getchar. Daj go 2 razy, albo cin.ignore() przed nim.

0

Beż żadnych conio, bez wywołania programu pause (który jest tylko pow windows), beż żadnych podwójnych getchar'ow zatrzyma się za każdym razem nie zależnie od kodu przed tymi dwoma linijkami.

#include <iostream>
using namespace std; 
 
int main()
  {

   cin.sync();
   cin.get();
   return 0;
  }
0
Rubesom napisał(a)

"Nie ma nagłówka iostream.h a za używanie conio.h powinni skazywać na dożywocie ciężkich robót przy debugowaniu kodu w COBOL'u."

Jak nie ma jak jest iostream.h i czemu nie wolno używać conio.h?

Po dodaniu cin.ignore(); nic si e nie zmienia :(

Korzystasz ze starej symfonii... zmień książką na symfonia c++ standard(inaczej się będziesz męczył, bo ta z której korzystasz została napisana przed wejściem w życie standardu z 2003 roku). iostream.h jest przed potopowe, teraz używa się iostream

0

Dziękuje wam za wsparcie.

Czyli dzisiaj już się nie używa biblioteki conio, polecenia getchar(); i końcówki .h?? Zastanawia mnie to bo było to w starej książce z której korzystałem (ale już nie będe bo kupie nowszą :)), bardzo proszę o odpowiedź.

0

Nie getchar(), tylko getch(); to powinno zadzialac

1 użytkowników online, w tym zalogowanych: 0, gości: 1