for / lub coś innego

2011-09-29 18:28
Skoczek
0

Witam
Mam problem, z którym nie mogę sobie poradzić - a jest dość nie typowy, dlatego na żadnym forum nie mogę znaleźć żadnej rzeczowej odpowiedzi. Liczę na was =).
Potrzebuję zrobić funkcję, która dodaje stringi jako liczby. Przykładowo: "101" + "11" = "112". Ogólnie mój program działa na ogromnych liczbach, których nie pomieści nawet long long, a nie chcę używać innych bibliotek do tego. Myślałem żeby zrobić to w ten sposób, że stworzę for który dodaje kolejno liczby do siebie. Ale też tutaj jest problem bo iterator (int i...) nie może zmieścić długości stringa. Czy ma ktoś pomysł jak to zrobić, np. w pętli while coś w stylu getnextstringchar. Czy takie coś istnieje w domyślnym bibliotekach?

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-09-29 18:33
0

A o arytmetyce wielkich liczb to Ty słyszałeś?


Idiots, idiots everywhere.

Pozostało 580 znaków

2011-09-29 18:37
2011-09-29 18:37
Rev
0

Jak to int może nie zmieścić długości napisu? To ile on ma, 5 milionów znaków długości?


Pokaż pozostałe 4 komentarze
No raczej więcej niż 2,147,483,647, bo taki limit ma int, jemu chodzi o to że w pętli jego int nie jest w stanie tego pomieścić i do takiej wielkości iterować :) - Madm4n 2011-09-29 19:34
no ale jeszcze jest unsigned :D - byku_guzio 2011-09-29 19:50
Ciekawi mnie co zwróci String.Length jeśli string będzie miał więcej niż MAXINT znaków :) Zacznie iterować od -MAXINT? :) - Madm4n 2011-09-29 20:00
raczej Ci się to nie uda. length zwraca size_t(unsigned int), do tego ma metodę max_size, więc pewnie pilnuje co by ktoś nie przesadził :) - byku_guzio 2011-09-29 20:04
w C++, ale w C# zwraca Int32 z tego co mówi MSDN, bardziej C# mnie ciekawi :P - Madm4n 2011-09-29 21:22

Pozostało 580 znaków

2011-09-29 20:46
Skoczek
0

Liczba wygenerowana może osiągnąć rozmiar mniejszy niż 10^100 (lub troszeczkę mniej, to takie główne założenia, bo wszystko jest generowanie przez while - co pozwala nie używanie iteratora w pętli).
Ogólnie nie chcę używać/nie mogę innych bibliotek. Ponawiam pytanie, czy ma ktoś pomysł aby zrobić to w std::string (typ zmiennych), funkcja dodawanie?

100 < 4294967296 - iooi 2011-09-29 20:57

Pozostało 580 znaków

2011-09-30 00:05
0

10^100 czyli ma 100 bajtów w zapisie ASCII. Twój int nie pomieści liczby 100?


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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