• Welcome to Forum graficzne Burning-Brushes.pl. Please log in or sign up.
 

Kalkulator Moov'a

Zaczęty przez moov, Sierpień 27, 2009, 19:17:41

Poprzedni wątek - Następny wątek
Tutaj taki trochę śmiechowy projekt, ale uczę się dopiero. Pobierajcie sobie mój kalkuator i testujcie... Znaczy dużo do testów nie ma, ale proste działania przeprowadza. Działa.

INFO O PLIKU


KALKULATOR


Gift from Vell:
Zapraszam do mnie do galerii.

ah, miałem nadzieje, że będzie graficzny interfejs : d
kiedyś też taki kalkulator zrobiłem w c++, ale też w delphi, pythonie i perlu : d
no ale programowanie fajna sprawa ^^ tylko jeśli nie wiążesz z tym przyszłości to polecam jakiś lżejszy język zamiast c++ ; p

jeśli nie masz nic przeciwko to ja to przeniosę do działu "programowanie"

Nie mam nic przeciwko. Wypadałoby, żebym i kod udostępnił też chyba.... ;P

Abik, nie mam wyboru. Musiałem się podstaw C++ nauczyć, bo na studiach z przedmiotu IT mam z tego egzamin. Doszedłem więc do wniosku, że jeśli zacząłem, to będę w to brnął dalej...


Gift from Vell:
Zapraszam do mnie do galerii.

Fajne te programowanie, ale dużo trzeba znać tych komend.
Jest jeszcze Turbo Pascal, z tego co wiem C++ najlepszy. Potem chyba Delphi.




CytatAbik, nie mam wyboru. Musiałem się podstaw C++ nauczyć, bo na studiach z przedmiotu IT mam z tego egzamin.
ah, no w takiej sytuacji to się nie dziwię czemu taki wybór : d
nie wiem czy to widziałeś, ale jakby co to polecam: http://xion.org.pl/productions/texts/coding/megatutorial/
no i nie żebym straszył, ale czytałeś już coś o wskaźnikach? :D

CytatJest jeszcze Turbo Pascal, z tego co wiem C++ najlepszy. Potem chyba Delphi.
nie da się ustalić jednoznacznie który lepszy, który gorszy itp... można powiedzieć, że np. jeden nadaje się lepiej do jednych celów a inny do innych, ale nie że któryś jest lepszy, a któryś gorszy ; d

W C++ zauważyłem, że jest zdecydowanie więcej komend, których w przypadku TP nie działają.
Trzeba mieć do tego smykałkę :)



Tak Abik, xion'a znam, ale dzięki za link i tak. Nawet kupiłem Symfonię. Zamierzam się z tym cały rok ścierać (już prywatnie), zobaczymy co z tego wyjdzie. Mam w planach napisanie takiego kozackiego programu, ale co on będzie robił, to kiedy indziej. Na szczęście na egzaminie zaawansowanych rzeczy nie będzie, więc na razie mam spoko... Abik, a Ty liznąłeś coś C++ ? Bo mam listę ptań, na które bym chciał, żeby ktoś jeszcze oprócz mnie odpowiedział (dla porównania).


Gift from Vell:
Zapraszam do mnie do galerii.

no ten tutorial xiona cały przeobiłem po za dzialem o winapi (tylko część go przeczytałem i nie mogę się zebrać żeby dokończyć : ( ), więc jak masz pytania to z chęcią odpowiem :P Tylko wiesz, wielki pro to nie jestem :P

a Symfonia też dobra książka z tego co wszyscy mówią : d

Ja mam Symfonie całą w pdf'ie i naprawdę jest tego dużo.
Sporo wskazówek, dla początkujących chyba najlepsze co może być.



Dla początkujących jest dobra, ale chyba najlepsza dla najbardziej początkujących jest książeczka KOMPUTER ŚWIATA Pawła Paczuskiego. Co prawda mniej się z niej można nauczyć, ale dla głąbów i laików jest świetna. :)

Pytania Ci jutro podeślę... Dzięki ^^


Gift from Vell:
Zapraszam do mnie do galerii.

moov nie zrobiłeś warunku dzielenia przez 0
Pokaż kod :)

Faktycznie... lol, zapomniałem o tym. Ale to zapętle i powinno być dobrze. Głupia sprawa, ale kodu nie potrafię teraz odzyskać. W kompilatorze niby zapisuję projekt jako, no i tam potem jak to otworze to są jakieś dziwne napisy a nie kod, wie ktoś o co chodzi !?


Gift from Vell:
Zapraszam do mnie do galerii.

nie pomogę Ci z tym ponieważ nigdy nie robiłem plików wykonawczych :P
w jakim kompilatorze piszesz?

Dev-C++

Szkoda :/ No nic, może sam się nauczę jak się powinno dobrze zapisywać kod ...


Gift from Vell:
Zapraszam do mnie do galerii.

Na Linuksie(polecam Ubuntu:P ) w konsoli miałbyś o jedną(dwie) linijke mniej kodu

Ja chyba jestem na jedynych studiach gdzie nie uczą C++ :]

Tak, ja również myślę o Linuxie, jak będę miał odpowiedni sprzęt to chcę też go jakoś pozyskać. Ile kosztuje Linux?


Gift from Vell:
Zapraszam do mnie do galerii.


CytatIle kosztuje Linux?
nie kosztuje kompletnie nic, chyba, że specjalne dystrybucje Red Hat czy Mandriva

a co do tego problemy z odzyskaniem kodu mówisz, że zapisałeś to jako projekt tak?
no to w Devie pliki projektu zapisują się jako .dev i jak go otworzysz to to z boku w przeglądarce klas i plików musi być i wystarczy na niego kliknąć, żeby odczytać kod (domyślnie nazywa się main.cpp)...
a tak w ogóle to nie polecam przy takich prostych programach bawienie się w projekty bo to sensu nie ma, po prostu ->plik ->nowy -> plik źródłowy i jechane ^^

chyba, że nie masz pliku .dev albo .cpp tylko skompilowanego .exe to wtedy potrzebny byłby specjalny program tzw. disassembler... problem jest tylko w tym, że taki program nie zamienia kodu maszynowego na C++, ale na asemblera, a to jest język niskopoziomowy i niestety strasznie trudny :S do tego kompilatory z reguły mają wbudowane różne mechanizmy optymalizacyjne itp, więc ten kod "odzyskany" przez disasemblera i tak nie jest w 100% taki jak powinien... są dekompilatory, które potrafią tłumaczyć z asma na c++, ale są płatne niestety : s no i z tego co czytałem nie są oczywiście jakoś szczególnie dokładne : s
jak koniecznie chcesz spróbować to polecam takiego disasemblera IDA, w wersji 4.9 (czy coś koło tego : P ) jest darmowy, no i potrafi np. wyświetlać nagłówki funkcji w c++ i różne inne tego typu podopowiedzi, więc nie jest tak strasznie tragicznie : s

Moov... polecam ubuntu + parę dodatków, a kolorowanie kodu jest już wbudowane. A co do komplikowania, to pestka, wystarczy sudo apt-get install gpp a potem gpp nazwa_pliku.cpp (w konsoli) i luz :) Sam używam linksa. Pobiorę pliczek, może odpali na wine. A na początek nie musisz usuwać windowsa. Jest wiele poradników do instalacji ubuntu obok windowsa. też mam jeszcze windowsa ;)
pozdro.
ps. mam trochę początkujących programów, chcesz to prześle ci kody źródłowe.

Jasne. Jak możesz to poprzesyłaj mi te poradniki i te kody początkujące. Zostaw na miom blogu: TU


Gift from Vell:
Zapraszam do mnie do galerii.

Hmm, czemu jak biore 2x2 (lub 2*2) to wyskakuje mi suma: 2293674 ;d nie kapuje tego troche, hehe
I pisze, aby kontynuować to trza nacisnąć dowolny klawisz, naciskam i się wyłącza ;p
szczerze myślałem, że jakiś fajniejszy będzie interfejs ;pp

bo tam się nie wpisuje działania, tylko najpierw jedną liczbę, a później drugą i na tej podstawie liczy ; d

Kenty najpierw podajesz pierwszą liczbę a potem drugą i wtedy kalkulator działa.
moov poprostu nie uotpornił go na "głupote użytkownika" bo przykładowow jak zamiast liczby wpiszemy litere to się supie :)


Haha, bo ja normalnie nie uodporniłem go na nic jeszcze, można zhackować łatwo ^^

Kenty, ale swoją drogą - mógłbyś dokładnie czytać go... :)

No i teraz pytanie. Doradzi mi ktoś czym powinienem go zapętlić, żeby nie wyłączało go, tylko tak jakby realoadowało ?


Gift from Vell:
Zapraszam do mnie do galerii.

CytatDoradzi mi ktoś czym powinienem go zapętlić, żeby nie wyłączało go, tylko tak jakby realoadowało ?
każda pętla tu sie nadaje ; p

jak ja kiedyś zrobiłem przelicznik,  też go zapętliłem, ale trzeba dać możliwość wyjścia z pętli i wyłączenia programu np. coś w tym stylu:

//tu jakieś pierdy, pliki nagłówkowe itp

int kontroler =1;
while (kontroler != 0){
   // tu cały mechanizm tego kalkulatora
   std::cout << "Czy chcesz zakonczyc dzialanie? (wpisz 0 jesli tak lub inna liczbe jesli nie) " << std::endl;
   std::cin >> kontroler;
}


generalnie do takich prostych rzeczy chyba lepiej użyć prostszej pętli while : P

Abik jakie std::cout ? lepiej dac po nagłowkach linijkę
using namespace std;
i można teraz tylko cout, cin itp pisac bez tego std::

tak jak Abiczek napisał pętla while tylko ja bym to zrobił inaczej


char kontroler='t';
while (kontroler=='t')
{
   ...
   do
   {
      cout<<"Jeszcze raz [t/n] :"<<ednl;
      cin>>kontroler;
   }
   while (kontroler!='t' && kontroler !='n');
}

ehhh zapomniałem napisać, z reładowaniem dałem radę :), No i 0 jako dzielnik wyeliminowałem, ale w każdym razie dzięki Wam za pomoc. No i mam kolejną prośbę-pytanie, bo z tym już nie wiem jak sobie poradzić: Chodzi o "uodpornienia na głupotę usera"... Tzn, nie mam pomysłu jak zapętlić, żeby np gdyby ktoś wpisał jakiś tekst w miejscu, gdzie ja proszę o liczbę, to żeby wyświetlało napis jakiś (np. BŁĄD)...

Bo gdzie ? Wydaje mi się, że głównie pętla powinna znajdować się gdzieś tam, gdzie proszę o podanie liczby... szczerze, najgorsze to jest to, jaki warunek mam zapisać...

No i udało mi się pozyskać kod swoimi sposobami w końcu, proszę, oto kodzik nowej wersji (1.1):

#include <cstdlib>
#include <iostream>

using namespace std;

int main()

{
    char litera='t';
    do
    {
    cout << endl;
    cout << "              . . . : : : | KALKULATOR MOOV'a wersja 1.1 | : : : . . . \n\nWprowadz kolejno dwie liczby, nastepnie wybierz cyfre z dzialaniem, \nwszystko zatwierdzajac ENTER'em. ";
    cout << endl;
    int a, b, wybor, w;                                              // deklaracja dla liczb i opcji działania
        cout << " \nPierwsza liczba: ";
        cin >> a;                                                 // wprowadzanie pierwszej
        cout << " \nTeraz druga: ";
        cin >> b;                                                 // wprowadzanie drugiej
    cout << endl;
    cout << endl;
    cout << " Co zamierzasz zrobic?:" << endl;
    cout << endl;
    cout << " 1. Dodawanie" << endl << endl << " 2. Odejmowanie" << endl << endl << " 3. Mnozenie" << endl << endl << " 4. Dzielenie" << endl << endl << " 5. Aby wyjsc" << endl << endl;
    cout << endl;
    cout << endl;
    cout << " Wybieram: ";
    cin >> wybor, w;
    cout << endl;
    cout << endl;
   
   switch (wybor)
   {
         case 1: cout << a << " + " << b << " = " << a + b; break;
         case 2: cout << a << " - " << b << " = " << a - b; break;
         case 3: cout << a << " * " << b << " = " << a * b; break;
         case 4:
               if (a == 0.0)
                     cout << " Dzielnik NIGDY nie moze byc zerem!";
               else               
                 cout << a << " / " << b << " = " << a / b << "     Reszta:  " << a % b; break;                   
         default: cout << "Dziekuje bardzo."; break;
   }
    cout << endl;
    cout << endl;
    cout << endl;
          cout << "Czy chcesz wprowadzic nowe dane?   Nacisnij literke: [t] lub [n] " << endl;
          cout << endl;
          cin >> litera;
    cout << endl;
    cout << endl;
    cout << endl;
    cout << "___________________________________________________________________________";
    cout << endl;
    cout << endl;
    }
    while (litera == 't');
}



Gift from Vell:
Zapraszam do mnie do galerii.

moov jak dałeś pętle do while to teraz niepotrzebnie na początku przypisałeś wartośc 't' zmiennej litera.
while(1)
{
   cin >> zmienna;
   if(cin.fail())
   {
      cout << "Miales podac liczbe! Podaj jeszcze raz!\n";
      cin.clear(cin.rdstate() & ~ios::failbit);
   }
   else
   {
      break;
   }
}


Ciekawe bo w Javie sprawdzenie typu zmiennej zajmuje znacznie mniej miejsca :)

Dzięki Sympatyku, faktycznie niepotrzebnie  przypisałem wartość zmiennej.

Sympatyku. Dzięki za kod, ale nie wiem gdzie robię błąd, bo gdy go przekopiowałem - zamiast wyświetlenie napisu i wykonaniu instrukcji "break;" on cały czas pokazuje ten napis i nie można wprowadzać cyfr ponownie... Help ?



Gift from Vell:
Zapraszam do mnie do galerii.

Znalazłem błąd w tym co Ci dałem. Teraz sam sprawdziłem i działa.
    int a, b, wybor, w, ok; 
     do
     { 
        cout << " \nPierwsza liczba: ";    // wprowadzanie pierwszej
        cin >> a;
        if (cin.fail()) //jesli wczytanie sie nie powiodlo
         {
            ok=0;
            cin.clear(); //czysci flage bledu strumienia
            cin.ignore(INT_MAX, '\n'); //usuwa wszystkie znaki z buforu strumienia
            cout << "Nie podano liczby, jeszcze raz";
         }
         else
         {
              ok=1;
         }
      }
      while (ok==0);   
      ok=0;
      do
      {                                           
        cout << " \nTeraz druga: ";
        cin >> b;
        if (cin.fail()) //jesli wczytanie sie nie powiodlo
         {
            ok=0;
            cin.clear(); //czysci flage bledu strumienia
            cin.ignore(INT_MAX, '\n'); //usuwa wszystkie znaki z buforu strumienia
            cout << "Nie podano liczby, jeszcze raz";
         }
         else
         {
              ok=1;
         }
      }
      while (ok==0);


btw. lepiej chyba dac typ float żeby w dzieleniu wychodziła liczba zmiennoprzecinkowa bo tak to tylko całkowita.

CytatAbik jakie std::cout ? lepiej dac po nagłowkach linijkę
wiem, ale już to pominąłem i się skupiłem na samej pętli : d

CytatCiekawe bo w Javie sprawdzenie typu zmiennej zajmuje znacznie mniej miejsca :)
bo Java to zupełnie inna bajka : d o wiele przyjemniejsza ; p

no ten pierwszy kod faktycznie nie działa, ten drugi już ok : d

oo Faktycznie działa, dziękuję bardzo - i fajnie, że opisałeś, bo ja się uczę dopiero.... :)
Float tak - wiem, jest do liczb rzeczywistych typem, tak? W każdym razie robiłem ten kalkulator od razu jak się nauczyłem czegoś i float jest dopiero potem, ale na pewno go udoskonalę :P.... Dzięki wielkie.


Gift from Vell:
Zapraszam do mnie do galerii.

CytatFloat tak - wiem, jest do liczb rzeczywistych typem, tak?
tak : d
podobnie jak double, ale double jest bardziej dokładny - zapamiętuje więcej liczb po przecinku, ale też za to zajmuje więcej miejsca w pamięci ; d