SHOW:
|
|
- or go back to the newest paste.
| 1 | { BAC 2013 -- 11h -- Section Scientifique
| |
| 2 | Enonce: http://goo.gl/Y7C6N | |
| 3 | - | var i,e,n:integer; ch:string; trv1,trv2:boolean; a,x:longint; |
| 3 | + | NB: Le programme ne fonctionne pas avec quelques exemples, car l'intervalle des entiers est limitée |
| 4 | - | procedure saisir(var n:integer); |
| 4 | + | } |
| 5 | ||
| 6 | program bac2013v11; | |
| 7 | uses wincrt; | |
| 8 | var i,e:integer; ch:string; trv1,trv2:boolean; a,n,x:longint; | |
| 9 | procedure saisir(var n:longint); | |
| 10 | begin | |
| 11 | repeat | |
| 12 | writeln('Donner n');
| |
| 13 | readln(n); | |
| 14 | until(n>=10); | |
| 15 | end; | |
| 16 | ||
| 17 | procedure inverse (var ch:string); | |
| 18 | var i,j:integer; | |
| 19 | procedure permut (var x,y:char); | |
| 20 | var aux:char; | |
| 21 | begin | |
| 22 | aux := x; | |
| 23 | x := y; | |
| 24 | y := aux; | |
| 25 | end; | |
| 26 | ||
| 27 | begin | |
| 28 | i:=0; | |
| 29 | j:=length(ch); | |
| 30 | repeat | |
| 31 | i:=i+1; | |
| 32 | permut(ch[i],ch[j]); | |
| 33 | j:=j-1; | |
| 34 | until(j=i); | |
| 35 | end; | |
| 36 | ||
| 37 | function pali (var ch:string):boolean; | |
| 38 | var debut,n:integer; trv:boolean; | |
| 39 | begin | |
| 40 | debut:=1; | |
| 41 | - | until((debut=n) or (ch[n] <> ch[debut])); |
| 41 | + | |
| 42 | repeat | |
| 43 | debut:=debut+1; | |
| 44 | n:=n-1; | |
| 45 | ||
| 46 | until((debut>n) or (ch[n] <> ch[debut])); | |
| 47 | if (ch[n] <> ch[debut]) then trv:=false | |
| 48 | else trv:=true; | |
| 49 | ||
| 50 | pali:= trv; | |
| 51 | end; | |
| 52 | ||
| 53 | begin | |
| 54 | ||
| 55 | saisir(n); | |
| 56 | a:=n; | |
| 57 | i:=0; | |
| 58 | repeat | |
| 59 | i:=i+1; | |
| 60 | str(a,ch); | |
| 61 | if (pali(ch)) then | |
| 62 | - | until(trv1 or trv2); |
| 62 | + | trv1:=true |
| 63 | else | |
| 64 | begin | |
| 65 | inverse(ch); | |
| 66 | val(ch,x,e); | |
| 67 | a:=a+x; | |
| 68 | str(a,ch); | |
| 69 | trv1:=((pali(ch)) and (i<=10)); | |
| 70 | trv2:=((pali(ch)=false) and (i=11)); | |
| 71 | end; | |
| 72 | until((trv1) or (trv2)); | |
| 73 | if (trv1) then writeln('Cette suite est palindromique')
| |
| 74 | else if(trv2) then writeln('Le calcul de 11 termes ne donne pas une suite palidromique pour ce nombre.')
| |
| 75 | ||
| 76 | ||
| 77 | end. |