Je dois écrire un programme ou l'utilisateur entre un nombre n une base k et ou l'ordi renvoie le nombre n en base k (ex:128 donne 1003 en base 5)

J'ai écris le programme suivant mais il y a une erreur, l'ordi me renvoie une erreur pour le modulo en me disant que l'opérande est <= 0 c ki est faux (à moins ke je n'ai pas vu qque chose...
Quelqu'un pourrait il me dire si il voit l'erreur ?

Merci !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program numbase;
var
n,k,r,q,a,x,z:integer;
y:real;
begin
writeln('Taper le nombre a transformer...');
Readln(n);
Writeln('en base ?');
Readln(k);
r:=n mod k;
q:=(n-r) div k;
while n<>0 do 
begin
for a:=q downto 0 do
begin
y:=exp(a*(ln(k)));
z:=trunc(y);
x:=trunc(n/y);
n:=n mod z;
writeln(x);
end;
end;
readln;
end.
[Balises CODE rajoutées par sub0]