Új hozzászólás Aktív témák
-
Tangerine
senior tag
Ezt próbáld meg:
Program allomanytkezel;
Uses crt;
Var
f: text;
szamsor:String;
Begin
assign(f,'C:\valami.txt');
reset(f);
while not eof(f) do
Begin
Readln(f,szamsor);
Writeln(szamsor);
End;
close(f);
Readln;
end.
És ennek tökmindegy, hogy van-e szóköz vagy vessző.
Az a 'baj', hogy a típusos és a szöveges állományt teljesen máshogy kell használni.
Ha pedig csak kiírni akarod, teljesen felesleges tömbbel bonyolítani.
Elég soronként beolvasni, és kiírni.
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
Valami ilyesmi: (nem póbáltam ki)
type
thuzas= record
szam : array [1..5] integer;
end;
var
lotto: array [1..52] of tHuzas ;
szam, x, y, max, temp,het, hibakod :integer;
kihuzva: set of integer;
valasz: string;
begin
{52. heti beolvasás}
x := 1;
kihuzva := [];
het := 52 ;
max := 5 ;
repeat
writeln('Kerem a '+ IntToStr (x) + '. szamot!: ') ;
readln(valasz);
val(valasz,szam,hibakod);
if (hibakod = 0) and (szam not (in kihuzva)) and (szam > 0) and (szam < 91) then
begin
lotto[het].szam[x] := szam;
kihuzva := kihuzva + szam;
inc(x);
end
else
begin
writeln('Hiba: ' + valasz);
readln;
end;
until x > 5 ;
{52. heti rendezés}
for x := 1 to Max - 1 do
begin
for y := x+1 to Max do
begin
if lotto[het].szam[x] > lotto[het].szam[y] then {csere-bere}
begin
temp := lotto[het].szam[x];
lotto[het].szam[x] := lotto[het].szam[y];
lotto[het].szam[y] := temp;
end;
end;
end;
end.
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
for x := 1 to ElemMax - 1 do
begin
for y := x+1 to ElemMax do
begin
if tomb[x] > tomb[y] then
{csere-bere, csökkenő sorrendnél nem > hanem <}
begin
temp := tomb[x];
tomb[x] := tomb[y];
tomb[y] := temp;
end;
end;
end;
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
-
Tangerine
senior tag
Jah, elcsesztem. Most látom, hogy szöveges állomány, nem típusos.
A .dat megzavart.
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
válasz Tangerine #1171 üzenetére
Akkor először csinálnék egy függvényt, ami visszaadja a beolvasott sorból az x-edik számot:
function szam(sor:string; hely:integer): integer;
var
i,sz,kod : integer;
begin
sor := trim(sor)+' ';
if hely > 1 then
for i := 1 to hely-1 do delete(sor,1,pos(' ',sor));
val(copy(sor,1,pos(' ',sor)-1),sz,kod);
szam := sz;
end;
var
het,x: integer;
lottosz : text;
egyhuzas: string;
lottotomb: array [1..52][1..5] of integer;
assign(lottosz,'C:\lottosz.dat');
reset(lottosz);
het := 1;
while not eof(lottosz) do
begin
readln(lottosz,egyhuzas);
for x:= 1 to 5 do lottotomb[het][x] := szam(egyhuzas,x);
inc(het);
end;
close(lottosz);
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
válasz norbiphu #1185 üzenetére
Hát ez így elég gáz. Ha a 'read' bájtonként olvas be egy textként deklarált fájlból (tegyük fel, nem tudom most kipróbálni) nem fogja a sem szóközöket sem a sorvégeket kihagyni hanem 32-öt fog érni a szóköz, egy sorvég pedig két számot (10 = LF és 13-at CR)
A kétjegyű számokat pedig két számnak a kódjuk szerint pl a '11' ből lesz két db 49-es.
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
-
Tangerine
senior tag
-
Tangerine
senior tag
válasz VladimirR #1235 üzenetére
Az a baj, hogy nem tudom nincs pacalom, csak delphim.
Végül is logikus amit írsz. Lehet azért nem futottam bele, mert általában inicializálással szoktam kezdeni (ups:='').
A delphi pl. figyelmeztet is, ha kimarad. Ezt (is) szeretem benne.
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
válasz VladimirR #1237 üzenetére
Ja. Valószínűleg nem teljesen egyforma. Ha parancssoros progit akarok írni, akkor delphi console app.
Sok hasonlóság a pascalhoz. Több függvény esetleg kicsit másnéven. Vagy ami a Pascalban még eljárás a Delphiben már függvény pl. (Str vs. IntToStr)
Vagy pl. UpperCase(s: string) az előző problémára.Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
válasz VladimirR #1246 üzenetére
if ( ch >= '0' ) and ( ch <= '6' ) then begin
Kmm... 6-os számrendszerben nincs 6-os.
Egyszerű lenne az egész - csak végig kéne szorozni a számjegyeket 6 egyre növekvő hatványaival -, de elképzelésem sincs hogyan lehetne ekkora óriási számot (6^60 - 1)tárolni. Valami trükköt be kell vetni, de nem jövök rá, hogy mit.Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
Nem szóltam.
Úgy néz ki a double sokkal nagyobb, mint gondoltam volna. (5.0 x 10^-324 .. 1.7 x 10^308)
Akkor mégis csak egyszerű a feladat.
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
Kicsit átalakítottam:
{$N+} {8086-os numerikus tarsprocesszor bekapcsolasa}
program hazifeladat;
uses crt;
const
enter: char = #13;
esc : char = #27;
var
c: char;
k: array [1..60] of char;
a, b, s, error: integer;
kod10:double;
begin
clrscr;
writeln('Kerem a 6-os szamrendszerbeli szamot, max 60 karakter!');
a:=0;
repeat
repeat
c:=readkey;
until c in ['0'..'5',enter];
if c <> enter then
begin
write(c);
inc(a);
k[a] := c ;
end;
until (c = enter) or (a = 60);
writeln;
kod10:=0;
for b:= 1 to a do
begin
val(k,s,error);
kod10 := kod10 + s * (exp(ln(6)*(a-b)));
end;
writeln(kod10:0:0);
writeln;
writeln('Kilepes: ESC');
repeat
c := readkey;
until c = esc;
end.Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
-
Tangerine
senior tag
Ez így elméletben szép, de nekem nem jött össze. Pont ilyesmivel próbálkoztam tegnap.
A szorzás összeadás még működget, de ugyebár 6 hatványait kell a végeredményhez adni, ami kissé sokáig tartana szorzásokra bontani egy 60 jegyű számnál.
function fval(ss:string):integer;
var
er,hiba:integer;
begin
val(ss,er,hiba);
fval:=er;
end;
function fstr(ii:integer):string;
var
er:string;
begin
str(ii,er);
fstr:=er;
end;
function max(x,y:string):integer;
begin
if length(x) > length(y) then
max := length(x)
else
max := length(y);
end;
function osszead(x,y:string):string;
var
sossz:string;
hh,ii,aa,bb,ossz,mar:integer;
begin
sossz:='';
ossz := 0;
mar := 0;
hh := max(x,y) + 1;
while length(x) < hh do x:='0' + x;
while length(y) < hh do y:='0' + y;
for ii := hh downto 1 do
begin
ossz := fval(x[ii])+fval(y[ii])+mar;
mar := ossz div 10 ;
sossz:=fstr(ossz mod 10) + sossz;
end;
while sossz[1] = '0' do delete(sossz,1,1);
osszead := sossz;
end;
function szoroz(x,y:string):string;
var ii:integer;
er:string;
begin
er := '0';
if (x='0') or (y='0') then
szoroz := '0'
else
begin
for ii := 1 to fval(y) do
er := osszead(er,x);
end;
szoroz := er;
end;Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
6 hatványaiból elég csak az aktuálisat tárolni.
Na az embernek mindig a legkézenfekvőbb m.o. nem jut eszébe.
Asszem megcsináltam, csak még tesztelem.
555555555555555555555555555555555555555555555555555555555555 (6-osban) = 48873677980689257489322752273774603865660850175 (a 10-esben)Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
{$N+} {8086-os numerikus tarsprocesszor bekapcsolasa}
program hazifeladat;
uses crt;
const
enter: char = #13;
esc : char = #27;
var
c: char;
k: array[1..60] of char;
aa, bb, error: integer;
kod10, szorzo:string;
function fval(ss:string):integer;
var
er, hiba:integer;
begin
val(ss,er,hiba);
fval := er;
end;
function fstr(ii: integer):string;
var
er:string;
begin
str(ii,er);
fstr := er;
end;
function max(x, y: string):integer;
begin
if length(x) > length(y) then
max := length(x)
else
max := length(y);
end;
function osszead(x,y:string):string;
var
sossz:string;
ossz,resz,mar,ii,hh:integer;
begin
sossz:='';
ossz := 0;
resz := 0;
mar := 0;
hh := max(x,y) + 1;
while length(x) < hh do x:= '0' + x;
while length(y) < hh do y:= '0' + y;
for ii := hh downto 1 do
begin
ossz := fval(x[ii]) + fval(y[ii]) + mar;
mar := ossz div 10 ;
sossz:= fstr(ossz mod 10) + sossz;
end;
while (sossz[1] = '0') and (sossz <> '0') do delete(sossz,1,1);
osszead := sossz;
end;
function szoroz(x,y:string):string;
var
cc,er:string;
begin
er := '0';
cc := '0';
if (x='0') or (y='0') then
szoroz := '0'
else
repeat
cc := osszead(cc,'1');
er := osszead(er,x);
until cc = y;
szoroz := er;
end;
begin
clrscr;
writeln('Kerem a 6-os szamrendszerbeli szamot, max 60 karakter!');
aa := 0;
szorzo :='1';
repeat
repeat
c:=readkey;
until c in ['0'..'5',enter];
if c <> enter then
begin
write(c);
inc(aa);
k[aa] := c ;
end;
until (c = enter) or (aa = 60);
kod10 := '0';
for bb := aa downto 1 do
begin
kod10 := osszead(kod10 ,szoroz(szorzo,k[bb]));
szorzo := szoroz(szorzo,'6');
end;
writeln;
writeln(kod10);
writeln;
writeln('Kilepes: ESC');
repeat
c := readkey;
until c = esc;
end.Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
Új hozzászólás Aktív témák
- Renault, Dacia topik
- Luck Dragon: Asszociációs játék. :)
- Ukrajnai háború
- sziku69: Fűzzük össze a szavakat :)
- TCL LCD és LED TV-k
- Tényleg jobban fogyaszt a Peugeot, az Opel és a Citroen?
- Vicces képek
- Építő/felújító topik
- Kerékpárosok, bringások ide!
- Computex 2024: jóvágású Gigabyte alaplap Threadripperek alá
- További aktív témák...
- Samsung Galaxy S23 128gb - Makulátlan, akár beszámítással
- AKCIÓZVA! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/1TB FHD HUN
- AKCIÓZVA! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/512 FHD HUN
- Bontatlan Új BOSE QuietComfort Ultra Headphones, bézs-aranyLimitált kiadás
- ASUS TUF Gaming FX505DU Ryzen 7 3750H GTX 1660 Ti 6GB 16GB DDR4 512GB SSD + 1TB HDD 120Hz Full HD