[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. 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
      ;)
      1. 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. 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. 
        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. 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.
        4. 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. 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. comment classé les variable a b c en ordre croissant en turbo pascal c urgent,?
              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. 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. 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
                    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 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