Dobrý deň,,,zajtra mám robiť test z pascalu,,,,Mám ma´t načítanie z textového súboru, no sám som bol dlho chorý 3týždne zápal priedušiek a dýchacích ciest....Je tu možné, že by mi tu niekto pomohol zajtra ráno od pol ôsmej do cca deviatej a pomohol by mi s kódením ? Naozaj, som zúfalý,,,,Sedím nadtým už 3. deň ale prd z toho,,,Maturujem a musím sa teraz sústrediť na matematiku a jazyky....Ďakujem
Fórum › Pascal
Reálna núdza :/
#2 ezlife
No,,,,takéto niečo,,,Ja nechápem napríklad :
- prečo je tam "pocet :=0"
- tomuto : "tovar[pocet]:=tovar[pocet]+znak"
- tomuto už vôbec : writeln(tovar[i]:10,kus[i]:5,cena[i]:8:2
program project1;
uses crt;
var f,g:text;
tovar:array[1..100] of string;
kus:array[1..100] of integer;
cena:array[1..100] of real;
pocet:integer;
procedure nacitanie;
var znak:char;
begin
pocet:=0;
while not eof(f) do
begin
inc(pocet);
read(f,znak);
while znak<>#32 do
begin
tovar[pocet]:=tovar[pocet]+znak;
read(f,znak);
end;
read(f,kus[pocet]);
readln(f,cena[pocet]);
end;
end;
procedure vypis;
var i:integer;
begin
for i:=1 to pocet do
writeln(tovar[i]:10,kus[i]:5,cena[i]:8:2);
end;
procedure zapis;
var i:integer;
begin
for i:=1 to pocet do
writeln(g,tovar[i]:10,kus[i]:5,cena[i]:8:2);
end;
begin
assign(f,'cenatovaru.txt');
reset(f);
assign(g,'vypis.txt');
rewrite(g);
nacitanie;
vypis;
zapis;
close(f);
close(g);
readln;
end.
Ďakujem za pomoc a odpoved :)
#3 Michal
1. prečo je tam pocet :=0;
a tomuto: inc(pocet); rozumíš? Když zavoláš podprogram nacitanie, tak se na zásobníku (což je vyhrazená část paměti pro dočasné operace) zabere místo pro proměnnou pocet. Ty pak příkazem inc(pocet); zvýšíš obsah této proměnné o jedna. Jenže to samé místo mohlo předtím být úplně jiná proměnná, takže v něm zůstala uložená nějaká předchozí hodnota třeba 12839. No a k čemu teda tu jedničku přičte to inc(pocet); Aha? Kdybys neměl před prvním přičítáním nastaveno pocet :=0, tak se první načtený údaj pokusíš uložit jako 12840-tý, na což ani nemáš zabrané místo.
2. tomuto : "tovar[pocet]:=tovar[pocet]+znak"
do řetězce tovar na pozici pocet přičti další načtený znak...
takže zatím jsi ze souboru přečetl a uložil znaky BOI. Další načtený znak je L, který tím příkazem přidáš k předchozím, takže už tam bude BOIL. Pokud ovšem na začátku nenastavíš tovar[pocet]=''; tak tam někdy můžeš přičítat k pěkným nesmyslům zbylým z předchozího využití paměti...
3. tomuto už vôbec : writeln(tovar[i]:10,kus[i]:5,cena[i]:8:2);
jde o formátování výstupu, aby měl charakter tabulky. Místo
pec 4 300.50
boiler 2 4938.0
bude zobrazeno:
pec 4 300.50
boiler 2 4938.00
Myslím,
že JoDiK to dostatečně vysvětlil. Jen mi přijde, že spíš nerozumíš základům jazyka.
Zkus si pročíst nějaký tutoriály, případně knížky..
např.
P. Töpfer: Algoritmy a programovací techniky
P. Satrapa: Pascal pro zelenáče
P. Töpfer, D. Töpferová: Programování - Sbírka úloh
Online:
http://geraldine.fjfi.cvut.cz/~pausp/cs/pascal
http://www.tutorialspoint.com/pascal/
Dobrý deň,
ano je to tak, nepopieram, bude to tým, že neviem základy jazyka,,,ale ja by som potreboval pomôcť teraz ráno s príkladmi :/ Do mája sa to budem musieť ajtak doučiť,,,ale teraz mám o 2 týždne maturity a nemôžem sa sústrediť na programovanie, ktoré mám až v máji. :/
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
Moderátoři diskuze