Dobrý den,
potřeboval bych nějak nakopnout jak nejefektivněji udělat součet všech čísel v souboru.
Čísel je méně než 500 000 a každé číslo je na samostatném řádku.
Předem děkuji za odpověď.
Sčítání superobrovských čísel už mám vyřešené a řešení volně stažitelné (jednotka Matyka), ale je v tom tolik assembleru, že ti to asi moc nepomůže. Takže to budeš muset zvládnout sám.
Napiš si třeba funkci soucet(a,b:string):string. Dělat by mohla zhruba tohle:
1) Porovnej délku zadaných řetězců (čísel). Ten kratší doplň zleva nulami, aby byly stejně dlouhé.
2) Projdi oba řetězce zprava. Pro každý znak:
2a) Spočítej A[i]+B[i]+zbytek z minulé cifry.
2b) Tohle mod 10 ulož na itou pozici vysledku.
2c) Tohle div 10 si ulož jako zbytek pro příště.
3) Výsledek předej jako návratovou hodnotu.
Převod ze znaků '0'..'9' na čísla 0..9 provedeš funkcí Ord a odečtením čísla 48 (ASCII kód nuly). Pochopitelně nebude od věci zkontrolovat, jestli zadané texty neobsahují jiné znaky než čísla. Na čtení řádků ze souboru je Readln, konec poznáš podle Eof. Assign, Reset a Close snad není třeba vysvětlovat.
Zasláno z mobilního telefonu.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku