Un algorithme a resoudre svp

Fermé
powerwave - 29 sept. 2008 à 22:44
 m@her_91 - 30 sept. 2008 à 00:13
Bonjour,

http://img297.imageshack.us/img297/1766/image17copiexm8.jpg

merci bien de m'aider, je suis debutant, et j'ai pas reussi a le faire.
A voir également:

15 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
29 sept. 2008 à 22:45
Bonsoir,
Peux-tu nous dire ce que tu as fait exactement afin qu'on puisse te guider vers la solution ?

Cordialement
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
29 sept. 2008 à 22:52
Je vais peut-être te paraître un peu dur en disant ça, mais apprendre à écrire un algorithme ne s'apprend pas en ayant la réponse et en cherchant à la comprendre ... (ou du moins si t'y arrives tant mieux pour toi mais j'ai jamais vu qqu'un réussir comme ça). Le but du forum n'est pas non plus de faire ton exo à ta place.

Ce que je peux te dire, si ça peut t'aider :
C'est qu'écrire un algorithme n'est pas infaisable même pour un débutant. Ce qu'il faut bien comprendre pour faire un algorithme, c'est comprendre comment le programme doit faire pour fonctionner.
Imagine-toi en train de dire à ta machine ce qu'elle doit faire... en la prenant pour une conne (lol), elle ne comprends que les condition (si machin alors truc), mettre des valeurs là où tu lui dis, et répéter des opérations un certain nombre de fois (ou selon une condition).
Tu dois donc penser les étapes nécessaires au fonctionnement, et éventuellement les préciser en sous-étapes.

Il vaut mieux avoir réfléchi à faire l'algo sans avoir réussi, plutôt qu'on te le donne sans trop réfléchir (on n'avance pas comme ça)

Bon courage
0
re, merci de me repondre marco
je suis un nouveau etudiants qui reçoit une formation en .net, la derniére chose ue j'ai apris c'est les boucles,
voila ce que j'ai repondu moi mais je suis sur que c pas correcte lol
http://img297.imageshack.us/img297/6837/image18tz9.jpg
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
29 sept. 2008 à 22:59
Dsl de m'être emballé :p Le premier post m'a fait penser au genre de personnes qui demande la réponse...

Petite astuce : si tu veux vérifier ton algorithme, mets-toi à la place de la machine et déroule-le.

Tu t'appercevras d'une inexactitude dans ton algo : si le nombre est premier (ou non d'ailleurs), tu ne sors pas de ta boucle ;-)
0
g déja essayé mec je veux juste que quelqu'un me corrige xD merci bien pour tes conseilles :)
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
29 sept. 2008 à 23:20
Hello powerwave,
-premier commentaire : et si ton entier est supérieur à 9999999999, que fais-tu ? Ton algorithme est faux.
- 2nd commentaire : pas la peine de parcourir tous les entiers jusqu'à cette valeur d'ailleurs. L'énoncé te dit qu'il suffit d'aller jusqu'à la racine de n, c'est beaucoup plus intéressant car tu gagnes énormément de temps.
- 3ème commentaire, comme le dit bizu53, l'algorithme doit retourner quelque chose, pas simplement afficher la réponse (mais bon, ça c'est du détail).

L'algo :
fonction estPremier (entier n) : booléen
 si (n > 0 et n <= 2)
  retourner vrai;
 fin si

 soit i entier; i = 2;
 tant que i < sqrt(n) faire
  si ( n mod i = 0 )
   retourner vrai;
  fin si
  i = i + 1;
 fin tant que
 retourner faux;


N'hésite pas à poser des questions.
Cordialement,
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860 > Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009
29 sept. 2008 à 23:23
Le beau cadeau piégé ! (petit piège) :p

Tant qu'à donner la solution, je corrige ta solution :

Il ne faut absoluement pas de :

si (n > 0 et n <= 2)
retourner vrai;
fin si

Le nombre 1 n'est PAS un nombre premier
0
powerwave Messages postés 38 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 17 novembre 2014 10 > Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009
29 sept. 2008 à 23:24
OMG c'est quoi ce truc de ouf, merci mec xD
on utilise le visual studio pour programmer?? on a toujours pas passer a la pratique lol juste des trucs de base sur le cahier ^^'
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329 > bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015
29 sept. 2008 à 23:29
Effectivement, désolé.
J'avais gardé en tête la définition "divisible par un et par lui même", donc j'ai effectivement oublié ce cas exceptionnel.

L'erreur est humaine n'est-ce pas ? La prochaine fois tu présenteras ta solution bizu, j'essaierai de te trouver des bugs moi aussi ;)

Cordialement,
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860 > powerwave Messages postés 38 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 17 novembre 2014
29 sept. 2008 à 23:29
Tu peux utiliser Visual Studio ou tout autre environnement de développement ^^.
Perso je développe dans Dev-c++ (parce que je ne supporte pas dans VS qu'il faille obligatoirement faire un projet, il ne compile pas un .c tout seul [à vrai dire jme suis jamais vraiment penché sur la question]), mais j'utilise VS quand même pour son excellent débuggeur :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
powerwave Messages postés 38 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 17 novembre 2014 10
29 sept. 2008 à 23:32
ok merci les gars, je passerai souvent vous faire chier avec d'autre questions mdrrrrrrr
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
29 sept. 2008 à 23:34
Pour moi pas de pb tant que ce n'est pas du "chiage" d'une solution toute faite :) je pisse du code par plaisir depuis maintenant 8ans :p (donc l'algo va avec ^^)
0
slt...
juset une ptite remarque pour bizu53 .. bah tu lui a ecri l algorithme avec une fonction ... bah je croix que ce n 'est pas la bonne idéé pacequ'il debute deja ... il est tot pour les procedures et les fonctions !! nn?? :)
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
29 sept. 2008 à 23:36
Ce n'est pas moi qui l'ait écrit ;-) relis bien
0
powerwave Messages postés 38 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 17 novembre 2014 10
29 sept. 2008 à 23:36
c sur g rien pigé xD je viens juste d'aprendre les boucles aujourd'hui xD
0
aahh ui mmdr !! c etait Marco la baraque !! :P
0
est ce que ta premiere seance aujourd'hui en algortihme parceque ca m'ettonnerai enormement si c le cas ...apprendre plus qu'une boucle c tro !!:O
0
powerwave Messages postés 38 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 17 novembre 2014 10
29 sept. 2008 à 23:47
ben g apris en quelques seances les trucs de base, stocker, ecrire".....",lire "....",si .... alors, x mod y = 0, SQR, et une boucle, c tt pour le moment xD je suis un vrai debutant ^^
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
29 sept. 2008 à 23:49
Bah de toute façon, à part les fonctions/procédures, il n'y a pas grand chose de + en algo :)
C'est très basique, c'est le principe même de l'algorithmique (le plus basique possible pour détailler un programme, comme ça si tu le donnes à un développeur il n'a [quasiment] pas à réfléchir)
0
bah si si.. y a beaucoup de chose plus difficile en algo .. moi niveau 3eme informatique tunisie (un an avant le bac) une fois en jettant un coup d'oueil sur le devoir de pascal de bac pour l' anné 2008 j'ai rien compri xD !! voila le corrigé :


program bac_pratique;
uses wincrt;
type
convertition=record
dec:integer;
bin:string;
oct:string;
hex:string;
end;
fichier1=file of integer;
fichier2=file of convertition;
{-----------------------------------------------}
procedure saisie1( var n:integer);
begin
repeat
write('Donner N : ');
readln(n);
until ((n>5) and (n<100));
end;
{-----------------------------------------------}
procedure saisie2(var nombres:fichier1; n:integer);
var i,p:integer;
begin
{$i-} reset(nombres);{$i+}
if ioresult<> 0
then
rewrite(nombres);

for i:=1 to n do
begin
repeat
write('Donner Un Entier à Remplir Dans Le Fichier Nombres : ');
readln(p);
until (p<32000);
write(nombres,p);
end;


end;
{-----------------------------------------------}
function inver(ch:string):string;
var i:integer; ch1:string;
begin
ch1:='';
for i:=length(ch) downto 1 do
ch1:=ch1+ch[i];
inver:=ch1;
end;
{-----------------------------------------------}
function conv(p,b:integer):string;
var ch,ch1:string; r:integer;
begin
ch:=''; ch1:='';r:=0;
repeat
r:=p mod b;
p:=p div b;
if b=16
then
begin
if r in [0..9]
then
str(r,ch1)

else
ch1:=chr(r+55);
end
else
str(r,ch1);
ch:=ch+ch1;
until (p=0);
conv:=inver(ch);
end;
{------------------------------------------------}
procedure remplir(var nombres:fichier1;var nbr_conv:fichier2);
var i,p:integer; con:convertition;
begin
reset(nombres);
rewrite(nbr_conv);
for i:=0 to (filesize(nombres)-1) do
begin
seek(nombres,i);
read(nombres,p);
with con do
begin
writeln('L"enregistrement N°',i,':');

dec:=p;
writeln('En Dicimale : ',dec);

bin:=conv(p,2);
writeln('En Binaire : ',bin);

oct:=conv(p,8);
writeln('En Octet : ',oct);

hex:=conv(p,16);
writeln('En Hexadicimal : ',hex);
writeln;
end;
write(nbr_conv,con);
end;

end;
{-----------------------------------------------}
var nombres:fichier1; nbr_conv:fichier2; choix,n:integer;
begin
assign(nombres,'d:\nombres.dat');
assign(nbr_conv,'d:\nbr_conv.dat');
repeat
writeln('Saisie De N : (1) ');
writeln('Saisie De Fichier Nombres : (2) ');
writeln('Remplissage Et Affichage De convertition : (3) ');
writeln('Recréer Le Fichier Nombres : (4) ');
writeln('Recéer Le Fichier Nbr_conv : (5) ');
writeln;
repeat
write('donner votre choix : ');
readln(choix);
until choix in [0..5];
case choix of
1:saisie1(n);
2:saisie2(nombres,n);
3:remplir(nombres,nbr_conv);
4:rewrite(nombres);
5:rewrite(nbr_conv);
end;
write('Traitment Terminer Taper Entrer Pour Continuer ');
readln;
clrscr;

until choix=0;
gotoxy(30,15);write('Programme terminer');

end.
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
29 sept. 2008 à 23:59
... ce n'est pas un algo mais du code !
Je parlais d'algo moi ...

edit : en même temps... même en jettant un coup d'oeil rapide à ton code je ne vois où est-ce que tu trouves des difficulté dans ça ... enfin bon chacun son niveau ^^ (sans prétention)
0
oui mais c presque la meme chose la difference c juste la traducction en pascal !!
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
30 sept. 2008 à 00:02
Je suis d'accord que c'est "presque" la même chose mais "presque" n'est pas synonyme de "strictement"
0
oui !! je vais te poser une question : ) .. quelles sont les branches dans l' orientation chez vous en France ?? parceque j'ai aucune idée!!
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
30 sept. 2008 à 00:12
Je n'y connais rien, je ne suis pas conseiller d'orientation ...
0
powerwave Messages postés 38 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 17 novembre 2014 10
30 sept. 2008 à 00:09
chui marocain moi ne parlez pas chnois svp xD
0
dsl pour le francais "ecasé" !! xD
0