CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Algorithme : résolution de problème

GL_K
GL_K
Niveau 10
16 février 2005 à 15:58:53

Bonjours, ça fait au moin deux ans que je n´étais pas revenu sur ce forum, et je vois que les abitués n´ont pas perdu la main en ce qui concerne l´entraide entre programmeurs.

Je me suis dit que l´on pourrait tous ensemble réfléchir à des algorithmes pour les implémenter, les modifier et les mettre à la disposition de tous.
En effet par exemple la fonction swap() du C++ fait partie des algorithmes ( simples) qu´il faut conaître, et il est très intéressant de savoir comment elle marche, même si sont principe est très simple.

Ce Sujet porte uniquement sur les algorithmes leur résolution.

Le but? L´algorithmie est la base de tous programmes qui sont très bien optimisé, et est la force du programmeur expérimenté. De plus ces exercices que l´on va résoudre ensemble nous emprendrons beaucoup plus que des questions réponses : PASSEZ A L´ACTE, il n´y a qu´en programmant que l´on peut progresser.

Qui veut comme moi faire monter le niveau de ce forum en programmation ?

JeanYvesYves
JeanYvesYves
Niveau 10
16 février 2005 à 16:05:28

ben oui, moi je suis toujours ouvert pour parler l´algorithmique :) Si tu veux en parler, je suis ok.

GL_K
GL_K
Niveau 10
16 février 2005 à 16:09:46

Par exemple, la fonction swap pourrait être programmé comme suit :

void Swap( int& iX, int& iY )
{
int iBuf = iX;
iX = iY;
iY = iBuf;
}

mais cette fonction par exemple ne concerne que les valeurs entière, ainsi la nouvelle fonction SwapT() :

template< typename _T >
void SwapT( _T& X, _T& Y )
{
_T Buf = X;
X = Y;
Y = Buf;
}

corrige la fonction Swap() en la rendant générique.

Ceci n´est qu´un exemple, il faut réfléchir sur des algos plus compliqué!

GL_K
GL_K
Niveau 10
16 février 2005 à 16:11:22

je savias que tu allais acourir sur ce sujet car le mot " algorithmie" te donne envie de casser du code non? Enfin pour moi c´est comme ça!

JYY t´en penses quoi, se serait vraiment pas mal d´organiser ça non?

JeanYvesYves
JeanYvesYves
Niveau 10
16 février 2005 à 16:11:29

l´algorithme d´euclide qui te donne le PGCD de 2 entiers, en 2 lignes :

int pgcd ( int m, int n)
{
if ( n==0) return m;
else return pgcd( n, m % n);
}

JeanYvesYves
JeanYvesYves
Niveau 10
16 février 2005 à 16:13:40

Ben en fait, touvent je mets les algos quand on tombe sur le probleme. Donc le forum est bourré d´algos, mais qui sont un peu de partout, et des réponses a des questinos posées, apres, peut etre que si tu veux faire un recueil d´algos, il faut le faire sur un site, et non sur un forum : en effet, le forum n´indente que dalle...

GL_K
GL_K
Niveau 10
16 février 2005 à 16:20:08

template< typename _T >
_T pgcd( const _T m, const _T n )
{ return n ? pgcd( n, m % n ) : m; }

lol, par exemple !

JeanYvesYves
JeanYvesYves
Niveau 10
16 février 2005 à 16:26:09

pas d´accord !
ne pas mettre de template a tout va :
dans ce cas, si tu fais un PGCD sur des double, ça ne veut rien dire. L´opérateur modulo n´existe pas pour les double.
Cependant, en effet, on peut faire le PGCD sur autre chose que des entiers : des polynomes par exemple. Mais si tu fais une classe polynome, faut bien surcharger l´opérateur modulo.

GL_K
GL_K
Niveau 10
16 février 2005 à 16:37:48

Oui tu as raison, mais c´est pas pour cela que j´ai mis les templates :

short, unsigned short, int, unsigned, long, unsigned long.

il faut faire attention au type entier, si le nombre est trop grand pour un int, se sera faut !

dnob700
dnob700
Niveau 10
16 février 2005 à 23:15:01

chouette des algo.

par exemple petit quizz : comment peut-on calculer le n-ième terme de la suite de Fibonacci et quel est la complexité de l´algo en question ( le meilleur, sachant qu´il y a une méthode horrible, une mauvaise méthode, 2 bonnes méthode et une très bonne méthode) ?

LGV
LGV
Niveau 28
16 février 2005 à 23:33:06

( au passage, transformer un algo avec de la meta-programmation ne change en rien la manière de proceder, donc la templetisation n´est pas elle meme liée à la notion d´algorithmie)

jejej
jejej
Niveau 9
16 février 2005 à 23:40:02

ca fait style de parler comme ca :)

Dnob700 , la suite de fibonnacci , c´est bien 1+2+3+5+8+13 etc ?
mais j´ai pas compris la question , il suffit d´aditionner tous les nombres qui precedent le terme recherche , c´est ca ?

jejej
jejej
Niveau 9
16 février 2005 à 23:50:15

je sens que c´est la méthode horrible dont tu parlais ^^

Koyo-K
Koyo-K
Niveau 9
16 février 2005 à 23:53:44

C´est ce que je fais en ce moment les suites :)
Pour les suites numériques, il faut faire par calcul
Un = U0 + nr si je me souviens bien, et pour les suites géométriques c´est Un = U0*q(n-1)

dnob700
dnob700
Niveau 10
16 février 2005 à 23:57:18

oui, mais la suite de Fibonacci se définit comme tel :

U(0)=1;U(1)=1

U(n)=U(n-1)+U(n-2)

écrire un truc dans le genre :

int fibo(int n)
{
return ( n>1)?fibo(n-1)+fibo(n-2) :2;
}

c´est effectivement ce qu´on peut faire de pire.

MrGoTo
MrGoTo
Niveau 8
17 février 2005 à 01:10:56

Vous faites les mariolo :D
Hum hum, afficher la valeur binaire d´un nombre

void bin(int N)
{
if ( !N)
return;
bin(N > > 1);
printf("%d", N & 1);
}

Ne pas oublier de la faire suivre d´un saut de ligne. Encore désolé pour la mise en page que jv.com va massacrer.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment