Skocz do zawartości

Symfonia C++ a Symfonia C++ Standart


lookass

Rekomendowane odpowiedzi

Witam. Sądze że w temacie wyjaśniłem mniej więcej o co chodzi. Mam dostęp do znakomitej (z tego co zacząłęm czytać i z wielu opinii w internecie i wśród ludzi) Symfonii C++ Jerzego Grebosza... mam jednak takie pytanie ponieważ coś się zmieniło w tym języku i nie wiem czy warto uczyć się ze starszej książki a nie ze "Symfonia C++ Standart". Obecnie nie mam kasy żeby zakupić nowszą książeczke ... tak więc czy w ogóle jest sens korystania ze zwyklej symfonii czy ten język już aż tak się zmienił że tego czego nauczyłbym się z niej nie przydałoby mi się? z góry dzięki za pomoc pozdro...

Odnośnik do komentarza
Udostępnij na innych stronach

Jestem początkującym i dopiero chciałbym zacząć naukę C++ z książką Pana Grebosza i sugerowałem się tym tekstem na jego oficjalnej stronie tuż pod tytułem książki "Symfonia C++"

 

UWAGA - UWAGA - UWAGA

Ta ksiazka juz nie bedzie wiecej wznawiana - gdyz ma teraz juz tylko znaczenie historyczne. Opisuje bowiem jezyk C++ wedlug jego definicji zawartej w ksiazce Bjarne Stroustrupa "The Annotated Reference Manual" - stad skrot ARM.

Obecnie jezyk C++ zostal skodyfikowany w miedzynarodowym standardzie ISO C++. Jezyk w tej nowej wersji opisuje inna ksiazka Jerzego Grebosza pt:

"Symfonia C++ Standard"

- ktora niejako zastepuje te, archaiczna juz, stara Syfmonie C++ .

 

Zmieniono coś tam kodyfikacje ISO czy coś w tym stylu mam nadzieję że teraz już wiesz o co mi chodzi...

 

EDIT

Mam wydanie z 1996...

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Jeśli chodzi o C++, to jest to zbiór nowych funkcji (STL) i obiektowość dla C. Kłopot był (i jest) w tym, że co twórca kompilatora, to zawsze musiał dodać coś od siebie, dlatego C++ został niejako ustandaryzowany. Powtarzam niejako, ponieważ i tak są minimalne różnice (raczej zawsze będą), ale nie w działaniu języka, bo takowych nigdy nie było, lecz w paru naprawdę minimalnych kwestiach. Niestety i tak będziesz musiał je poznać, jeżeli masz zamiar przetestować różne kompilatory.

 

Dla przykładu podam jeden problem związany ze standardami (ten sam, o który się kiedyś kłóciłem z BeWuO).

 

W C++ mamy zawsze główną funkcję programu, która zawsze się wykonuje automatycznie. Tą funkcją jest main. Autor C++ ustanowił, że ta funkcja powinno ZAWSZE zwracać systemowi jakąś zmienną, najczęściej 0 jako pomyślnie wykonane zadanie:

int main()
{
return 0;
}

Powyższy przykład to najmniejszy program C++ i tylko taką strukturę skompilujesz w DEV-C++. Natomiast co mówi na ten temat VISUAL C++? Ano to, że main nie musi zwracać liczby i można zapisać to tak:

void main()
{
}

Jeżeli spróbujesz skompilować ten program w DEV-C++ to już wyrzuci błąd, ale w VISUAL C++ wszystko będzie dobrze.

 

I o to chodziło autorowi książki, ponieważ być może opierał się na założeniach jednego kompilatora i opisał wszystkie dopuszczalne metody, włącznie z tymi, które w standardzie C++ oficjalnie nie istnieją.

 

Krótko mówiąc nie kupuj książki, bo takich kwiatków jest naprawdę mało, zaledwie parę i nie ma co wywalać książki z tego powodu. W nowej mogą być conajwyżej pousuwane niektóre dyrektywy (i może opisane dodatkowo jakieś moduły, nie wiem, bo nigdy symfonii C++ nie miałem).

Odnośnik do komentarza
Udostępnij na innych stronach

wykonuje jedno z ćwiczeń z Symfonii C++ i już mam problem nad ktorego rozwiązaniem siedze od ponad 2.5h :mellow: Jest to prosty przelicznik stóp na metry. Jakbyście mogli wyjaśnic dlaczego po wpisaniu liczby stóp i wstukaniu entera wyłącza mi "program" a nie wyświetla wyników byłbym wdzięczny :). Póki co sie nie zniechecam jak wcześniej i probuje rozwiazac problem jednak wiem ze pewnie czegos brakuje a ja jako laik nie potrafie tego odnaleźć z góry thx :)

 

#include <iostream.h>

using namespace std;

int main (int argc, char *argv[])
{
int      stopy;                                //do przechowywania 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 tu jest error!
    
     metry = stopy * przelicznik;

     cout << endl;
     
  //obliczanie wyników i ich wypisanie
  
     cout << stopy << " stop - to jest : " 
     << metry << " metrow\n";

}

Odnośnik do komentarza
Udostępnij na innych stronach

wykonuje jedno z ćwiczeń z Symfonii C++ i już mam problem nad ktorego rozwiązaniem siedze od ponad 2.5h :mellow: Jest to prosty przelicznik stóp na metry. Jakbyście mogli wyjaśnic dlaczego po wpisaniu liczby stóp i wstukaniu entera wyłącza mi "program" a nie wyświetla wyników byłbym wdzięczny :). Póki co sie nie zniechecam jak wcześniej i probuje rozwiazac problem jednak wiem ze pewnie czegos brakuje a ja jako laik nie potrafie tego odnaleźć z góry thx :)

 

#include <iostream.h>

using namespace std;

int main (int argc, char *argv[])
{
int      stopy;                                //do przechowywania 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 tu jest error!
    
     metry = stopy * przelicznik;

     cout << endl;
     
  //obliczanie wyników i ich wypisanie
  
     cout << stopy << " stop - to jest : " 
     << metry << " metrow\n";

}

 

 

 

Nie... chodzi mi o to że program zamiast po wpisaniu liczby stóp przeliczyć je na metry i podać wyniki np 1200 stóp to jest ileś tam metrow... on zamiast tego gdy wpisze liczbe stop np Podaj wysokośc w stopach: wpisuje 3500 to program zamiast podac wybniki jak wczesniej napisalem po wcisnieciu entera wylacza sie :/ a powinien pod spodem wyswietlic wyniki przeciez i stad moje pytanie jak zrobic zeby wyswietlil wyniki zamiast wylaczac sie po wpisaniu wysokosci w stopach :/

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Po pierwsze co ja napisałem w moim ostatnim poście? Przed klamrą zamykającą funkcję main dopisz return 0;

 

Po drugie uruchom program z wiersza poleceń.

1) Windows->menu start->Uruchom...

2) Wpisz cmd i naciśnij OK

3) Przejdź do katalogu z programem i uruchom go wpisując jego nazwę.

 

Ewentualnie możesz na końcu programu ( a przed return 0; } ) dopisać regułkę w stylu "nacisnij klawisz enter by zakonczyc program...".

Odnośnik do komentarza
Udostępnij na innych stronach

Boże ale jestem ciemny i wam ciągle głowe zawracam takimi pierdołami ale zrobiłem jak kazałeś i dalej po wpisaniu liczby stóp i wciśnieciu entera zamiast wynikow program zamyka się

 

#include <iostream.h>

using namespace std;

int main (int argc, char *argv[])
{
int      stopy;                                //do przechowywania 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 tu jest error!
    
     metry = stopy * przelicznik;

     cout << endl;
     
  //obliczanie wyników i ich wypisanie
  
     cout << stopy << " stop - to jest : " 
     << metry << " metrow\n";
    
     cout << "Wciśnij klawisz enter aby kontynuowac"; 
return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Ale przecież tylko wyświetlasz komunikat o wciśnięciu entera, a go nie pobierasz! Dlatego program dalej się zamyka. Za coutem musisz jeszcze zastosowac cin i pobrac znaki z inputa. awno w c++ nie skrobałem, dopisz przed return 0:

string end;
cin >> end;

 

No i gdy użytkownik naciśnie enter, to przerwie cin'a i zamknie program. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki już wyniki są wyświetlane tylko kiedy pojawi się komunikat o możliwości zamnknięcia aplikacji to wtedy gdy wciskam enter nic sie nie dzieje :)

 

#include <iostream.h>
#include <string>

using namespace std;

int main (int argc, char *argv[])
{
int      stopy;                                //do przechowywania 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 tu jest error!
    
     metry = stopy * przelicznik;

     cout << endl;
     
  //obliczanie wyników i ich wypisanie
  
     cout << stopy << " stop - to jest : " 
     << metry << " metrow\n";
    
     cout << "Wcisnij klawisz enter aby kontynuowac"; 
     string end;
     cin >> end;
return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

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

using namespace std;

int main ()
{
int      stopy;                                //do przechowywania 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 tu jest error!
    
     metry = stopy * przelicznik;

     cout << endl;
     
  //obliczanie wyników i ich wypisanie
  
     cout << stopy << " stop - to jest : " 
     << metry << " metrow\n";
    
     cout << "Wcisnij klawisz enter aby kontynuowac"; 
     getch();
return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...