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

Text -> pole : boolean – Pascal – Fórum – Programujte.comText -> pole : boolean – Pascal – Fórum – Programujte.com

 

Filda
~ Anonymní uživatel
2 příspěvky
3. 12. 2017   #1
-
0
-

Dobrý den, potřeboval bych poradit jak dostat hodnoty z textovýho souboru vypadajícího nějak takhle:

uddudud

duududd

uududdd

do 2D pole typu boolean, kdy pro u = true a f = false.
Zatím jsem vymyslel toto, nicméně správně to zapíše pouze první řádek pole, zbytek je s porovnání s text. souborem špatně.

var
i,j : integer;
s : char;
T : text;
const
  N = 7;
  M = 30;
var
spin : array [1..N,1..M] of boolean;
begin
  assign (T, 'C:');
  reset(T);
  i := 0;
  j := 0;
  while not eof(T) do
        begin
        j := j+1;
        read(T,s);
        write(s);
        if s = 'd' then spin[1,j] := false else spin[1,j] := true;
        end;

Nahlásit jako SPAM
IP: 2a02:8308:40c1:f00:5479:3...–
gna
~ Anonymní uživatel
1891 příspěvků
3. 12. 2017   #2
-
0
-

Protože nastavuješ jen první řádek. spin[ 1 ,j]

Nahlásit jako SPAM
IP: 213.211.51.–
Filda
~ Anonymní uživatel
2 příspěvky
4. 12. 2017   #3
-
0
-

#2 gna
jak bych to měl tedy prosím správně napsat?

Nahlásit jako SPAM
IP: 2a02:8308:40c1:f00:5479:3...–
peter
~ Anonymní uživatel
4016 příspěvků
4. 12. 2017   #4
-
0
-

Je tu nekolik nejasnosti, o kterych bych rad hodil rec.

uddudud
duududd
uududdd
'u = true a f = false'
!!! v ukazce je 'u' a 'd'

'zapíše pouze první řádek pole'
- read cte znak po znaku
- readln precte 1 radek
- pokud tvuj kod cte znak po znaku do EOF,
-- pak kazdy \n (hex: 0D0A, konec radku) bude vyhodnocen jako false, false
-- radkovani se tudiz bude ignorovat
-- j := j+1; read(T,s); if s = 'd' then spin[1,j] := false else spin[1,j] := true;
---- vse zapisujes do radku 1: spin[1,...

Takze bych soubor nacital pres readln a pak tu promennou prochazel znak po znaku. A nebo bych pouzil, co mas a kontroloval navic znaky pro 0D 0A. Nevim, jak se to ted v paskalu zapisuje, ale bezne jako znak="\n" nebo znak==0x0D or znak==0x0A.

Nahlásit jako SPAM
IP: 2001:718:2601:258:ccdd:32...–
peter
~ Anonymní uživatel
4016 příspěvků
4. 12. 2017   #5
-
0
-

#4 peter
 Oprava, znak bude vyhodnocen jako true, cili <>'d'

Nahlásit jako SPAM
IP: 2001:718:2601:258:ccdd:32...–
MilanL+1
Grafoman
4. 12. 2017   #6
-
0
-

#5 peter
jsem to měl rozepsaný podobně, zapoměl jsem svůj příspěvek odeslat kolem 11:30h.

#1 Filda
také bych řekl že vzhledem k tomu že to načítá binárně mu tam chybí ošetření znaků konce řádku,

osobně bych použil čtení po řádkách readln

s : string;

I:=1;

while not eof(T) do
begin
        readln(T,s);
        for j := 1 to length(s)
               if s[j] = 'd' 
                      then spin[i,j] := false
                      else spin[i,j] := true;
        write(s);  'wirteln(s);
        inc(i);

end;

Nahlásit jako SPAM
IP: 91.139.9.–
peter
~ Anonymní uživatel
4016 příspěvků
4. 12. 2017   #7
-
0
-

#6 MilanL
 Njn, jsem zkratka rychlejsi :) Ale zas uz neznam presne ten kod. Kazdopadne, bylo by fajn, neindexujici promenne pojmenovat aspon 3 pismeny, jako treba misto 's' pouzit 'str', 'T' 'TXT' nebo zrovna 'soubor'.

Nahlásit jako SPAM
IP: 2001:718:2601:258:ccdd:32...–
peter
~ Anonymní uživatel
4016 příspěvků
4. 12. 2017   #8
-
0
-

'wirteln -> writeln
Jo, a pokud by slo o mapu, ctvercovou, treba, tak by bylo fajn doplnit prazdne polozky.

Nahlásit jako SPAM
IP: 2001:718:2601:258:ccdd:32...–
Mircosoft+1
Věrný člen
13. 12. 2017   #9
-
0
-

Nevím, jestli tenhle řádek:

assign (T, 'C:');

tak vypadal už původně, nebo ho jenom server špatně zobrazil kvůli zpětnému lomítku. V každém případě musí obsahovat celé jméno souboru, který chceme otevřít, ne jenom písmeno disku:

assign (T, 'C:\adresar\soubor.txt');

případně bez té absolutní cesty, aby program fungoval kdykoli, když má ten soubor ve stejném adresáři:

assign (T, 'soubor.txt');

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

Podobná vlákna

Metoda boolean — založil lekejs

Ping to Boolean — založil palo.jaros

Cannot find symbol Boolean — založil Flowy

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ý