Dlouha cisla – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Dlouha cisla – Pascal – Fórum – Programujte.comDlouha cisla – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
7. 9. 2009   #1
-
0
-

Ahoj mam takovy problem snazim se najit nejdelsi cislo v souboru dostal jsem se az k tomu ze najdu nejdelsi slovo ale kdyz jsou dve cisla stejne dlouha tak to vypise to prvni.pr:123456
654321
tak mi to vypise jako nejvetsi cislo 123456.
nevyte nekdo jak se porovnavaji stringy?
DIKY honza
program nejdelsi_cisla;

var sou:text;
cis,cisl:string;
i,pocet,poc:integer;
z:char;
begin
assign(sou,'text.txt');
reset(sou);

while not eof(sou) do
begin
readln(sou,cis);
for i:=1 to length(cis) do
begin
if cis>=cisl then
begin

pocet:=pocet+1;
end;
end;
if pocet> poc then
begin
poc:=pocet;
pocet:=0;
cisl:=cis;
end
else pocet:=0;
end;
writeln('nejdelsi cislo je: ',cisl);

readln;
end.

mohl by mi nekdo pomoct?

Nahlásit jako SPAM
IP: 213.180.53.–
Reklama
Reklama
7. 9. 2009   #2
-
0
-

sorry mam tam hned na zacatku chybu hledam NEJVETSI CISLO!

Nahlásit jako SPAM
IP: 213.180.53.–
Mixxy0
Newbie
8. 9. 2009   #3
-
0
-

No a co říkáš na tohle?



program nejdelsi_cisla;
uses crt;
var soubor:text;
nacteno,nejvetsi:string;
begin
clrscr;
assign(soubor,'text.txt');
reset(soubor);
nejvetsi := '0';
while not eof(soubor) do
begin
readln(soubor,nacteno);
if(nacteno > nejvetsi) then
nejvetsi:= nacteno;
end;
writeln(nejvetsi);
readkey;
end.


+ jestli ti můžu doporučit, používej nějaký logický proměnný, ve kterých se i ostatní vyznají. Nikdy nevíš, kdy po tobě bude kdo co číst ;) A nebo si zdroj aspoň komentuj. Snad by to mělo být dobře, v pascalu jsem už nějaký to desetiletí neprogramoval :-)
Ale uč se, je to takový jednoduchý jazyk. Aspoň ze začátku ;)

Nahlásit jako SPAM
IP: 88.101.208.–
Dřív jsem býval namyšlený, ale teďka už nemám chybu!
Laaca0
Stálý člen
8. 9. 2009   #4
-
0
-

V pascalu jsi nějaký to desetiletí možná programoval, ale tvůj program je špatně.
Chybně vyhodnocuje záporná čísla a o desetinných ani nemluvě.

Nahlásit jako SPAM
IP: 195.113.79.–
DOS-u-akbar
8. 9. 2009   #5
-
0
-

Co je to za šaškárnu? Není jednodušší převést si načtený string na číslo a vyhodnotit to matematicky? Tohle nikde nemůže spolehlivě fungovat...

Najdi si v helpu proceduru VAL, v Pascalu už sice nedělám, ale mám pocit, že pozná typ čísla ve stringu a tím pádem můžeš porovnávat jak desetinná, tak celá čísla.

Nahlásit jako SPAM
IP: 85.70.67.–
http://sdraco.cz - Osobní web českého programátora
Mixxy0
Newbie
8. 9. 2009   #6
-
0
-

To Laaca : Hm, zvlastni, me to desitnna cisla bere v pohode.

Nahlásit jako SPAM
IP: 88.101.208.–
Dřív jsem býval namyšlený, ale teďka už nemám chybu!
Krychlik
~ Anonymní uživatel
195 příspěvků
9. 9. 2009   #7
-
0
-

To tymes.jan : A ty cisla jsou cela, prirozena nebo realna? Jake nejvetsi mozne cislo muze byt na vstupu?
To Mixxy : Je sice hezke, ze desetinne cisla to vezme v pohode, ale nedokaze to porovnat ani cele.Treba 456> 1234. Protoze to porovnava stringy znak po znaku a 4>1.U desetinnych je to uplne stejne. 7.6>456.1 >1234. A u zapornych je to take tak -876>-432 >-1.
To soul_draco : Pascal nema dost velky ciselny datovy typ, aby se do nej vesel nejvetsi mozny vstup tj 255 znaku.
Takze nejbliz reseni byl tymes.jan (pokud se v tom gulasi vyznam dobre).
1. porovnat znamenka, pokud ruzne tak + je vetsi, pokud ne tak
2. najit delici znak, tj tecku nebo carku a porovnat delky stringu pred- pokud je jeden delsi tak delsi je vetsi, pokud ne tak
3A. obe kladne- porovnat obe cisla jako string, vetsi je vetsi
3B. obe zaporne- porovna obe cisla jako string- mensi je vetsi (bacha chytak)
Tento postup dokaze vybraz nejvetsi realne cislo od asi -10e255 do 10e256 (- a 254 devitek, 255 devitek) , vcetne realnych zapsanych s teckou nebo carkou, ne exponentem.
Jediny problem by mohl byt pozice tecky a delka stringu.
function Pos(Substr: String; S: String): Byte; - najde pozici kde je ve stringu urcity jiny string pozice:=Pos('.', cislo);
function Length(S: String): Integer; - delka stringu- delka:=Length(cislo);
Melo by to byt dobre, zapsat to pujde taky dobre, az na spoustu if. samozrejme pokud vstup budou jenom prirozena cisla tak odpada 1 krok a v druhem se porovnavaji delky celeho stringu - tento postup nejspis mas v tom kodu, ale je to straslive napsane.

Nahlásit jako SPAM
IP: 217.115.240.–
Krychlik
~ Anonymní uživatel
195 příspěvků
9. 9. 2009   #8
-
0
-

Jeste bych se chtel opravit- 2 na 2A pokud kladne tak delsi je vetsi, 2B opacne.

Nahlásit jako SPAM
IP: 217.115.240.–
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, 9 hostů

Podobná vlákna

Pascal - Dlouhá Čísla — založil satanůvprd

Dlouhá aritmetika? — založil randomák

CIsla — založil Nery

Čísla — založil Onsi

Moderátoři diskuze

 

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