Porównywanie ciągów znaków zawierających dziesiętny zapis liczb

0

Czy ktoś może wie jak rozwiązać takie zadanie: Zaimplementuj funkcję:

bool czy_mniejsza(string n, string m);

zwracającą wartość true jedynie jeśli liczba o zapisie dziesiętnym podanym w n jest mniejsza niż liczba o zapisie dziesiętnym podanym w m. np: dla n=100001001 i m=100001000 będzie to false, a dla n=999 i m=1000 będzie true.

1

Jesli string jest dluzszy (ma wiecej cyfr a jest liczba calkowita) to wartosc w nim jest wieksza. Jesli sa rownej dlugosci to porownujesz cyfry (...) tysiecy, setek, dziesiatek ktora jest mniejsza
Zakladam ze nie chodzi o zcastowanie do inta bo liczby moga byc ogromne

1
stivens napisał(a):

Jesli string jest dluzszy (ma wiecej cyfr a jest liczba calkowita) to wartosc w nim jest wieksza.

Tylko wtedy, gdy nie zawiera zer wiodących – trzeba to brać pod uwagę.

0

niestety nie umiem tego zapisac

0

Zacznij, pokaz kod -> pomozemy
W innym wypadku jest taki dzial jak ogloszenia drobne

0

A jeśli założymy że liczby nie mają zer wiodących to czy coś takiego ma sens??

int main()
{
string a;
string b;
bool f(string a, string b);
if (a.size() < b.size())
return true;
if (a.size() > b.size())
return false;

 for (int i = 0; i <= a.size(); i++) {
   if ((int)a[i] < (int)b[i])
    return true;
}
}
0
bool czy_mniejsza(std::string s1, std::string s2)
{
    return std::stoll(s1) < std::stoll(s2);
}

Dziękuję, dobranoc.

4
AgentNKWD napisał(a):
bool czy_mniejsza(std::string s1, std::string s2)
{
    return std::stoll(s1) < std::stoll(s2);
}

Dziękuję, dobranoc.

Return value
The string converted to the specified signed integer type

To sobie teraz odpal

czy_mniejsza("9881293839239389381239123", "9837139481238723937838933838129383913u129389338938933893");

(downvote)

0

stivens dziękuje !

0

While-uj dopóki są identyczne, a jak przestaną być to True albo False zależy która będzie większa. Porównaj tylko wcześniej czy nie są identyczne, bo wyjdzie ci poza stringa i będzie error.

0 użytkowników online, w tym zalogowanych: 0, gości: 0