Ahoj,
zítra píšeme v Pascalu písemku a já tomu vůbec nerozumím. Učitel nám dal pár úkolů, které by se tam mohly objevit, ale já jsem na tohle úplný antitalent a v životě se to snad nenaučím :( Zatím tam mám 2 pětky a je to jediný předmět, ze kterého nemám jedničku nebo dvojku... Nechci propadnout, proto prosím o rady. Můžete to brát jako procvičení a uděláte dobrý skutek. Předem děkuji moc za pomoc :) Dolů vám napíši zadání příkladů:
1. Přečte ze souboru jména a vypíše je na monitor.
2. Udělá kopii 1. souboru (z 1. čte a do 2. zapisuje)
3. Udělá ze 2 vstupních souborů jeden výstupní.
4. Ze vstupního souboru napíše od výstupního pouze jména, jejichž délka je menší nebo rovna 4 znakům.
5. bonusový za jedničku: Je vstupní soubor se jmény setříděn podle abecedy od "a", z klávesnice zadám nové jméno a vytvořím výstupní s novým jménem na správném místě podle abecedy.
Díky za rady...byla bych moooc vděčná :)
Fórum › Pascal
Zajímavé příklady do školy (vstupní a výstupní soubory)
To JoDiK : Já se to jinak než nazpaměť naučit nemohu :( V hodinách dávám pozor, ale nejsem jediná, co to nechápe. Učitel to neumí vysvětlit. Jenom píše kód a my opisujeme a pak nám řekne, že píšeme písemku... O písemce jsme se dozvěděli dneska. No tak jsem to aspoň zkusila...asi nakonec teda propadnu. :(
To Lada :
Divnej učitel...
1.
program VypisJmen;
var
t : text; {Proměnná typu textový soubor}
s : string; {Řádek pro čtení ze souboru}
begin
assign(t,'jmena.txt'); {Přiřazení jména souboru - pokud není ve stejné složce, tak napsat úplnou specifikaci}
reset(t); {Otevření souboru pro čtení}
while not eof(t) do {Dokud není konec souboru}
begin
readln(t,s); {Čti řádek ze souboru}
writeln(s); {Vypiš ho na obrazovku}
end;
close(t); {Uzavření souboru}
end.
To Lada : programovani ma jednu mensi nevyhodu - musi se pochopit... nadrtit se to nemas sanci
musis pochopit hlavne o co jde - dat pocitaci presne instrukce tak, aby udelal co chces ..
tj. otevri tendle soubor pro cteni.. (budu k nemu pristupovat pomoci promenne F a ocekavam ze F bude textovy soubor... - v sekci var musis predem presne rict kde se co pamatuje - pocitac si nepamatuje nic, co mu nereknes)
nacti radek z F do promenne retezec (typu string?)
vypis to, co je v promenne retezec na obrazovku
opakuj nacteni radku z F a nasledujici kroky dokud je co nacitat ze souboru
...
EDIT: presne toto ti poslal jodik :D
2. Zadání je neurčité, budu předpokládat, že se bavíme o textovém souboru.
program KopieSouboru;
var
t1,t2 : text; {Proměnné typu textový soubor}
s : string; {Řádek pro čtení ze souboru}
begin
assign(t1,'vstup.txt'); {Přiřazení jména souboru}
reset(t1); {Otevření souboru pro čtení}
assign(t2,'kopie.txt'); {Přiřazení jména souboru}
rewrite(t2); {Vytvoření a otevření souboru pro zápis}
while not eof(t1) do {Dokud není konec vstupního souboru}
begin
readln(t1,s); {Čti řádek ze souboru}
writeln(t2,s); {Zapiš řádek do výstupního souboru}
end;
close(t1); {Uzavření vstupního souboru}
close(t2); {Uzavření výstupního souboru}
writeln('Soubor byl zkoprován'); {Výpis informace pro uživatele na obrazovku}
end.
dvojka je naprosto to same.. akorat si musis taky otevrit dalsi soubor pro zapis a to co nactes, zapsat misto na obrazovku do nej
(a samozrejme pokud pouzijes textove soubory, musis pocitat s tim, ze s tim napriklad mp3 nezkopirujes)
pokud budes chtit binarni soubory tak binarni soubor .. napriklad Fin,Fout : file of byte; znak : byte;
a pak nacitat po tech bytech a zapisovat taktez.. (je to pomaly, ale zase jednodussi, nez kdybys mela hledat jak se zachazi s celym blokem bajtu)
trojka je vesmes o otevreni jednoho pro cteni (nebo dvou, pokud nechces setrit promennejma) a jednoho pro zapis... po prekopirovani prvniho se misto nej otevre druhej a soubor pro zapis se samozrejme nezavira - pokracuje se s dalsim kopirovanim (a tim se pripoji druhy soubor na konec toho prvniho - do jineho souboru)
3. tohle je už hodně neurčité, výstupní soubor má být vytvořen tak, že je v něm nejdřív první soubor a pak druhý?
program KopieSouboru;
var
t1,t2 : text; {Proměnné typu textový soubor}
s : string; {Řádek pro čtení ze souboru}
begin
assign(t1,'vstup1.txt'); {Přiřazení jména souboru}
reset(t1); {Otevření souboru pro čtení}
assign(t2,'vystup.txt'); {Přiřazení jména souboru}
rewrite(t2); {Vytvoření a otevření souboru pro zápis}
while not eof(t1) do {Dokud není konec vstupního souboru}
begin
readln(t1,s); {Čti řádek ze souboru}
writeln(t2,s); {Zapiš řádek do výstupního souboru}
end;
close(t1); {Uzavření vstupního souboru}
assign(t1,'vstup2.txt'); {Přiřazení jména souboru}
reset(t1); {Otevření souboru pro čtení}
while not eof(t1) do {Dokud není konec vstupního souboru}
begin
readln(t1,s); {Čti řádek ze souboru}
writeln(t2,s); {Zapiš řádek do výstupního souboru}
end;
close(t1); {Uzavření vstupního souboru}
close(t2); {Uzavření výstupního souboru}
writeln('Soubory byly spojeny'); {Výpis informace pro uživatele na obrazovku}
end.
Koukám, že píšu co KIVV radí :-)
Kecám, jenom kopíruju hotovej příklad a upravuju názvy...
U čtyřky jen přidáš k dvojce jeden řádek, rači to zkopíruju celý a přidám:
program KopieSouboru;
var
t1,t2 : text; {Proměnné typu textový soubor}
s : string; {Řádek pro čtení ze souboru}
begin
assign(t1,'vstup.txt'); {Přiřazení jména souboru}
reset(t1); {Otevření souboru pro čtení}
assign(t2,'kopie.txt'); {Přiřazení jména souboru}
rewrite(t2); {Vytvoření a otevření souboru pro zápis}
while not eof(t1) do {Dokud není konec vstupního souboru}
begin
readln(t1,s); {Čti řádek ze souboru}
if length(s)<=4 then {jestli je délka řádku menší než 4 včetně, tak ...}
writeln(t2,s); {Zapiš řádek do výstupního souboru}
end;
close(t1); {Uzavření vstupního souboru}
close(t2); {Uzavření výstupního souboru}
writeln('Soubor byl zkoprován'); {Výpis informace pro uživatele na obrazovku}
end.
Pětka je už jen drobná modifikace:
program KopieSouboru;
var
t1,t2 : text; {Proměnné typu textový soubor}
s : string; {Řádek pro čtení ze souboru}
jmeno : string; {proměnná pro zadané jméno}
begin
write('Zadej jméno : ');
readln(jmeno);
assign(t1,'vstup.txt'); {Přiřazení jména souboru}
reset(t1); {Otevření souboru pro čtení}
assign(t2,'kopie.txt'); {Přiřazení jména souboru}
rewrite(t2); {Vytvoření a otevření souboru pro zápis}
while not eof(t1) do {Dokud není konec vstupního souboru}
begin
readln(t1,s); {Čti řádek ze souboru}
if jmeno<s then {Jestliže zadané jméno je podle abecedy menší než jméno ze souboru, tak...}
writeln(t2,jmeno); {zapiš zadané jméno do výstupního souboru}
writeln(t2,s); {Zapiš řádek do výstupního souboru}
end;
close(t1); {Uzavření vstupního souboru}
close(t2); {Uzavření výstupního souboru}
writeln('Soubor byl zkopírován a nové jméno do něj přidáno'); {Výpis informace pro uživatele na obrazovku}
end.
To JoDiK :
Ajaj, asi bych jedničku nedostal, to jméno bude vloženo hodněkrát, takže ještě hlídat, jestli už bylo zapsáno...
Takže oprava:
program KopieSouboru;
var
t1,t2 : text; {Proměnné typu textový soubor}
s : string; {Řádek pro čtení ze souboru}
jmeno : string; {proměnná pro zadané jméno}
jmenoNezapsano : boolean; {logická proměnná pro nové jméno}
begin
write('Zadej jméno : ');
readln(jmeno);
jmenoNezapsano:=true; {nové jméno ještě nebylo zapsáno}
assign(t1,'vstup.txt'); {Přiřazení jména souboru}
reset(t1); {Otevření souboru pro čtení}
assign(t2,'kopie.txt'); {Přiřazení jména souboru}
rewrite(t2); {Vytvoření a otevření souboru pro zápis}
while not eof(t1) do {Dokud není konec vstupního souboru}
begin
readln(t1,s); {Čti řádek ze souboru}
if (jmeno<s) and jmenoNezapsano then {Jestliže zadané jméno je podle abecedy menší než jméno ze souboru a ještě nebylo zapsáno, tak...}
begin
writeln(t2,jmeno); {zapiš zadané jméno do výstupního souboru}
jmenoNezapsano:=false; {nové jméno už bylo zapsáno}
end;
writeln(t2,s); {Zapiš řádek do výstupního souboru}
end;
close(t1); {Uzavření vstupního souboru}
close(t2); {Uzavření výstupního souboru}
writeln('Soubor byl zkopírován a nové jméno do něj přidáno'); {Výpis informace pro uživatele na obrazovku}
end.
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
Podobná vlákna
Jak provázat soubory, když chci využít třídu A pro objekt B a každá… — založil PazziCZ
Spustitelný výstupní soubor — založil RoboHK
Pointer - výstupní parametr — založil radek-46
Atmega16 - malý výstupní proud — založil lobo
Zajímavé stránky o 3D — založil Frank
Moderátoři diskuze