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

Subor – Pascal – Fórum – Programujte.comSubor – Pascal – Fórum – Programujte.com

 

rl
~ Anonymní uživatel
3 příspěvky
18. 5. 2009   #1
-
0
-

Zdravim,

mam txt-subor, kde mam v 1 riadku nasledujuce udaje: priezvisko, meno a sumu (t.j. cislo).
V programe to ma by tak, ze zadam priezvisko a ono v subore vyhlada mnou zadane priezvisko a k nemu zobrazi i prislusnu sumu. Ako mam riadok v subore rozdelit na tri casti prizvisko, meno a suma? Dakujem za pomoc.

Nahlásit jako SPAM
IP: 88.212.6.–
Krychlik
~ Anonymní uživatel
195 příspěvků
18. 5. 2009   #2
-
0
-

kazdy radek je string a v tom musis:
-najit prijmeni, pokud tam neni jdes na dalsi
-najit delici znak mezi jmenem a cislem, zapamatovat si misto a od toho to ustrihnout/zkopirovat
-zkopirovane vypsat/ulozit/cokoli

staci ti na to tyto funkce a procedury, vice na http://www.templetons.com/brad/alice/language/language8.html
Length(str)
This function returns the length of the string argument in characters. For a string constant, this is the number of characters in the constant. For a string variable, it is the number of characters currently stored in the variable.

function Pos(Substr: String; S: String): Byte; najde jestli se v stringu nachazi jiny string a vrati misto, pokud tam neni tak vrati 0.

SubStr(str1,N,position,str2);
This procedure obtains a copy of part of str1. N is the length of the substring and position is the subscript where the substring starts. The substring that is obtained is copied into str2.

Copy(str, pos, num)
This function returns a substring of the string variable str of length num starting at position pos. It returns the null string (i.e. a string of length zero) if pos is greater than the length of the string.

substr je to same jako copy, jenom je to procedura a copy funkce, pouzij podle nalady.

Nahlásit jako SPAM
IP: 212.111.4.–
Mircosoft+1
Věrný člen
18. 5. 2009   #3
-
0
-

Jeste doplnim, ze s retezcem (datovym typem String) se da pracovat jako s polem znaku (array[1..length(retezec)] of char), tj. prochazet pomoci cyklu, prohlizet si ho pismenko po pismenku a hledat mezery, carky atd.
A z textoveho souboru se da nacitat prikazem Readln.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
19. 5. 2009   #4
-
0
-

To Krychlik :

Dakujem za navod. Avsak funkcia "pos" mi akosi nefunguje:

Zacal som robit len to odtrhnutie casti retazca:
procedure jeden;
var f:text;
riadok:string;
i:integer;
begin
assign(f,'h:\LZ\ziaci.txt');
reset(f);
read(f,riadok);
if riadok=' ' then i:=Pos(' ',riadok);
writeln(i);
end;

Vypise cislo -29948, co je hlupost, lebo v prvom riadku sa v txt subore medzera nachadza na 8. mieste

Nahlásit jako SPAM
IP: 88.212.6.–
joudicek0
Návštěvník
19. 5. 2009   #5
-
0
-

To Krychlik : Jen se zeptam, pascal uz pomalu zapominam, ale pokud budu predpokladat format souboru prijmeni jmeno cislo, kde prijmeni a jmeno jsou retezce bez mezer, tak by mozna bylo jednodussi nacist to proste najednou ne?



const FileName = '.\\zaci.txt';

type TOsoba = record
prijmeni:string;
jmeno:string;
suma:integer;
end;

var f:Text;
zak:TOsoba;

begin
assign(f,FileName);
reset(f);

Readln(f, zak.prijmeni, zak.jmeno, zak.suma); {neco takoveho by mohlo myslim fungovat ne?}
close(f);
end;



To anonym: Takhle ti asi neporadim, zkus si vypsat i promennou riadok, tipuju ze tam bude pouze prijmeni bez mezery....Pokud tomu tak bude, tak zkus pouzit ten kod co jsem napsal.... Takhle tezko rict....

Nahlásit jako SPAM
IP: 212.20.106.–
Krychlik
~ Anonymní uživatel
195 příspěvků
19. 5. 2009   #6
-
0
-

To Anonymní uživatel : dej i jako byte protoze pos vrati byte.
a if riadok=' ' je blbost, ptas se jestli ten cely radek je mezera a on neni nikdy.
Musis se zaptat jestli misto kde obsahuje ' ' je ruzne od nuly a pak podle toho jednat.

To joudicek : nejspis to pujde, ale ted se ucim na maturitu a neni cas doma instalovat nejakej packal editor na overeni.

Nahlásit jako SPAM
IP: 212.111.4.–
Grungy0
Super člen
19. 5. 2009   #7
-
0
-

To joudicek : Určite to nepôjde lebo do stringu zak.prijmeni sa načíta 255 znakov čiže celý riadok aj s menom a sumou. Myslím že si predpokladal že sa to načíta len po medzeru ale nie je tomu tak. Musíš tam načítať celý riadok znakov a ten si potom rozdeliť podla toho ako potrebuješ.

Nahlásit jako SPAM
IP: 158.193.98.–
Prvý náznak hlúposti, je pocit geniality.
joudicek0
Návštěvník
19. 5. 2009   #8
-
0
-

To Grungy : Jo je to tak, nedalo mi to, tak jsem to zkusil.... zlaty cecko :d

Nahlásit jako SPAM
IP: 212.20.106.–
rl
~ Anonymní uživatel
3 příspěvky
19. 5. 2009   #9
-
0
-

Uz mi funguje ta funkcia Pos. Spravne mi vypisuje pri 1. riadku cislo 8.
Teraz vsak chcem pouzit toto: SubStr(str1,N,position,str2);
vypisuje Unknown indentifier. Dokonca som skusal aj Turbo Pascal

Mam to zatial takto:



procedure jeden;
var f:text;
riadok,meno:string;
i:integer;
begin
assign(f,'h:\LZ\ziaci.txt');
reset(f);
readln(f,riadok);
i:=Pos(' ',riadok);
Substr(riadok,0,i,meno);
writeln(meno);
close(f);
end;

Nahlásit jako SPAM
IP: 88.212.6.–
raddino0
Návštěvník
19. 5. 2009   #10
-
0
-

nejsem si jistej ale nemělo by být v tomto řádku:

Substr(riadok,0,i,meno);

ta 0 v apostrofech?
takže:
Substr(riadok,'0',i,meno);

je to jenom odhad zkus to..

Nahlásit jako SPAM
IP: 85.207.184.–
rl
~ Anonymní uživatel
3 příspěvky
20. 5. 2009   #11
-
0
-

Nie takto to nefunguje. Pise totiz "Unknown identifier", pascal si mysli, ze to je premenna. Vyzera to, ako ked chces pouzit clrscr; a nemas na zaciatku napisane uses crt; (ja to na zaciatku mam).

Nahlásit jako SPAM
IP: 88.212.6.–
Mircosoft+1
Věrný člen
20. 5. 2009   #12
-
0
-

Mam dojem, ze v Pascalu nic, co by se jmenovalo Substr, neexistuje. Podivej se, kde pri te chybe skoncil kurzor - jestli na Substr, tak mam pravdu a proste misto toho pouzij Copy.

To raddino : Ne, cisla se v apostrofech urcite nepisou. To by pak nebylo cislo, ale retezec obsahujici cislice.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
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, 26 hostů

Podobná vlákna

Subor — založil jordi1811

Subor na email — založil AnonImouS

Nový súbor scripty — založil Gajdošík Tomáš

Vlastny hlavickovy subor — založil Zajcev

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ý