• 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
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.