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?
Fórum › Pascal
Dlouha cisla
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 ;)
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.
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.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pascal - Dlouhá Čísla — založil satanůvprd
Dlouhá aritmetika? — založil randomák
DetailsView dlouhá tabulka, lze rozdělit? — založil hery
Moderátoři diskuze