Sciences de l'informatique

Bienvenue dans notre forum de partage et d'échange d'information technique dans le domaine NTIC (Informatique, Programmation, Réseau, Multimédia), ce forum est destinée à tous les élèves Tunisiens
 
AccueilCalendrierFAQMembresGroupesS'enregistrerConnexion
Sujets similaires
    Rechercher
     
     

    Résultats par :
     
    Rechercher Recherche avancée
    Derniers sujets
    Navigation
     Portail
     Index
     Membres
     Profil
     FAQ
     Rechercher
    Août 2017
    LunMarMerJeuVenSamDim
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
    CalendrierCalendrier
    Qui est en ligne ?
    Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

    Aucun

    Le record du nombre d'utilisateurs en ligne est de 6 le Ven 13 Jan - 2:22

    Partagez | 
     

     série révision finale

    Voir le sujet précédent Voir le sujet suivant Aller en bas 
    AuteurMessage
    asma slama



    Messages : 1
    Date d'inscription : 14/04/2011
    Age : 34

    MessageSujet: série révision finale    Jeu 14 Avr - 17:16

    Série d’exercices de révision

    Sujet 1 :

    Soit l’algorithme suivant :
    0) Début Nombres
    1) Lire(n)
    2) Si FN Verif(n) Alors
    Ecrire(n,  est valable)
    Finsi
    3) Fin Nombres

    L’algorithme ci-dessus permet de saisir un entier positif n formé da quatre chiffres et de l’afficher avec la mention  est valable , s’il vérifie la condition suivante : Le chiffre des milliers, qui ne doit pas être nul, est suivi par ses multiples.
    Exemple :
    n = 2888 8 est un multiple de 2
    n = 3696 6 et 9 sont des multiples de 3.
    n = 1541 5, 4 et 1 sont des multiples de 1.

    Questions :
    1) Traduire l’algorithme Nombres en Pascal.
    2) Transformer la séquence 1) en une procédure saisie en ajoutant les contrôles nécessaires et en tenir compte dans le programme principal.
    3) Ecrire la fonction Verif permettant de vérifier si le premier chiffre du nombre n est suivi effectivement par ses multiples ou non.

    Sujet 2 :

    L’algorithme suivant est celui d’un programme permettant de déterminer et d’afficher si les éléments d’un tableau T de n entiers constituent ou non une suite géométrique.

    0) Début suite
    1) Répéter
    Ecrire (" Donner un entier n " ) ; lire(n)
    Jusqu’à n dans [2..15]
    2) pour i de 1 à n répéter
    3) Répéter
    Ecrire (" t[",i, " ]= ") ; lire(t[i])
    Jusqu’à (t[i] >0) et ( t[i]<100)
    4) Si FN Geometrie(n,t)
    Alors Ecrire(" C’est une progression géométrique ")
    Sinon Ecrire(" Ce n’est pas une progression géométrique ")
    Finsi
    5) Fin Suite
    Questions :
    1. Traduire cet algorithme en Pascal.
    2. Transformer la séquence 2) en une procédure Lecture en remplaçant sa boucle Répéter…….. jusqu’à par la fonction Random avec des bons paramètres, et en tenir compte dans le programme principal.
    3. Ecrire la fonction Geometrique, de type booléen, permettant de vérifier si les éléments du tableau T forment ou non une suite géométrique.
    N.B : Une suite U est dite géométrique si et seulement si il existe un réel q tel que pour tout entier n on a : Un = q * Un – 1





    Sujet 3 :

    Deux entiers N1 et N2 sont dits frères si chaque chiffre de N1 apparaît au moins une fois dans N2 et inversement.
    Ecrire un programme Pascal qui saisit deux entiers N1 et N2, vérifie et affiche s’ils sont frères ou non.

    Exemples :
    - Si N1 = 1164 et N2 = 614 alors le programme affichera : N1 et N2 sont frères.
    - Si N1 = 905 et N2 = 9059 alors le programme affichera : N1 et N2 sont frères.
    - Si N1 = 405 et N2 = 554 alors le programme affichera : N1 et N2 ne sont pas frères.

    N.B : La solution doit comporter au moins deux modules.

    Sujet 4 :

    Ecrire un programme Pascal intitulé TRIANGLE qui permet :
    - de remplir un tableau T de n chaînes de caractères (2<n<20). Chaque chaîne doit avoir un nombre de caractères supérieur ou égal à son indice dans le tableau T.
    - d’afficher pour chaque élément T[i] du tableau, les i premiers caractères de la chaîne.

    Exemple : Soit T un tableau de 6 chaînes de caractères :

    Bit Modem Ecran Souris Processeur Mémoire

    Le programme affichera :

    B
    Mo
    Ecr
    Sour
    Proce
    Mémoir

    N.B : La solution doit comporter au moins deux modules.

    Sujet 5 :

    Ecrire un programme Pascal qui permet de saisir n entiers dans un tableau T (10<n<40) et deux entiers non nuls p et s (p et s doivent être des éléments de T).
    On demande d’afficher tous les blocs d’éléments de T placés entre p et s dans l’ordre ; p et s peuvent figurer dans cet ordre plusieurs fois dans T.
    Exemple :
    Si p = 5 et s = 3
    Et si on donne le tableau T suivant :

    7 5 0 2 3 9 1 5 6 3

    Alors le résultat de l’affichage sera : 0 2 6

    N.B : La solution doit comporter au moins deux modules.






    Sujet 6 :

    Soit un tableau T de n caractères (5<=n<nmax) qui ne peuvent être que A, B, C et tels que deux éléments successifs du tableau ne sont pas égaux. (nmax est une constante de valeur 15).
    On se propose d’insérer un caractère donné Car dans la première position possible dans la position possible dans le tableau T en respectant la règle ci-dessus mentionnée puis d’afficher le tableau T dans son nouvel état(après insertion).
    N.B : - Car ne peut être que A, B, ou C et ne peut être inséré ni à la première ni à la dernière position du tableau.
    - On suppose que l’insertion d’un nouvel élément est possible en effet n<nmax.

    Exemple :

    T à l’état initial T à l’état final
    B A B C A C B A B A B C B A C B A
    1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9

    Par la suite on donne l’algorithme suivant:
    0) Début Insertion
    1) Ecrire( Donner un entier n avec 5<=n<nmax ) , lire (n)
    Pour i de 1 à n répéter
    Ecrire ( Donner une lettre A ou B ou C )
    Lire (t[i])
    Fin pour
    2) Proc insert_car (car, t, n)
    3) Proc Affiche (n, t)
    4) Fin Insertion
    Questions :
    4) Traduire l’algorithme Nombres en Pascal.
    5) Transformer la séquence 1) en une procédure saisie en ajoutant les contrôles nécessaires et en tenir compte dans le programme principal.
    6) Ecrire la procédure insert_car permettant d’insérer un caractère Car dans un tableau T, tout en respectant les conditions mentionnées ci-dessous.
    7) Ecrire la procédure Affiche permettant d’fficher les éléments de T après insertion de Car.

    Sujet 7 :

    Ecrire un programme Pascal qui permet de :
    a) de saisir un tableau T de N chaînes de caractères non vides composée chacune d’un maximum de 5 caractères (N est une constante de valeur 10).
    b) de garder la première occurrence pour les éléments redondants (qui apparaissent plus q’une fois) et de remplacer toutes les autres occurrences par des chaînes vides.
    c) d’afficher les chaînes non vides restantes du tableau T.

    Exemple :

    Ali Ali Salem Amal Eya Mohamed Amal Salem Salem Aziz
    1 2 3 4 5 6 7 8 9 10
    T initial

    Ali Salem Amal Eya Mohamed Aziz
    1 2 3 4 5 6 7 8 9 10
    T final


    On propose l’algorithme suivant :
    0) Début non_redondance
    1) Pour i de 1 à n Répéter
    lire (t[i])
    Finpour
    2) Proc Remplace (N,T)
    3) Proc Affiche (N,T)
    4) Fin non_redondance

    Questions :
    4. Traduire cet algorithme en Pascal.
    5. Transformer la séquence 1) en une procédure saisie et y ajouter les contrôles nécessaires pour la saisie des éléments du tableau T.
    6. Ecrire la procédure remplace permettant de réaliser le traitement b) ci-dessus mentionné.
    7. Ecrire la procédure Affiche permettant d’afficher les éléments non redondants du tableau T.


    Sujet 8 :

    Ecrire un programme Pascal qui permet de saisir n entiers de trois chiffres chacun (n est une constante) puis de chercher et d’afficher les nombres symétriques de T.

    Exemple :
    424 715 133 121 454 616 566
    1 2 3 4 5 6 7
    Pour n = 7 et T

    Le programme affichera : Les nombres symétriques de T sont : 424, 121, 454 et 616
    On propose l’algorithme suivant :

    1) Début Symétrique
    2) Proc saisie(T)
    3) Ecrire ("Les nombres symétriques de T sont :")
    4) Pour i de 1 à n répéter
    Si FN verif(T[i]) alors
    Ecrire(T[i] :4)
    Finsi
    Finpour
    5) Fin Symétrique

    Questions :
    1. Traduire cet algorithme en Pascal.
    2. Ecrire la procédure saisie permettant de remplir un tableau V par p entiers à trois chiffres.
    3. Transformer la séquence 3) en une procédure Affiche et en tenir compte dans le programme principal.
    4. Ecrire la fonction Verif permettant de vérifier si un entier m de trois chiffres est symétrique ou non.

    Sujet 9 :

    Ecrire un programme Pascal qui permet de remplir deux tableau T1 et T2 de n entiers à deux chiffres chacun(2<=n<=15) puis de former un tableau T tel que un élément t[i] est le résultat de la fusion de deux éléments T1[i] et T2[i] selon le principe suivant :
    - Insérer le chiffre des dizaines du plus petit nombre parmi T1[i] et T2[i], entre les deux chiffres du plus grand nombre parmi T1[i] et T2[i].
    - Mettre le chiffre des unités du plus petit nombre parmi T1[i] et T2[i], à droite du nombre obtenu.
    Exemple :
    - Pour T1[i] = 52 et T2[i] = 36 , T[i] sera égal à 5326
    - Pour T1[i] = 13 et T2[i] = 47 , T[i] sera égal à 4173

    On propose l’algorithme suivant :
    5) début trait_tab
    6) Répéter
    Ecrire(" Donner un entier n"), lire (n)
    Jusqu’à n dans [2..15]
    7) Proc saisie (n,T1)
    Cool Proc saisie (n,T2)
    9) Proc Fusion (n,T1,T2,T)
    10) Pour i de 1 à n répéter
    Ecrire (T[i])
    Finpour
    6) Fin trait_tab

    Questions :
    5. Traduire cet algorithme en Pascal.
    6. Ecrire la procédure saisie permettant de remplir un tableau T par p entiers à deux chiffres.
    7. Ecrire procédure Fusion permettant de remplir un tableau F, à partir de deux tableaux V1 et V2 de p éléments chacun, selon le principe ci-dessus.












































    Solutions des exercices de révision



    Sujet 1 :


    program nombres;
    uses wincrt;
    var
    n:integer;

    procedure saisie(var n:integer);
    begin
    repeat
    writeln('Donner un entier composé de 4 chiffres');
    readln(n);
    until n>1000;
    end;

    function verif(n:integer):boolean;
    var
    u,d,c,m:integer;
    begin
    u:= n mod 10;
    d:=(n mod 100)div 10;
    c:=(n mod 1000) div 100;
    m:= n div 1000;
    verif:=false;
    if (u mod m = 0) and (d mod m = 0) and (c mod m =0) then
    verif:=true;
    end;

    begin
    saisie(n);
    if verif(n) = true then Writeln(n ,' est valable')
    else
    Writeln(n ,' n''est pas valable');
    end.




    Sujet 2 :


    program suite;
    uses wincrt;
    type
    tab = array [1..100] of integer;
    var
    n,i : integer;
    t : tab;

    procedure lecture (var t:tab; n:integer);
    var i:integer;
    begin
    randomize;
    for i:=1 to n do
    T[i] := random(99)+1;
    end;

    function geometrie(n: integer ; t:tab): boolean;
    var
    q: real;
    i:integer;
    geo : boolean;
    begin
    q := T[2] / T[1];
    geo := false;
    i:=1;
    repeat
    if T[i+1] / T[i] = q then
    geo := true else geo:= false;
    i:=i+1;
    until((i= n-1) or (geo = false));
    geometrie := geo;
    end;

    begin
    repeat
    writeln('donner un entier'); readln(n);
    until(n in [2..15]);
    lecture(t,n);
    for i:= 1 to n do
    writeln(T[i]);
    if geometrie(n,t) then
    writeln('c''est une progression geometrique') else
    writeln('ce n''est pas une progression geometrique');
    end.







    Sujet 3 :


    program frere;
    uses wincrt;
    var
    n1,n2:integer;

    procedure saisie(var n1,n2:integer);
    begin
    writeln('Donner n1');
    readln(n1);
    writeln('Donner n2');
    readln(n2);
    end;

    procedure freres(n1,n2:integer);
    var
    i,j,c1,c2:integer;
    ch1,ch2:string;
    begin
    str(n1,ch1);
    str(n2,ch2);
    i:=0;c1:=0;c2:=0;
    repeat
    i:=i+1;
    if (pos(ch1[i],ch2)<> 0 ) then
    c1:=c1+1;
    until (i=length(ch1))or(ch1[i],ch2)= 0);
    j:=0;
    repeat
    j:=j+1;
    if (pos(ch2[j],ch1)<> 0 ) then
    c2:=c2+1;
    until (j=length(ch2)) or(ch2[i],ch1)= 0);;
    if (length(ch2) = c2) and (length(ch1)=c1)then
    writeln('Frere')
    else
    writeln('Non Frere');
    end;

    begin
    saisie(n1,n2);
    freres(n1,n2);
    end.


    Sujet 4 :


    program triangle;
    uses wincrt;
    type
    tab=array [1..20]of string;
    var
    t:tab;
    n:integer;

    procedure saisie_n_t (var n:integer;var t:tab);
    var
    i:integer;
    begin
    repeat
    write('Donner la taille du tableau ');
    readln (n);
    until n in [3..19];

    for i:=1 to n do
    repeat
    write('t[',i,']=');readln (t[i]);
    until length (t[i])>i;
    end;

    procedure affiche (t:tab;n:integer);
    var
    i:integer;
    ch:string;
    begin
    for i:=1 to n do
    begin
    ch:=copy(t[i],1,i);
    writeln(ch);
    end;
    end;

    begin
    saisie_n_t(n,t);
    affiche(t,n);
    end.













    Sujet 5 :


    program sequence_p_s;
    uses wincrt;
    type tab=array[1..100] of integer;
    var
    n:integer;
    t:tab;

    procedure saisiet(var t:tab;n:integer);
    var i:integer;
    begin
    for i:=1 to n do
    begin
    writeln('T[',i,']= '); readln(T[i]);
    end;
    end;

    function existe(t:tab;n,p:integer):boolean;
    var
    i:integer;
    begin
    i:=0;
    existe:=false;
    repeat
    i:=i+1;
    until (t[i]=p) or (i=n);
    if t[i]=p then existe:=true;
    end;

    Procedure sequence( t:tab; n:integer);
    var
    i,j,p,s:integer;
    begin
    repeat
    write('p=');
    readln(p);
    until (p<>0) and existe (t,n,p);
    repeat
    write('s=');
    readln(s);
    until (s<>0) and existe (t,n,s);
    for i:= 1 to n-1 do
    begin
    if t[i]=p then begin
    j:=i+1;
    while (t[j]<>s) do
    begin
    write(t[j],' ');
    j:=j+1;
    end;
    end;
    end;

    end;

    begin
    repeat
    write ('Donner la taille du tableau');
    readln(n);
    until n in [11..39];
    saisiet(t,n);
    sequence(t,n);
    end.



























































    Sujet 6 :


    program insertion;
    uses wincrt;
    const Nmax = 15;
    type
    tab = array[1..15] of char;
    var
    t:tab;
    n:integer;
    car : char;
    procedure saisie( var t:tab ; var n: integer);
    var i: integer;
    begin
    repeat
    writeln('donner un enetier n avec 5<=n<Nmax'); readln(n);
    until ((n>=5) and( n <Nmax));

    repeat
    writeln('donner le premier caractere'); readln(T[1]);
    until(T[1] in ['A','B','C']);

    for i:= 2 to n do
    repeat
    writeln('donner une lettre A ou B ou C');
    readln(T[i]);
    until((T[i] = 'A') or (T[i] = 'B') or (T[i] = 'C') and (T[i] <> T[i+1]));
    end;
    procedure affiche(n:integer ; t:tab);
    var i: integer;
    begin
    for i:=1 to n+1 do
    writeln(T[i]);
    end;




    procedure insert_Car(car:char; var t:tab;n:integer);
    var
    pos, i,j: integer; trv : boolean ;
    begin
    trv := false;
    i:=2;
    repeat
    if ((T[i] <> car) and (T[i+1]<> car) and (T[i+2] <> car)) then
    BEGIN
    pos := i;
    TRV := TRUE;
    end;
    i:=i+1;
    until(i=n)or (trv = true);

    for j:= n+1 downto pos+1 do
    t[j] := T[j-1];

    t[pos+1]:= car;
    end;

    begin
    saisie(t,n);
    repeat
    writeln('donner un caractere A ou B ou C'); readln(car);
    until(car in ['A','B','C']);
    insert_Car(car,t,n);

    writeln('***************');

    affiche(n,t);
    end.









    Sujet 7 :


    program Non_redondance;
    uses wincrt;

    const N = 10;

    type
    tab = array[1..N] of string;

    var
    t:tab;

    procedure saisie( var t:tab ; n: integer);
    var i: integer;
    begin

    for i:= 1 to n do
    repeat
    writeln('donner une chaine de caractere numero' , i);
    readln(T[i]);
    until((length(T[i]) <=5) and (T[i] <> ''));
    end;

    procedure remplace(n:integer ; var t:tab);
    var i,j : integer;
    begin
    for i:=1 to n do
    for j:=i+1 to n do
    if t[i] = T[j] then
    t[j] := '';

    end;

    procedure affiche(n:integer ; t:tab);
    var i: integer;
    begin
    for i:=1 to n do
    if (t[i] <> '' ) then
    writeln(T[i]);
    end;

    begin

    saisie(t,n);

    remplace(n,t);
    affiche(n,t);
    end.


    Sujet 8 :


    program symetrie;
    uses wincrt;

    const N=10;
    type
    tab = array[1..10] of integer;

    var
    T:tab;
    i: integer;

    procedure saisie(var V:tab ; p:integer);
    var i : integer;
    begin
    for i:=1 to p do
    repeat
    writeln('donner un entier de trois chiffres ', i);
    readln(V[i]);
    until(((V[i]) >= 100) and (V[i] <= 999));
    end;

    function verif(x : integer) : boolean;
    var u,d,c : integer;
    begin
    c := x div 100;
    d := x mod 100 div 10;
    u := x mod 10;

    if c=u then verif := true else verif := false;

    end;

    procedure affiche(t:tab ; n: integer);
    var i: integer;
    begin
    for i:=1 to n do
    if verif (T[i]) then
    writeln(T[i]:4);
    end;

    begin
    saisie(T,n);
    writeln('les nombres symetriques de t sont:');
    affiche(t,n);
    end.








    Sujet 9 :


    program trait_tab;
    uses wincrt;

    type
    tab = array[1..15] of integer;

    var
    t,t1,t2 : tab;
    n,i : integer;

    procedure saisien (var n: integer);
    begin
    repeat
    writeln('donner un entier N'); readln(n);
    until(n in [2..15]);
    end;

    procedure saisie( p : integer; var T:tab);
    var i: integer;
    begin
    for i:= 1 to p do
    repeat
    writeln('donner un entier numero ', i);
    readln(T[i]);
    until (T[i] in [0..99]);
    end;

    procedure fusion (N:integer; t1, t2: tab; var t:tab);
    var
    i,UMX,UMN,DMX,DMN, Min, Max : integer;
    begin
    for i:=1 to n do
    begin
    if T1[i]>T2[i] then
    Max := T1[i]
    else Max := T2[i];

    if T1[i]<T2[i] then
    Min := T1[i]
    else Min := T2[i];

    UMX := Max mod 10;
    DMX := Max div 10;

    UMN := Min mod 10;
    DMN := Min div 10;

    T[i] := DMN*100 + UMN*1+DMX*1000+ UMX*10;

    end;
    end;


    begin

    saisien(n);
    saisie(N,T1);
    saisie(N,T2);
    fusion (N,T1,T2,T);

    for i:= 1 to n do
    writeln (T[i]);

    end.


    Revenir en haut Aller en bas
    Dhifallah Fethi
    Admin
    avatar

    Messages : 74
    Date d'inscription : 02/03/2011

    MessageSujet: Re: série révision finale    Ven 15 Avr - 2:32

    Merci pour le partage
    Revenir en haut Aller en bas
    http://ntic.moontada.net
     
    série révision finale
    Voir le sujet précédent Voir le sujet suivant Revenir en haut 
    Page 1 sur 1
     Sujets similaires
    -
    » حل مشكلة On & Up9 On & Up9 On & Up9

    Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
    Sciences de l'informatique :: 4ème Scientifiques :: Exercices & Devoirs-
    Sauter vers: