zidolek 1 Napisano 15 Grudnia 2013 Udostępnij Napisano 15 Grudnia 2013 Witam. Problem jest następujący: Mam 2 pliki: A i B. A-plik z danymi, B-plik, w którym mają się znaleźć przerobione dane. plik A wygląda tak: [2] jakaś liczba jakaś liczba jakaś liczba [8] jakaś liczba jakaś liczba ilość "jakichś liczb" może być dowolna. Program musi po otworzeniu pliku A i napotkaniu znaku "[" a następnie "2" wiedzieć, że ma do czynienia z konkretnymi liczbami, więc przechodzi do następnej linii pliku, przerabia napotkaną liczbę i zapisuje od razu taką przerobioną liczbę do pliku B. Wykonuje tę operację, dopóki nie napotka znaku "[" a następnie "8", co oznacza, że znajdują się tam już inne liczby, które przerabia w inny sposób. Nie wiem jaką zrobić pętlę, by mi przerobiło wszystkie liczby poniżej linii [2] do linii [8]. Ten kod wykonuje się prawie ok, tylko przez polecenie "eof" dochodzi do samego końca pliku, a ma dochodzić do [8] i kończyć. "hehe" użyłem jako proste "przerobienie" liczby. program ytestt; uses crt; var podczyt,pzapis:text; tresc,linia:string; i:integer; begin assign(podczyt, 'a.txt'); assign(pzapis, 'b.txt'); reset(podczyt); readln(podczyt,tresc); rewrite(pzapis); i:=0; for i:=1 to length(tresc) do if (tresc[i]='[') and (tresc[i+1]='2') then begin append(pzapis); writeln(pzapis,'przerobione:'); repeat readln(podczyt,linia); writeln(linia); linia:='hehe'; writeln(pzapis,linia); writeln('petla ', i); until eof(podczyt); end; close(podczyt); close(pzapis); readln; end. Cytuj Link to post Share on other sites
mw1975 230 Napisano 15 Grudnia 2013 Udostępnij Napisano 15 Grudnia 2013 (edytowane) Dawno nie używałem Pascala. Ale spróbuj tak: program ytestt;uses crt;var podczyt,pzapis:text;linia:string; po_2,po_8:Boolean;begin assign(podczyt, 'a.txt'); assign(pzapis, 'b.txt'); reset(podczyt); rewrite(pzapis); po_2=FALSE; po_8=FALSE; while not eof(podczyt) do { readln(podczyt,tresc); if (pos(tresc,'[2]')<0) po_2=TRUE; if po_2 and not po_8 writeln(pzapis,tresc); if (pos(tresc,'[8]')<0) po_8=TRUE; }close(podczyt);close(pzapis);readln;end. Edytowane 15 Grudnia 2013 przez mw1975 Cytuj Link to post Share on other sites
zidolek 1 Napisano 15 Grudnia 2013 Autor Udostępnij Napisano 15 Grudnia 2013 Niby działa, ale to dalej nie to. Inne pytanie. Czy można po wywołaniu funkcji przenieść jej wynik do innej funkcji (zapisującej ten wynik do pliku)? Bardziej ogólnie, to czy wynik jednej funkcji można użyć w innej? Cytuj Link to post Share on other sites
Mistic92 68 Napisano 16 Grudnia 2013 Udostępnij Napisano 16 Grudnia 2013 A co jest tym wynikiem? Zapisz go do zmiennej po prostu. Chociaż nie pamiętam jak tam było w pascalu ze zmiennymi Cytuj Link to post Share on other sites
mw1975 230 Napisano 16 Grudnia 2013 Udostępnij Napisano 16 Grudnia 2013 Po pierwsze, nie napisałeś, JAK program ma te liczby pomiędzy [2] a [8] przerabiać. Po drugie, nawet nie próbowałeś uruchomić mojego programu. Są w nim co najmniej 2 błędy składni (zauważyłem to dopiero po wpisaneiu na stronę). Cytuj Link to post Share on other sites
Recommended Posts
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.