Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Cartes Pokémon EV6.5 : où trouver le Bundle Lot 6 Boosters Fable ...
Voir le deal

Exercice: Extrait BAC : Traitement particulier sur des nombres

Aller en bas

Exercice: Extrait BAC : Traitement particulier sur des nombres Empty Exercice: Extrait BAC : Traitement particulier sur des nombres

Message par Napoléon Dim 22 Fév - 23:41



On se propose de répéter le traitement ci-dessous pour un entier n.
1-Si le nombre est impair alors on le multiplie par 3 et on lui ajoute 1
2-Si le nombre est pair alors on le divise par 2.
Il est éventuel que le nombre 1 apparaisse lors des n premier répétitions.

Ecrire un programme Pascal qui permet d'appliquer ce traitement à tous
les entiers compris entre A et B (2<=A<=50) et d'afficher chaque
entier qui arrive à 1 dans un nombre de répétitions srictement
inférieur à sa valeur.

Exemple:

l'entier 10 sera afficher car il arrive à 1 après 6 répétition(6<10).


Napoléon
Napoléon
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
Exercice: Extrait BAC : Traitement particulier sur des nombres Left_bar_bleue999/1000Exercice: Extrait BAC : Traitement particulier sur des nombres Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Exercice: Extrait BAC : Traitement particulier sur des nombres Empty Re: Exercice: Extrait BAC : Traitement particulier sur des nombres

Message par Napoléon Dim 22 Fév - 23:44

Il y a une solution postée sur internet, dans un forum tunisien. Je vous laisse le soin de la réviser.

Code:

Program REPETITION;
uses wincrt;
var A,B:integer;
 
procedure saisie(var a,b:integer);
begin
 repeat
  writeln('Introduire A');
  readln(A);
  writeln('Introduire B');
  readln(B);
 until (2<=A) and (A<=50);
end;
 
function frequence(n:integer):integer;
var freq,i:integer;
begin
 freq:=0;
 repeat
  freq:=freq  1;
  if n mod 2 = 0 then n:=n div 2
  else n:= 3*n 1;
 until n=1;
frequence := fraq;
end;
 
procedure affiche(A,B:integer);
var i:integer;
begin
 for i :=A to B do
 if frequence(i)[i]end;
 begin
  saisie(A,B);
  affiche(A,B);
 end.
Napoléon
Napoléon
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
Exercice: Extrait BAC : Traitement particulier sur des nombres Left_bar_bleue999/1000Exercice: Extrait BAC : Traitement particulier sur des nombres 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