Reklama
Pokazuje wyniki od 1 do 6 z 6

Temat: [C++] Wyciągnięcie z linii poleceń i zmiana wartości na int

  1. #1
    Avatar Andela
    Data rejestracji
    2005
    Położenie
    Wrocław
    Wiek
    31
    Posty
    2,962
    Siła reputacji
    20

    Domyślny [C++] Wyciągnięcie z linii poleceń i zmiana wartości na int

    Mam sobie pewne klasy wykonujące działanie na wartościach (trzy argumenty podane w linii poleceń), mam jednak problem z ich wczytaniem i przetworzeniem na int oraz char:
    Kod PHP:
    int _tmain(int argc, char argv[])
    {
    	char xs, ys, op;
    	int x, y;
    	Kalk liczba;
    	xs=argv[1];
    	ys=argv[2];
    	x=int(xs);
    	y=int(ys);
    	op=argv[3];
    	if (op=char("+")) 
    		liczba.dodawanie(x, y);
    	if (op=char("-")) 
    		liczba.odejmowanie(x, y);
    	if (op=char("*")) 
    		liczba.mnozenie(x, y);
    	if (op=char("/"))
    		liczba.dzielenie(x, y);
    	cout<<"Wynik dzialania: "<<x<<op<<y<<" to: "<<liczba.wynik<<endl;
    Bezskutecznie próbowałem funkcji itoa, jednak stwierdziłem, że spróbuję jawnej konwersji, lecz nadal program wyświetla randomowe liczby i działanie. Nie wiem czy problem leży po stronie wczytywania czy też po stronie konwersji.

  2. #2

    Data rejestracji
    2009
    Położenie
    Rybnik
    Wiek
    28
    Posty
    451
    Siła reputacji
    15

    Domyślny

    jeśli robisz ify to musisz użyć podwójnego znaku równa się '==' a nie pojedyneczego.
    co do konwersji to użyj atoi.
    Ostatnio zmieniony przez Zed : 23-10-2013, 20:05

  3. Reklama
  4. #3
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    Jeżeli problemem jest to co napisał Zed, to rzeczą wartą uwagi jest Yoda notation, czyli staramy się pisać
    Kod:
    if (char("/")==op)
    zamiast
    Kod:
    if (op==char("/"))
    Chroni nas to przed takimi błędami, gdy zamiast == napiszemy =.
    Podobnie z liczbami, boolami i wszystkim innym, do czego przypisać się nie da.
    http://en.wikipedia.org/wiki/Yoda_conditions

  5. #4
    Avatar bercik
    Data rejestracji
    2005
    Położenie
    Rojca
    Wiek
    35
    Posty
    406
    Siła reputacji
    20

    Domyślny

    Kod:
    int main( int argc, char* argv[] )
    {
        char op[1];
        int x, y;
        Kalk liczba;
        x = atoi(argv[1]);
        y = atoi(argv[2]);
        strcpy(op, argv[3]);
    
        if (op[0] == '+') 
    	liczba.dodawanie(x, y);
        if (op[0] == '-') 
            liczba.odejmowanie(x, y);
        if (op[0] == '*') 
            liczba.mnozenie(x, y);
        if (op[0] == '/')
            liczba.dzielenie(x, y);
    
        cout << "Wynik dzialania: " << x << op << y << " to: "<< liczba.wynik << endl; 
    
        return 0;
    }
    Trochę brzydkie, ale śmiga :) jak by coś było niejasne lub chciałbyś ładniejszy kod to pisz.
    Ostatnio zmieniony przez bercik : 23-10-2013, 20:43

  6. #5
    Avatar Kaplarek
    Data rejestracji
    2009
    Posty
    361
    Siła reputacji
    15

    Domyślny

    Cytuj Absherr napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Jeżeli problemem jest to co napisał Zed, to rzeczą wartą uwagi jest Yoda notation, czyli staramy się pisać
    Kod:
    if (char("/")==op)
    zamiast
    Kod:
    if (op==char("/"))
    Chroni nas to przed takimi błędami, gdy zamiast == napiszemy =.
    Podobnie z liczbami, boolami i wszystkim innym, do czego przypisać się nie da.
    http://en.wikipedia.org/wiki/Yoda_conditions
    szybciej jest zapamiętać, że pojedynczego używamy tylko w działaniach :/
    nie świecę

  7. #6
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    Nie chodzi o zapamiętanie, ale o to, że czasami robi się głupie błędy, których później się długo szuka.
    Ostatnio zmieniony przez Absherr : 23-10-2013, 21:30

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Zaginięcie samolotu algierskich linii lotniczych.
    Przez edek2_1932 w dziale O wszystkim i o niczym
    Odpowiedzi: 10
    Ostatni post: 06-08-2014, 11:01
  2. Parametry linii Orange (kabel)
    Przez Noxen w dziale Sprzęt i oprogramowanie
    Odpowiedzi: 4
    Ostatni post: 24-01-2014, 15:33
  3. [Python][XML]Wyciągnięcie attrybutu od wybranego roota
    Przez Rysiek w dziale Programowanie
    Odpowiedzi: 5
    Ostatni post: 29-11-2013, 19:16
  4. Wyciagniecie sterownikow z dysku - nowy Laptop
    Przez comm0 w dziale Sprzęt i oprogramowanie
    Odpowiedzi: 4
    Ostatni post: 24-01-2013, 23:54
  5. [8.54][NPC] Ignoruje część poleceń
    Przez GM Quan Lee w dziale Skrypty i technika
    Odpowiedzi: 0
    Ostatni post: 03-03-2011, 19:40

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •