Cześć. Zaczynam teraz pracę z obsługą plików tekstowych. Chcę zrobić program, który pobierze z pliku liczby (dwie) i wykona 4 podstawowe działania matematyczne. Mój problem polega na tym, że nie wiem, jak zidentyfikować liczbę z pierwszego wersa i z drugiego wersa.
program wczytaj;
uses crt;
var
f:text;
s:longint;
i:integer;
begin
clrscr;
ASSIGN(f, 'C:\Users\Administrator\Desktop\Moje programy z Pascala\abtekst.txt');
reset(f);
i:=1;
while not eof(f) do begin
readln(f,s);
writeln('Zawarto† pliku to ',s);
writeln('Suma ',s,' i ',s,' wynosi ',(s+s));
i:=i+1;
end;
close(f);
readln;
end.
Przy tym kodzie wyświetla się tak: “Zawartość pliku to {i tu jest pierwsza liczba}. Suma {pierwszej liczby i pierwszej liczby} wynosi {liczba}”.
Z każdej linii wczytujesz jedna liczbę i obliczasz jej podwojoną wartość.
Liczba linii powiększona o 1 jest Ci do czegoś potrzebna? (zmienna i)
Ps. Starałbyś się wcinać blok podrzędny względem nadrzędnego. Tutaj wciąłeś tylko główny blok programu a blok pętli jest na tym samym poziomie. W bardziej skomplikowanych przypadkach pisanie wszystkiego na tym samym poziomie znacznie utrudnia czytanie kodu.
A jak nie podasz mu żadnego pliku to domyślnie czyta ze standardowego wejścia (najczęściej konsoli). Jeśli nie podasz mu żadnych zmiennych, do których ma zapisać wczytane dane to do żadnych zmiennych nie zostaną zapisane
Gdybyś potrzebował ich wszystkich naraz to tak (najlepiej w tablicy). Jednak nie spotkałem się jeszcze z takim zadaniem maturalnym z dużą ilością danych, gdzie wszystkie dane do operacji byłyby potrzebne w tej samej chwili.
Bo na maturze było 1000 liczb naturalnych(oczywiście, nie 100000), trzeba było zrobić program podający, ile liczb parzystych występuje w pliku. Jaki by był twój pomysł?
W tym przypadku nie potrzeba tych wszystkich liczb na raz. Możesz wczytywać po jednej, sprawdzać czy jest parzysta i jeśli tak to zwiększać licznik parzystych.
Natomiast w przypadku dodawania potrzeba co najmniej dwóch składników.
uses crt;
var
ile_parzystych, liczba : longint;
plik : text;
begin
assign(plik, 'plik.txt');
reset(plik);
ile_parzystych := 0;
while not eof(plik) do
begin
readln(plik, liczba);
if (liczba mod 2) = 0 then
ile_parzystych := ile_parzystych + 1;
end;
close(plik);
writeln('Parzystych liczb jest: ', ile_parzystych);
end.