Mensi problem s nacitanim promenne typu STRING – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Mensi problem s nacitanim promenne typu STRING – Pascal – Fórum – Programujte.comMensi problem s nacitanim promenne typu STRING – Pascal – Fórum – Programujte.com

 

Buckyx
~ Anonymní uživatel
11 příspěvků
23. 11. 2010   #1
-
0
-

zdravim mam mensi problem
program uz je ale musim nacitat 2x string v jednom radku z klavesnice
pokud nacitam obe promenne zvlast tak program funguje ale mam pocit ze kdyz najednou tak ne



var m,j,i,n:byte;
kod,pom:string;
a,b:array[byte] of string;

begin
readln(m);

for j:=1 to m do readln(a[j],b[j]); - tady je ten problem

readln(n);
readln(kod);

for i:=1 to n do begin
pom:=pom+kod[i];

for j:=1 to m do if pom=b[j] then begin
write(a[j],' ');

pom:='';
end;
end;

writeln;
readln;
end.

Nahlásit jako SPAM
IP: 178.40.31.–
KIIV
~ Moderátor
+43
God of flame
23. 11. 2010   #2
-
0
-

readln do retezce nacita cely radek.. tj. tezko pozna kde to rozdelit aby mohl nacist i do druheho retezce..
nicmene o to se muzes postarat uz sam.. najit delici znak a rozdelit jak potrebujes

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mircosoft+1
Věrný člen
24. 11. 2010   #3
-
0
-

-> Buckyx : Ten příkaz načte do a[j] prvních max. 255 znaků řádku a do b[j] druhých max. 255. Jestli je řádek kratší než 255 znaků, bude celý v a[j] a b[j] bude prázdné. To není problém, tak to prostě funguje :-).

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Jeyekomon0
Stálý člen
25. 11. 2010   #4
-
0
-

To Mircosoft :
Zajímavé, to jsem taky nevěděl. :)
Takže pokud by věděl, že na vstupu dostane string pevné délky např. 20 znaků, přičemž každou polovinu má uložit do jiné proměnné, pak by vlastně stačilo jen omezit typ proměnné:



a,b:array[byte] of string[10];

(Přičemž se mi tam osobně nelíbí to použití toho "byte", ale to je vedlejší)

A možná by ještě při načítání místo "readln" měl být read, ale to je už jen můj neotestovaný subjektivní pocit.. :)

Nahlásit jako SPAM
IP: 78.128.199.–
jjk
Mircosoft+1
Věrný člen
29. 11. 2010   #5
-
0
-

Jo, dělení omezením délky stringu je dobrý nápad.

Ten byte v závorce říká, že to pole má mít tolik prvků, kolik je rozsah typu byte. Technicky je to v pořádku, ale taky bych to napsal jinak :-).


Read nebo Readln? Věčné dilema :-). Radši sem hodím kompletní souhrn toho, co která dělá, s ohledem na načítaný typ:

Read(string) - čti ze souboru a ukládej do proměnné v parametru jednotlivé znaky tak dlouho, dokud nenarazíš na konec řádku, konec souboru nebo konec proměnné, do které načítáš.
Čili: čtení se zarazí o konec řádku (Eoln(soubor) bude true) a bude tam čekat a vracet prázdné řetězce tak dlouho, dokud se nepoužije Readln.

Readln(string) - jako Read(string) a potom přeskočí zbytek aktuálního řádku (je-li nějaký) a skočí na začátek dalšího.
Čili: jakmile zavolám Readln, přijdu z aktuálního řádku o všechno, co se nevešlo do proměnné v parametru.

Read(číslo) - čti a přeskakuj všechny mezery a konce řádků, dokud nenarazíš na jiný znak; čti znaky až do nejbližší mezery nebo konce řádku; načtenou sekvenci zkus převést na číslo; jestli OK, ulož ji do proměnné v parametru, jinak hoď I/O chybu "Invalid numeric format".
Čili: tímhle můžu načíst třeba celý soubor, ale musí v něm být čistě jenom čísla a nic jiného.

Readln(číslo) - začátek stejný jako u Read(číslo) a nakonec přeskoč celý zbytek řádku, na kterém to číslo bylo, a nastav se na začátek dalšího.
Čili: tímhle můžeme přečíst jenom první číslo na každém řádku, ale jestli za tím číslem na řádku budou nějaká nečíselná data, program mi nespadne.

Na konci souboru (když Eof(soubor)=true) vrací stringové Read a Readln prázdný řetězec, číselné nulu (bez I/O chyb).

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, 3 hosté

Podobná vlákna

Problém s převodem typu proměnné — založil Jan Růžička

Pole typu string? — založil Petr

Problem s načítáním znaku — založil ccccdddd

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ý