اقتباس:
المشاركة الأصلية كتبت بواسطة you92cef
exo pour les 2 eme anneé info
ecrire un programe recursive qui fait la somme de n element entre d'un tableu
puis affiche le resultat
|
كود:
program expo;
uses wincrt;
type
tab = array[1..20] of integer; { disant que le programme accepte 20 entier au max}
{
Pour faire la somme des cases d'un tableau de n éléments :
Pour la case n°1 c'est le cumul de la case n°1 et des case qui précédent (dans ce cas on à pas des cases)
plus la somme des cases qui restent
Pour la case n°2 c'est le cumul de la case n°2 et des cases précédant plus la somme des cases qui restent
Pour la case n°3 c'est le cumul de la case n°3 et des cases précédant plus la somme des cases qui restent
Et ainsi de suite...
On s'arrête lorsque la case traité est celle la dernière
(la variable i désigne la case traité, la variable n désigne le nombre total des cases)
}
function somme (t:tab;i,n:integer):integer;
begin
if i<=n then
somme:=t[i] + somme (t,i+1,n)
else
somme:=0;
end;
{On ne parle d'un tableau que lorsque on 'à plus que un élément (2 ou plus)}
procedure saisir(var n:integer);
begin
readln(n);
if ((n > 20) or (n < 2)) then
saisir(n);
end;
{Pour remplir un tableau on doit saisir une valeur dans la case traitée puis
on remplit le reste du tableau (Presque même principe que la fonction somme)}
procedure remplir(var t : tab ;i,n : integer);
begin
if i <= n then
begin
readln(t[i]);
remplir(t,i+1,n);
end;
end;
{Variables globaux}
var
n :integer;
t:tab;
{Corps du programme principal}
begin
saisir(n);
remplir(t,1,n);
writeln(somme(t,1,n));
end.