Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

Problème de révision: Random + Tableaux + Min et Max + Position

Aller en bas

Problème de révision: Random + Tableaux + Min et Max + Position Empty Problème de révision: Random + Tableaux + Min et Max + Position

Message par Napoléon Sam 16 Mai - 20:08

On se propose de remplir aléatoirement un tableau T de n (5 où a
1) Déterminer le max, le min ainsi que leurs rangs dans le tableau T.
2) Déterminer le nombre d'entiers de T qui sont supérieurs à la moyenne M = (max + min)/2.

EXEMPLE:
========

n = 7
a = 10
b = 20

T = {12,10,17,14,10,13,15}

min = 10
max = 17

M = 13.5

Il y a 3 nombres supérieurs à 13.5


Code:

program random1;

uses wincrt;

type
  TAB = array[1..100] of integer;


{PROCEDURE ET FONCTION}

procedure saisie(var n:integer; var a:integer; var b:integer);
begin

  repeat
      write('Taille du tableau = ');
      readln(n);
  until (n>=5) and (n<=50);

  write('a = ');
  readln(a);

  repeat
    write('Entrer un entier (b) supérieur à ',a,'= ');
    readln(b);
  until (b>a);

end;


procedure remplissage(var T:TAB; n,a,b:integer);
var
  i:integer;
begin
  for i:=1 to n do
  begin
    T[i] := a + random(b-a+1);   
  end;
 
end;

procedure afficher(T:TAB;n:integer);
var i:integer;
begin
    for i:=1 to n do
    begin
      writeln('T[',i,'] = ',T[i]);
    end;

end;

procedure minmax(T:TAB;n:integer;var pmin,pmax:integer);
var
 i: integer;
begin
  pmin:=1;
  pmax:=1;
  for i:=2 to n do
  begin
      if (T[i]<T[pmin]) then
        pmin := i;
      if (T[i]>T[pmax]) then
        pmax := i;
  end;
end;

function nombre(T:TAB;n:integer;M:real):integer;
var
  i,nbr: integer;
begin         
  nbr := 0;
  for i:=1 to n do
      if (T[i]>=M) then
          nbr := nbr + 1;
  nombre := nbr;
end;

{PROGRAMME PRINCIPAL}

  var
  n,a,b,pmin,pmax: integer;
  M: real;
  T:TAB;

begin

  randomize;

  saisie(n,a,b);

  remplissage(T,n,a,b);

  afficher(T,n);

  minmax(T,n,pmin,pmax);

  M := (T[pmin] + T[pmax]) / 2;

  writeln('MIN = ',T[pmin],', POSMIN = ',pmin);
  writeln('MAX = ',T[pmax],', POSMAX = ',pmax);

  writeln('NOMBRE D''ENTIERS SUPERIEUR A ',M:2:2,' = ',nombre(T,n,M));

end.

Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Problème de révision: Random + Tableaux + Min et Max + Position Left_bar_bleue999/1000Problème de révision: Random + Tableaux + Min et Max + Position Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum