• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Porównywanie Stringów C++ - Problem z Warunkiem Logicznym

Object Storage Arubacloud
0 głosów
724 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez Dywan Nowicjusz (170 p.)

Zmagam się z dość poważnym problemem w moim programie. Piszę w C++ kalkulator dla dużych liczb. Chciałem teraz napisać funkcję dla liczenia SIlnii. Można powiedzieć, że udało mi się to zrealizować, jednak chciałem lekko zrefaktoryzować mój kod.
 

string Silnia(string a)
{
   Filtruj(a); // Po prostu pozbywam się zer na początku a = 0010, a = 10;

   // ZMIENNE
   string wynik = a;

   if (wynik == "0") // 0! = 1
      return "1";

   // SILNIA
   while (a > "2") // ZLY WARUNEK
   {
      a = Odejmowanie(a, "1"); // Moja funkcja do odejmowania
      wynik = Mnozenie(wynik, a); // Moja funkcja do mnożenia
   }

   // WYPISUJEMY WYNIK

   return wynik;
}



Chciałem teraz zrobić tak, aby dla wartosc
0! = 1
1! = 1
2! = 2
3! = 6 <-- dopiero tutaj wchodzę do pętli i wykonuje mnożenie.

Chcę po prostu zaoszczędzić trochę na czasie jak i na ilości operacji, aby nie wykonywać tych trywialnych obliczeń, które i tak nic nie zmienią. Chyba dobrze?

Problem stanowi ta linijka while (a > "2"), nie wiem dlaczego nie chce to chodzić tak jak sobie założyłem. Co ciekawe dla while (a > "1") jest już wszystko w porządku. Mogę co prawda to obejść warunkiem while (a != "2") ale wtedy muszę specjalnie obsłużyć wyjątek dla 1! = 1, bez tego wynik 1! = 0;

Co wykonuje źle? CodeBlox mi nie pomaga, debbuger nie działa na stringach, mówiąc, że są niezoptymalizowane.

1 odpowiedź

0 głosów
odpowiedź 7 lutego 2016 przez niezalogowany
Prosta sprawa: nie przeczytałeś dokumentacji, tu leży błąd

http://www.cplusplus.com/reference/string/string/operators/
komentarz 7 lutego 2016 przez Dywan Nowicjusz (170 p.)

No niby jest to co potrzebuję

bool operator>  (const string& lhs, const string& rhs);

Jednak nie rozumiem jak tego użyć :(

komentarz 7 lutego 2016 przez niezalogowany
komentarz 7 lutego 2016 przez Dywan Nowicjusz (170 p.)
Coś nadal nic. Nie widzę w tym powiązania z moim problemem :(
Próbowałem zrobić tak: while (a.compare("2") > 0)
Też nic to nie pomoga.
komentarz 8 lutego 2016 przez Dywan Nowicjusz (170 p.)
Dobra. Poradziłem sobie w inny sposób zrobiłem konwersję ze stringa na int. Następnie zbudowałem inne warunki logiczne i teraz wszystko bardzo dobrze chodzi.

Podobne pytania

0 głosów
1 odpowiedź 226 wizyt
pytanie zadane 5 sierpnia 2016 w C i C++ przez avi1999 Nowicjusz (200 p.)
0 głosów
1 odpowiedź 2,605 wizyt
pytanie zadane 29 grudnia 2018 w Java przez msukiennik Początkujący (380 p.)
0 głosów
1 odpowiedź 434 wizyt
pytanie zadane 5 maja 2018 w PHP przez Hellgrush Nowicjusz (230 p.)

92,563 zapytań

141,415 odpowiedzi

319,593 komentarzy

61,948 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...