Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -40%
-40% sur le Pack Gaming Mario PDP Manette filaire + ...
Voir le deal
29.99 €

Exercice: Les nombres ordonnés ou croissants

Aller en bas

Exercice: Les nombres ordonnés ou croissants Empty Exercice: Les nombres ordonnés ou croissants

Message par Napoléon Lun 28 Sep - 1:04

Problème: Les nombres ordonnés

Un entier de n chiffres (1
Exemple :
L'entier de trois chiffres, 147 est bien ordonné car 1<4<7.
L'entier de 4 chiffres, 1265 n'est pas bien ordonné car 6>5.

Écrire un programme qui saisit un entier n (1 et fait sortir tous les entiers bien ordonnés de n chiffres et le nombre total de ces entiers.
Napoléon
Napoléon
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
Exercice: Les nombres ordonnés ou croissants Left_bar_bleue999/1000Exercice: Les nombres ordonnés ou croissants Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Exercice: Les nombres ordonnés ou croissants Empty Re: Exercice: Les nombres ordonnés ou croissants

Message par Napoléon Lun 28 Sep - 1:06

Une solution que je n'ai pas vérifiée:

Solution en Pascal

Code:
PROGRAM WELL_ORDERED;
USES wincrt;
VAR     
      n: INTEGER;
      i,mn,mx,p : LONGINT;
PROCEDURE min_max(n:integer; VAR min,max:LONGINT);
VAR i : INTEGER;
BEGIN
  min:=0;
  max:=0;
  FOR i:=1 to n do
            BEGIN
              min:=10*min + i;
              max:=10*max + (9-n+i);
            END;
END;

FUNCTION w_ordered(m:LONGINT):BOOLEAN;
VAR i,c1,c2 :INTEGER;
    valide :BOOLEAN;
BEGIN
  IF m<10 THEN
      BEGIN
            w_ordered:=TRUE
      END
  ELSE
            BEGIN
              REPEAT
                        c1:=m MOD 10;
                        m:= m DIV 10;
                        c2:= m MOD 10;
                        valide :=(c1>c2);
              UNTIL NOT(valide) OR (m<10);
              w_ordered:=valide;
            END;
END;

PROCEDURE saisie(VAR m:integer);
BEGIN
            REPEAT
              WRITE('Donner un entier n compris entre 1et 9 : ');READLN(m);
            UNTIL m in [2..8];

END;
BEGIN
    saisie(n);
    min_max(n,mn,mx);
    p:=0;
    FOR i:=mn to mx DO
            BEGIN
              IF w_ordered(i) THEN
                  BEGIN
                        p:=p+1;
                        writeln(p:10,' - ',i);
                  END;
            END;
END.
Napoléon
Napoléon
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
Exercice: Les nombres ordonnés ou croissants Left_bar_bleue999/1000Exercice: Les nombres ordonnés ou croissants 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