Součet čísel ze souboru – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Součet čísel ze souboru – Pascal – Fórum – Programujte.comSoučet čísel ze souboru – Pascal – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Axik0
Duch
27. 12. 2014   #1
-
0
-

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ěď.

Nahlásit jako SPAM
IP: 78.45.128.–
lukas.balaz0
Super člen
27. 12. 2014   #2
-
0
-

#1 Axik
Aké veľké môžu byť tie čísla ? Teda resp., zmestí sa súčet do 64 bitovej premennej ??

Prečo to len neprejdeš a pamätáš si súčet (a pri EOF skončíš program) ?

Nahlásit jako SPAM
IP: 80.242.41.–
Axik0
Duch
27. 12. 2014   #3
-
0
-

#2 lukas.balaz
Ty čísla mají mít až 200 dekadických cifer.

Nahlásit jako SPAM
IP: 78.45.128.–
lukas.balaz0
Super člen
27. 12. 2014   #4
-
0
-

#3 Axik
Na takéto úlohy väyčšinou odpovedám: "použi python3". Ak to musí byť pascal, tak neviem ako by to išlo robiť najrýchlejšie ... nejako pomocou stringov ... 85 bajtový výsledok je predsa len trochu moc :D.

Nahlásit jako SPAM
IP: 80.242.41.–
Axik0
Duch
27. 12. 2014   #5
-
0
-

#4 lukas.balaz
Já bych potřeboval někoho kdo Pascalu rozumí, aby mi poradil s pár příklady.. Přijde mi, že na to že jsem nováček dostávám moc těžký úkoly... 

Nahlásit jako SPAM
IP: 78.45.128.–
Mircosoft+1
Věrný člen
27. 12. 2014   #6
-
0
-

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.

Nahlásit jako SPAM
IP: 141.0.8.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Axik0
Duch
27. 12. 2014   #7
-
0
-

#6 Mircosoft
Ok díky moc!

Nahlásit jako SPAM
IP: 78.45.128.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 25 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý