problem z wypisywaniem wyniku

0

Witam serdecznie
Chcialem prosic o pomoc w uzupelnieniu programu. Ma on sprawdzac poprawnosc podanego nr PESEL, a potem jesli jest ok uzytkownik podaje liczbe ile ma wyciac z lancucha numeru PESEL i podzielic go... np. 83092116750, uzytkownik podal 5 wiec na ekranie :
83092
11675
0
Czesc zadania tzn. sprawdzenie poprawnosci wpisanego numeru PESEL zrobilem, od dwoch dni siedze nad sposobem wypisania drugiej czesci i poddalem sie, nie mam bladego pojecia jak to ort!, z gory dzieki za pomoc.
P.S.
oto ten program.

program PESIO;
// Program sprawdza poprawnosc wprowadzonego numeru PESEL
{$APPTYPE CONSOLE}
uses
SysUtils;
var // zmienne globalne
ZmPesel: string;
ZmIle, ZmZwrot, ZmWynikDod: integer;
function FnPrzeliczanie(a: string):integer; //--------- I --- funkcja sprawdzajaca poprawnosc numer PESEL
var
ZmNrP, i, ZmRezultat: integer;
const
StWaga : array[1..10] of integer=(1, 3, 7, 9, 1, 3, 7, 9, 1, 3);
BEGIN
ZmWynikDod := 0;
for i:=1 to 11 do
Begin
ZmNrP := StrToInt(ZmPesel[i]);
ZmRezultat:= ZmNrP * StWaga[i];
ZmWynikDod:= ZmWynikDod + ZmRezultat;
End;
If ZmZwrot <> StrToInt(ZmPesel[11]) Then
writeln('Blad nr 2 - podales niepoprawny numer PESEL')
else
writeln('ok');
result:= ZmWynikDod;
End;
var
i, a, b:integer;
j: string;

BEGIN
writeln('Podaj numer PESEL: ');
read(ZmPesel);
if not (length(ZmPesel)=11) Then // I warunek
writeln('Blad nr 1 - niepoprawna dlugosc numeru PESEL')
else
ZmZwrot:= FnPrzeliczanie(ZmPesel); //wywołanie funkcji
writeln('Podaj ile znakow wyciac z lancucha numeru PESEL');
read(ZmIle);
a:=1;
b:=11;
j:=' ';
Begin
for i:=StrToInt(ZmPesel[i])+ZmIle to 11 do
Begin
j:=j+ZmPesel[i];
write(j);
end;
End;
readln;
END.

0

Jedna z metod to funkcja copy, sam pozabezpieczaj przed wprowadzeniem zlych parametrów

procedure TForm2.Button1Click(Sender: TObject);
begin
self.Memo1.Lines.Clear;
podziel(edit1.text,strtoint(edit2.Text));
end;

procedure podziel(tekst:string;liczba:integer);
var
i:integer;
begin
for i:=1 to ((length(tekst))div(liczba))+1 do wyswietl(copy(tekst,1+(i-1)*liczba,liczba));
end;

procedure wyswietl(tekst:string);
begin
form2.Memo1.Lines.Add(tekst);
end;

ew. ladniejsza koncepcyjnie część - choć działa tak samo:

procedure podziel(tekst:string;liczba:integer);
var
i:integer;
begin
for i:=1 to ((length(tekst))div(liczba))+1 do wyswietl(copy(tekst,1+(i-1)*liczba,liczba));
wyswietl(copy(tekst,1+((length(tekst))div(liczba))*liczba,((length(tekst))mod(liczba))));
end;

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