Forum INFOMATH

Forum de mathématiques et d'informatique


Vous cherchez quelqu'un qui vous aide dans ...


votre projet de fin d'études (PFE)?

votre projet de Mastère?

la synthèse de vos travaux de recherche?

la rédaction d'un article scientifique (conférence, revue...) ?

la préparation d'exposés professionnels, ou de soutenance...

Cliquer ici

  • Poster un nouveau sujet
  • Répondre au sujet

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

Partager

nabiL
Admin
Admin

Masculin
Nombre de messages: 2633
Localisation: Tunisie
Points: 1987
Réputation: 81
Date d'inscription: 19/03/2007

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

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

Message par nabiL le Sam 16 Mai - 18: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.



_________________
Nabil - tunis
خير الناس أنفعهم للناس
  • Poster un nouveau sujet
  • Répondre au sujet

La date/heure actuelle est Ven 19 Mar - 13:05