Prosty program oparty na funkcjach

0

Witam, dziś uczyłem się o funkcjach. Stworzyłem poniższy program, teraz pytanie czy mimo użycia funkcji nie dodałem sobie kilku linijek kodu na darmo.

#include <iostream>
#include <windows.h>

using namespace std;

int wybor; double metry, centymetry;                    // Zmienne

void wypisz_menu()                                      // Wypisywanie menu glownego
{
    cout << "@@@@@@@@@@@@@@@@@@@@\n"<<endl;
    cout << "1.Metry na centymetry"<<endl;
    cout << "2.Metry na milimetry"<<endl;
    cout << "3.Centymetry na metry"<<endl;
    cout << "4.Centymetry na milimetry\n"<<endl;
    cout << "@@@@@@@@@@@@@@@@@@@@\n\n"<<endl;
}

void wypisz_opcje()                                      // Opcje po wyliczeniu
{
    cout << endl;
    cout << "1.Wroc do menu."<<endl;
    cout << "2.Wyjdz"<<endl;
    cout << "Wybor: "; cin >> wybor;

    switch (wybor)
    {
        case 1: system("cls"); break;
        case 2: exit(0);       break;
    }
    if ((wybor!=1&&wybor!=2))
        {
            system("cls");
            cout << "Blad!";
            wypisz_opcje();
        }
}

double metry_na_centymetry(double metry)                  // FUNKCJE
{
    cout << "Podaj liczbe metrow: "; cin >> metry;
    system("cls");
    return metry*100;
}

double metry_na_milimetry(double metry)
{
    cout << "Podaj liczbe metrow: "; cin >> metry;
    system("cls");
    return metry*1000;
}

double centymetry_na_metry(double centymetry)
{
    cout << "Podaj liczbe centymetrow: "; cin >> centymetry;
    system("cls");
    return centymetry/100;
}

double centymetry_na_milimetry(double centymetry)
{
    cout << "Podaj liczbe centymetow: "; cin >>centymetry;
    system("cls");
    return centymetry*10;
}                                                           // KONIEC FUNKCJI

int main()
{
    for (;;)
{
    wypisz_menu();
    Sleep(600);
    cout << "Wybierz opcje:"; cin >> wybor; // wybor opcji
    system("cls");

    switch (wybor)                                  // SWITCH
    {
        case 1 : cout<< "Jest to: "<<metry_na_centymetry(metry); " centymetrow.";           break;
        case 2 : cout<< "Jest to: "<<metry_na_milimetry(metry)<< " milimetrow.";            break;
        case 3 : cout<< "Jest to: "<<centymetry_na_metry(centymetry)<< " metrow.";          break;
        case 4 : cout<< "Jest to: "<<centymetry_na_milimetry(centymetry)<< " milimetrow.";  break;

    }
    wypisz_opcje();
}
}
1
  • Niepotrzebne windows.h;
  • Niepotrzebne używanie zmiennych globalnych [jesteś po kursie Zelenta?];
  • Niepotrzebne komentowanie oczywistych rzeczy;
  • Funkcje przeliczające jednostki powinny zajmować się tylko tym. Prezentowaniem wyniku oraz pobieraniem danych powinny zajmować się osobne funkcje;
  • Trochę jest copy-paste'a ale to przez niestosowanie się do punktu wyżej;
  • system("cls"); nieprzenośne.
0
grzesiek51114 napisał(a):
  • Niepotrzebne windows.h;
  • Niepotrzebne używanie zmiennych globalnych [jesteś po kursie Zelenta?];
  • Niepotrzebne komentowanie oczywistych rzeczy;
  • Funkcje przeliczające jednostki powinny zajmować się tylko tym. Prezentowaniem wyniku oraz pobieraniem danych powinny zajmować się osobne funkcje;
  • Trochę jest copy-paste'a ale to przez niestosowanie się do punktu wyżej;
  • system("cls"); nieprzenośne.

Bez tej biblioteki mi nie działa cls, chyba że czegoś nie wiem.
Nie miałem pojęcia, co to zmienne globalne, ale jak to mówią człowiek uczy się na błędach więc poczytałem i już wiem. Co do kursu to jestem jeszcze w trakcie.
Komentuję, bo chcę sobie wyrobić dobry nawyk, a że nie piszę nic poważnego to tak to wygląda.
Tego nie wiedziałem, zaraz postaram się przerobić.
Co oznacza, że cls nieprzenośne?

0

Co do kursu Zelenta to sobie daruj, bo gość pokazuje strasznie złe wzorce, szczególnie robiące złą robotę komuś kto dopiero zaczyna naukę.

cls jest nieprzenośne, bo np. na Linuksie nie zadziała gdyż tam do czyszczenia ekranu masz clear. No chyba, że robisz tylko dla Windowsa ale i tak tych czyszczeń jest u Ciebie za dużo.

Co do windows.h i tego, że nie dziala cls bez tego to nie wierzę. Może masz jakiś stary kompilator czy coś, chociaż nawet w takim wypadku byłoby to co najmniej dziwne.

0

Najwidoczniej bardzo stary :P Kurs oglądam, bo pan bardzo dobrze tłumaczy. Tak to np.: w szkole na luznych lekcjach siedzę na telefonie i czytam Learn C++ i jakąś książkę C++ programing. Wszystko po angielski, wiec mogę czasem czegoś nie zrozumieć. Patrząc po internecie to nie znalazłem dobrych kursów. Może coś polecisz?

0

Może coś polecisz?

Książkę do C++ ale tu na pewno poleci coś dobrego @kq, który siedzi w temacie książek trochę bardziej.

To, że Zelent jest kiepski to zostało już tutaj wielokroć powiedziane.

3

To, że Zelent dobrze opowiada to jeszcze nie oznacza, że przekazuje dobre informacje. Początkujący nie jest w stanie tego ocenić, no bo niby skąd ma wiedzieć?

1

Jak na początkującego całkiem nieźle (zgadzam się z komentarzami @grzesiek51114).
Jedyny problem, że za bardzo trzymasz się detali (brak uogólnienia problemu). Kiedyś naskrobałem tutaj coś takiego:
https://wandbox.org/permlink/bSVuCXksPKBfjN97

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