wczytywanie z pliku, szukanie znaku

0

Witam. Wczytuje dane z pliku txt, zawartość pliku to:
546465465*4646546454644834789471239847

Procedura wyświetlająca na ekranie zawartość pliku:

var
plik : Text;          // zmienna pliku
wiersz : String;


procedure zczytaj;
begin

Assign (Plik, 'test.txt');
Reset (plik);

while not eof (plik) do      // Powtarzaj pętle do konca pliku
begin

readln (plik, Wiersz);

writeln (Wiersz);
end;
end; 

Chciałbym zrobić, aby program znalazł w pliku znak mnożenia * i przemnożył pierwszą liczbę (całą) przez pierwszą liczbę drugiej liczby...
Czy to będzie z funkcją IF w procedurze którą już posiadam, czy raczej potrzeba nowej procedury?

Pozdrawiam.

0

Czy to będzie z funkcją IF w procedurze którą już posiadam, czy raczej potrzeba nowej procedury?

IF nie jest procedurą, jest elementem języka.
Wszystko można napisać w jednej procedurze, wszystko możesz podzielić jak chcesz. Ja bym to napisał w jednej procedurze, no chyba że ma to wspierać wiele znaków wtedy bym podzielił na procedurkę (albo użył istniejącej). Ciekawi mnie jeszcze czy te liczby mieszczą się w int64 czy mogą być większe (bo dałeś jakieś dziwne liczby).

Co do twojej procedury, to zmienną plik i wiersz masz zadeklarowane globalnie powinny być lokalnie.

I bardzo roztropnie napisałeś pytanie!!! Gratulujemy.

0
-pB_No- napisał(a):

Czy to będzie z funkcją IF w procedurze którą już posiadam, czy raczej potrzeba nowej procedury?

IF nie jest procedurą, jest elementem języka.
Wszystko można napisać w jednej procedurze, wszystko możesz podzielić jak chcesz. Ja bym to napisał w jednej procedurze, no chyba że ma to wspierać wiele znaków wtedy bym podzielił na procedurkę (albo użył istniejącej). Ciekawi mnie jeszcze czy te liczby mieszczą się w int64 czy mogą być większe (bo dałeś jakieś dziwne liczby).

Co do twojej procedury, to zmienną plik i wiersz masz zadeklarowane globalnie powinny być lokalnie.

I bardzo roztropnie napisałeś pytanie!!! Gratulujemy.

Napisałem Z funkcją IF W PROCEDURZE, więc nie wiem w czym błąd? :O
Co do wielkości liczb, mogą być to liczby dowolnej wielkości, więc w int64 się nie mieszczące...

pelsta napisał(a)

Co to jest "pierwsza liczba drugiej liczby"?

546465465*4646546454644834789471239847
druga liczba to 4646546454644834789471239847
pierwszą liczbą drugiej liczby jest 4... co tu jest niejasne?

0

(1)Napisałem Z funkcją IF W PROCEDURZE, więc nie wiem w czym błąd?
(2)Co do wielkości liczb, mogą być to liczby dowolnej wielkości, więc w int64 się nie mieszczące...
(3)pierwszą liczbą drugiej liczby jest 4... co tu jest niejasne?

  1. IF nie jest funkcją! To jest kontstrukcja
  2. No to musisz na stringach operować, bo na int64 byłoby dużo łatwiej ale ma to jakiśtam zakres (w google zobacz).
  3. To jest cyfra, nie liczba.
1

Liczby zapisuje się za pomocą cyfr a nie liczb, jakbyś nie wiedział.

  p:=Pos('*',Wiersz);
  PierwszaLiczba:=StrToInt(Copy(Wiersz,1,p-1));
  PierwszaCyfraDrugiejLiczby:=StrToInt(Wiersz[p+1]);
0
pelsta napisał(a)

Liczby zapisuje się za pomocą cyfr a nie liczb, jakbyś nie wiedział.

  p:=Pos('*',Wiersz);
  PierwszaLiczba:=StrToInt(Copy(Wiersz,1,p-1));
  PierwszaCyfraDrugiejLiczby:=StrToInt(Wiersz[p+1]);

Okej, cyfra, macie racje ;)

Jeżeli będę miał więcej liczb w pliku np:
546465465*4646546454644834789471239847*32134234*31231231*54543577384
itd

W repeat/until raczej to mi nie zadziała jak powinno... Wynik ma wyglądać następująco:
546465465*4=wynik * 3=wynik *3=wynik * 5=wynik itd...

1 użytkowników online, w tym zalogowanych: 0, gości: 1