Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Tworzenie kalkulatora w konsoli


VereX.

Rekomendowane odpowiedzi

Opublikowano

Chciałem pokazać mój kod bardziej doświadczonym osobom, aby stwierdzili, czy jako tako jest to dobrze zrobione?

Może dałoby się niektóre funkcję przerobić? Może jakieś dobre rady co do programowania?

Dopiero zaczynam programować i bawię się w różne takie bzdety.

 

 

#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;

 long cowybierasz;
 double liczba1;
 double liczba2;
 int wyjdz;


int main()
{
 system("cls");
 // Wypisanie w konsoli menu
 cout << "Kliknij przycisk i zatwierdz enterem\n\n" << "[1] Dodawanie\n" << "[2] Odejmowanie\n" << "[3] Mnozenie\n"
 << "[4] Dzielenie\n" << "[5] Potegowanie\n"<< "[6] Pierwiastkowanie\n" << "[7] Obliczanie pol\n\n"
 << "[0] Wyjdz\n\n" << "Wybieram numer: "; // \n tworzy linię odstępu


 int cowybierasz; // Zmienna dla funkcji cin
 cin >> cowybierasz; // Sprawdza co wpisał użytkownik, następnie pętla switch wyłapuję to i porównuję z case


 switch( cowybierasz )
 // Pętla switch, porównuję wartość poddanej zmiennej z case, jeśli któryś z case ma tą samą wartość to wykonuje jego kod
{
case 1:
    system("cls"); // To jest funkcja z Windows.h, czyści nam konsole
    cout << "Wybrales Dodawanie\n\n" << "Pierwsza liczba: ";
    cin >> liczba1;
    cout << "Druga liczba: ";
    cin >> liczba2;
    cout << "\nWynik to: " << liczba1 + liczba2 << "\n\nWpisz cos, by wrocic do menu: ";
    cin >> wyjdz;
    main(); // I od nowa włączamy główną funkcję
    break; // Uwalniamy się od pętli

case 2:
    system("cls");
    cout << "Wybrales Odejmowanie\n\n" << "Pierwsza liczba: ";
    cin >> liczba1;
    cout << "Druga liczba: ";
    cin >> liczba2;
    cout << "\nWynik to: " << liczba1 - liczba2 << "\n\nWpisz byleco, by wrocic do menu: ";
    cin >> wyjdz;
    main();
    break;

case 3:
    system("cls");
    cout << "Wybrales Mnozenie\n\n" << "Pierwsza liczba: ";
    cin >> liczba1;
    cout << "Druga liczba: ";
    cin >> liczba2;
    cout << "\nWynik to: " << liczba1 * liczba2 << "\n\nWpisz byleco, by wrocic do menu: ";
    cin >> wyjdz;
    main();
    break;

case 4:
    system("cls");
    cout << "Wybrales Dzielenie\n\n" << "Liczba ktora chcesz podzielic: ";
    cin >> liczba1;
    cout << "Druga liczba: ";
    cin >> liczba2;
    cout << "\nWynik to: " << liczba1/liczba2 << "\n\nWpisz byleco, by wrocic do menu: ";
    cin >> wyjdz;
    main();
    break;

case 5:
    system("cls");
    cout << "Wybrales Potegowanie\n\n" << "Liczba ktora chcesz potegowac: ";
    cin >> liczba1;
    cout << "Potega: ";
    cin >> liczba2;
    cout << "\nWynik to: " << pow(liczba1, liczba2) // Funckja pochodząca z math.h, potęguję liczbę1 przez potęgę z liczby2
    << "\n\nWpisz byleco, by wrocic do menu: ";
    cin >> wyjdz;
    main();
    break;

case 6:
    system("cls");
    cout << "Wybrales Pierwiastkowanie\n\n" << "Liczba która chcesz pierwiastkowac: ";
    cin >> liczba1;
    cout << "Stopien pierwiastka: ";
    cin >> liczba2;
    cout << "\nWynik to: " << pow(liczba1, (1 / liczba2) ) // Sposób na pierwiatkowanie, lepszy od funckji sqrt,
    //gdyz możemy nadać jaki chcemy stopień pierwiatkowi, pochodzi też z math.h
    << "\n\nWpisz byleco, by wrocic do menu: ";
    cin >> wyjdz;
    main();
    break;

case 7:
    system("cls");
    cout << "Kliknij przycisk i zatwierdz enterem\n\n" << "[1] Kola\n" << "[2] Trojkata\n" << "[3] Trapeza\n\n"<< "[0] Wroc do menu\n\n" << "Wybieram numer: ";

    cin >> cowybierasz;
    switch (cowybierasz)
    {
        case 1:
            system("cls");
            cout << "Wybrales: [1] Koła\n\nPodaj promien: ";
            cin >> liczba1;
            cout << "\n\n Pole wynosi: " << M_PI * pow(liczba1, 2); //M_PI to wartość pi, zmienna pochodzi z math.h
            cin >> wyjdz;
            main();
            break;

        case 2:
            system("cls");
            cout << "Wybrales: [2] Trojkata\n\nPodaj długosc wysokosci: ";
            cin >> liczba1;
            cout << "\nPodaj długosc podstawy:";
            cin >> liczba2;
            cout << "\n\n Pole wynosi: " << 0.5 * liczba1 * liczba2;
            cin >> wyjdz;
            main();
            break;
        case 3:
            double liczba3;
            system("cls");
            cout << "Wybrales: [3] Trapeza\n\nPodaj jedna z podstaw: ";
            cin >> liczba1;
            cout << "\nPodaj druga z podstaw: ";
            cin >> liczba2;
            cout << "\nPodaj wysokosc: ";
            cin >> liczba3;
            cout << "\n\n Pole wynosi: " << 0.5 * liczba3 * (liczba1 + liczba2) ;
            cin >> wyjdz;
            main();
            break;
        case 0:
            main();
            break;
        default:
            main();
            break;
    };
    break;
          default:
            main();
            break;}
};

 

 

 

#Edit

Już widzę, że mogłem system("cls") dać do switcha, bo wszędzie się to powtarza ;p

TuByłaSygnatura.png

Opublikowano

1. Nie używaj funkcji systemowych, tzn:

 

system("cokolwiek");

 

2. Dziel program na funkcje (np.)

 

float dodawanie(float a, float 
{
return a + b;
}

3.  To:  long cowybierasz; jest na prawdę nie potrzebne. Możesz to zastąpić zwykłym intem, albo shortem

(to co użytkownik wpisze i tak nie powinno przekroczyć nawet 10)

 

4. Nie używaj zmiennych globalnych.

Opublikowano

1.Zmienne zamiast zapisać tak:

double liczba1;
double liczba2;

można tak: 

double liczba1, liczba2;

2.

cout << "Kliknij przycisk i zatwierdz enterem\n\n[1] Dodawanie\n[2] Odejmowanie\n[3] Mnozenie\n[4] Dzielenie\n[5] Potegowanie\n[6] Pierwiastkowanie\n[7] Obliczanie pol\n\n[0] Wyjdz\n\nWybieram numer: "; 

zamiast

 cout << "Kliknij przycisk i zatwierdz enterem\n\n" << "[1] Dodawanie\n" << "[2] Odejmowanie\n" << "[3] Mnozenie\n"
 << "[4] Dzielenie\n" << "[5] Potegowanie\n"<< "[6] Pierwiastkowanie\n" << "[7] Obliczanie pol\n\n"
 << "[0] Wyjdz\n\n" << "Wybieram numer: ";

3.
 

"\n\nWpisz byleco, by wrocic do menu: "

 Trzeba uściślić "Wpisz jakąś liczbę, by wrócić do menu"

Opublikowano

Przede wszystkim pisać czytelnie, dobry kod "czyta się jak gazetę".

cout << "Kliknij przycisk i zatwierdz enterem\n\n" <<
        "[1] Dodawanie\n" <<
        "[2] Odejmowanie\n" <<
        "[3] Mnozenie\n" <<
        "[4] Dzielenie\n" <<
        "[5] Potegowanie\n" <<
        "[6] Pierwiastkowanie\n" <<
        "[7] Obliczanie pol\n\n" <<
        "[0] Wyjdz\n\n" <<
        "Wybieram numer: ";
od razu widać całe menu jak się będzie prezentować

 

double liczba1;
double liczba2;
IMO bardziej czytelne jeśli każda zmienna będzie w osobnej linijce wraz z typem.

 

Switche paskudne no ale na początek może być, możesz w switchu wywoływać funkcje jak @1361622928-U485574.pngNopeDotAvi doradził.

Staraj się pisać kod nie konkretyzowany platformą (chyba, że to jakieś konkretne przypadki tylko na daną platformę), tj. używać STL'a, boosta, C++11/14 i podobnych, które skompilują się i zadziałają na każdej platformie.

No i nie mieszać C i C++ :P

 

Komentarze też są zbędne, zakładaj, że człowiek po drugiej stronie jest na tyle inteligentny, iż potrafi zrozumieć kod (o ile jest czytelny, patrz punkt pierwszy [tak wiem, że nie ma numeracji punktowej, nie krzyczcie :(]). Aczkolwiek warto starać się pisać kod tak, jakbyś miał go komuś dać do przeglądnięcia czy sprzedać. Nie dość, że sam po powrocie do niego po dłuższym czasie się nie zgubisz, to jak komuś go pokażesz, to się nie zgubi :P

YOU MUST DIE

- Ganon, Koridai

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...