Forum graficzne Burning-Brushes.pl

Programowanie oraz Grafika => Programowanie => Wątek zaczęty przez: moov w Sierpień 27, 2009, 19:17:41

Tytuł: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 27, 2009, 19:17:41
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 (http://www.designerspub.boo.pl/)


KALKULATOR (http://www.designerspub.boo.pl/kalkulator_moov'a_1.1.exe)
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Abik w Sierpień 27, 2009, 19:22:17
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"
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 27, 2009, 19:32:57
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...
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Creative w Sierpień 27, 2009, 19:36:10
Fajne te programowanie, ale dużo trzeba znać tych komend.
Jest jeszcze Turbo Pascal, z tego co wiem C++ najlepszy. Potem chyba Delphi.

Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Abik w Sierpień 27, 2009, 19:40:33
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
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Creative w Sierpień 27, 2009, 19:50:39
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ę :)
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 27, 2009, 20:05:11
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).
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Abik w Sierpień 27, 2009, 20:11:42
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
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Creative w Sierpień 27, 2009, 20:14:37
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ć.
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 27, 2009, 20:22:15
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 ^^
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Sympatyk w Sierpień 27, 2009, 23:34:47
moov nie zrobiłeś warunku dzielenia przez 0
Pokaż kod :)
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 28, 2009, 11:09:05
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 !?
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Sympatyk w Sierpień 28, 2009, 12:00:27
nie pomogę Ci z tym ponieważ nigdy nie robiłem plików wykonawczych :P
w jakim kompilatorze piszesz?
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 28, 2009, 12:14:11
Dev-C++

Szkoda :/ No nic, może sam się nauczę jak się powinno dobrze zapisywać kod ...
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Sympatyk w Sierpień 28, 2009, 12:25:28
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++ :]
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 28, 2009, 13:17:21
Tak, ja również myślę o Linuxie, jak będę miał odpowiedni sprzęt to chcę też go jakoś pozyskać. Ile kosztuje Linux?
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Sympatyk w Sierpień 28, 2009, 13:22:49
Linux jest darmowy :)
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Abik w Sierpień 28, 2009, 13:31:56
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
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Tomasz w Sierpień 28, 2009, 15:41:35
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.
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 28, 2009, 18:14:02
Jasne. Jak możesz to poprzesyłaj mi te poradniki i te kody początkujące. Zostaw na miom blogu: TU (http://www.designerspub.boo.pl)
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Kenty^ w Sierpień 29, 2009, 14:57:17
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
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Abik w Sierpień 29, 2009, 15:01:14
bo tam się nie wpisuje działania, tylko najpierw jedną liczbę, a później drugą i na tej podstawie liczy ; d
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Sympatyk w Sierpień 29, 2009, 15:01:23
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 :)
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Kenty^ w Sierpień 29, 2009, 18:07:49
aha, dzięki ;d
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 29, 2009, 18:56:14
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 ?
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Abik w Sierpień 29, 2009, 21:49:20
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
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Sympatyk w Sierpień 30, 2009, 00:38:17
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');
}
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 30, 2009, 02:57:19
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');
}

Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Sympatyk w Sierpień 30, 2009, 10:50:40
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 :)
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 30, 2009, 12:22:26
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 ?

Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Sympatyk w Sierpień 30, 2009, 13:26:52
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.
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Abik w Sierpień 30, 2009, 13:40:03
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
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: moov w Sierpień 30, 2009, 14:58:50
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.
Tytuł: Odp: Kalkulator Moov'a
Wiadomość wysłana przez: Abik w Sierpień 30, 2009, 15:13:44
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