[turbo pascal]: problème de résolution d'ex

Résolu
Bonjour, je dois résoudre un exercice avec turbo pascal et je ne sais comment faire.
Voici l’énonce :

20 nombres entiers entre 100 et 200 compris sont créés au hasard par l’ordinateur. Il faut :

- afficher ces nombres à l’écran
- calculer et afficher la somme et la moyenne arithmétique des nombres pairs.

C’est la 2eme partie qui me pause problème.

Voici ce que j’ai ecrit :

program exercice3;
uses crt;
var i,nombre,compteur:integer;
moyenne: real;
begin
clrscr;
randomize;
compteur:=0;

for i := 1 to 20 do begin
nombre:= 100 + random (101);
compteur:= compteur + nombre;
writeln(nombre);
end;

writeln;
moyenne:= compteur/20;
writeln ('la moyenne est de:',moyenne:10:2);
writeln('le total est de:',compteur);
readln;
end.

Donc le problème est que, écrit comme cela, ca fait la somme et la moyenne de tout les nombres.
Donc ce n’est pas bon mais je ne voit pas comment faire pour juste faire la somme et la moyenne des nombres pairs.
Je crois que c’est soit avec la fonction DIV ou MOD mais je n’en suis pas sur.
Pouvez vous m’aider.

merci
Configuration: P4 2.6

xp pro

15 réponses

  1. Contributeur
    On regardons dans toutes les solutions données j'ai remarqué que plein de fautes
    Voici la solution Optimal :
    Program Somme_Moyenne;
    Uses WinCrt; 
    Var
    s, i, n : Integer;
    m : Real;
    Begin
         Randomize;
         s := 0;
         m := 0;
         For i := 1 to 20 Do
         Begin
              n := 100 + random (101);
              Writeln (n);
              s := s + n;
              If (n MOD 2) = 0 Then
                 m := m + n;
         End;
         Writeln ('La somme de ces entiers = ',s);
         Writeln ('La moyenne de ces entiers = ',m /20 :6:3);
    End.

    Mais, il est préférable d’enregistrer ces entiers dans un tableau de 20 entier et d’utilisé une fonction qui permet de calculer la somme et une procédure pour saisir les 20 entiers.
    1. Bonjour imeys et tout le groupe

      Dans ta boucle, tu ne tiens pas compte du fait que le nombre est ou non pair. Tu dois donc y placer le test, et ne faire les opérations que si le nombre est pair.

      Comme tu as choisi des entiers, tu peux tester le reste d'une division pour savoir si c'est pair ou non. Ce peut être aussi une expression un peu plus "longue", mais qui arrive au même résultat. La question simple à se poser est: quand un nombre (entier) est-il pair?
      1. merci bcp
    2. bonjour
      vous devez ajouter un test de parité avec de faire le calcul, en plus on vous demande de calculer la moyenne arithmetique et non pas la somme des élement pairs, donc:

      for i := 1 to 20 do begin
      nombre:= 100 + random (101);
      if nombre mod 2 = 0 then
      compteur:= compteur + nombre;
      moyenne := compteur/20;
      writeln(moyenne);
      end;
      1. bonjour, voici ma preoccupation ecrire un programme qui calcul la valeur de pi d'apres francois VIETE
        1. salut.je veux faire la formule de françois vieté en programme pascal.je sais pas quelle fonction je dois utiliser.pourriez vous m'aider.merci bcp.
      2. Bonjour,
        jai un probleme a resoudre aider moi silvouplait : prouver que le double de la somme des carrés de deux nombres est égal au carré de leur somme augmenté du carré de leur différence !
        1. salut

          il y a borland pascal et turbo bascal qui se trouve sur ce site

          des cours et des exercices sur ce site

          http://www.bacpascal.fr.tc
          1. comment classé les variable a b c en ordre croissant en turbo pascal c urgent,?
            1. bjr , je ve savoir des Simples Procedures ou des Fonctions qui m'aide a ecrire un Prgramme en Turbo Pascal 1.5 avec des simples animation sur l'affichages , Merci de me repondé
              1. salut je vien en ton secour tu dois demander de diviser chaques nombres nombre par 2 si tu trouves un nombre entier tu commence la procedure somme et moyenne si non ne pas faire là tu seras satisfait tu le feras en debut du programme ecrire est tres facile merci
                1. Enoncé : l’entreprise showfer se propose gérer son stock de produits de manière automatique.
                  L’activité consiste à :
                  Ajouter un produit
                  Supprimer un produit
                  Augmenter le stock
                  Trier le fichier par ordre alphabétique des produits
                  Trier le fichier par ordre décroissant des prix unitaires
                  Afficher la liste des produits page par page
                  Afficher un message de réapprovisionnement dès le seuil critique est atteint
                  A la fermeture de la caisse :
                  Afficher la recette totale du jour
                  Déterminer les 3 produits les mieux vendus et les produits les moins bien vendus de la journée
                  Travail à faire : Ecrire en pascal un programme pour gérer cette activité. Pour chaque traitement, écrire une procédure. La page d’accueil sera la suivante :

                  Nom d’utilisateur :

                  Mot de passe :

                  L’écran de travail de la caissière aura l’aspect suivant :

                  Code Désignation PU Quantité Sous total

                  P007 OMO 215 2 430
                  P107
                  P023
                  P308
                  P228
                  P417
                  P701
                  P402
                  P014
                  P123
                  P478
                  …………………………………………………………………………………..
                  Total : ……...
                  Espèce : ……..
                  Monnaie : ……

                  QUITTER SUIVANT
                  1. Modérateur
                    Ca me rappelle quelque chose... (ici).
                    Commence à faire un début de programme on pourra t'aider à débuger une ou deux procédures, ou te donner des pistes sur le comment faire... Mais quasiment personne ne te fera un programme aussi long en entier.
                2. Je voudrais aussi avoir une solution à mon exercice SVP.
                  Que voici:
                  Program Mois;
                  Uses Wincrt;
                  Var
                  m:string;
                  Begin
                  Write('Veuillez taper le mois:');
                  Read(m);
                  Case m Of
                  'janvier': m:=1 Write('Le code du mois est:',1);
                  'Février':m:=2 Write('Le code du mois est:',2);
                  Else
                  Write('Veuillez vérifier votre saisie');
                  End;
                  End.

                  [Le problème que j'ai est bien avec le m de 'case m of'! Celà fais une semaine que je cherche une résolution à ceci! Jattend de votre aide! Merci d'avance]
                  1. Modérateur
                    case of s'utilise sur des types d'éléments primitifs (boolean, byte, char, integer) mais en aucun cas sur des string, ici il faut faire une succession de if then else
                    De plus tu ne peux pas faire m:=1 si m est un string !
                  2. @KXAu fait ! N'y a -t-il pas d'autre solution pour que j'utilise le 'case of'?
                    Parce que la liste des mois semble longue!
                3. Merci, ça a marché!
                  Mais Veuillez répondre à ma question:
                  Ne serait-il possible en aucun cas d'utiliser la fonction 'case of' dans ce program?
                  1. Modérateur
                    Non le case of ne peut pas s'utiliser pour faire ce que tu veux (par contre on pourrait l'utiliser si tu voulais taper le "code du mois" et afficher le string correspondant)

                    Voici une solution alternative à ton problème :
                    Program Mois;
                    
                    const ListeMois:array[1..12] of string=('janvier','fevrier','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','decembre');
                    
                    Var m:string; i,n:integer;
                    Begin
                    Write('Veuillez taper le mois : '); Readln(m);
                    n:=0;
                    for i:=1 to 12 do
                        if m=ListeMois[i] then n:=i;
                    
                    if n=0 then Writeln('Veuillez vérifier votre saisie')
                           else Writeln('Le code du mois est : ',n);
                    
                    writeln; write('Fin du programme. Appuyer sur Entree'); readln;
                    End. 
                4. Au fait, J'ai essayé celui là mais j'ai le pescal vek le wincrt;
                  ça ne marche pas dèès de 1er Array of string=
                  1. svp je veut la solution d un probleme d exercice pascal aujourd huit :
                    Ecrire un programme Pascal intitulé PGCD permettant de calculer et d'afficher le PGCD ( plus grand commun diviseur) de deux entiers positifs A et B pa la methode de différence.
                    Exemple : PGCD ( 12,30 ) = ?
                    A <> B si A>B alors A reçoit A-B
                    si A<B alors B reçoit B-A
                    PGCD ( 12,30 ) = 6

                    et merciiiii svp aujourd'huit
                    ;)