C++ Equation diophantiennes
Résolu
azerty0
Messages postés
1274
Date d'inscription
Statut
Membre
Dernière intervention
-
azerty0 Messages postés 1274 Date d'inscription Statut Membre Dernière intervention -
azerty0 Messages postés 1274 Date d'inscription Statut Membre Dernière intervention -
Bonsoir a tous,
Je suis en train de créer un programme qui résoud les equations diophantiennes. Pour le moment, il effectue lalgorythme d'Euclide et me donne le PGCD.
Le programme passe en compil, mais il plante dans ma fonction resoud_equations... Le programme ferme.
Jespère que quelqun saura maider...
Je suis en train de créer un programme qui résoud les equations diophantiennes. Pour le moment, il effectue lalgorythme d'Euclide et me donne le PGCD.
Le programme passe en compil, mais il plante dans ma fonction resoud_equations... Le programme ferme.
#include <iostream> #include <string> #include <vector> using namespace std; int saisie(vector <int> &a, vector <int> &b) { cout << "Veuillez rentrer les deux nombres que vous avez choisis : " << endl << endl << "a = "; cin >> a[0]; cout << "b = ";; cin >> b[0]; return 0; } int resoud_equation(vector <int> &a, vector <int> &b, vector <int> &c, vector <int> &d) { int x=0; while((a[0]%b[0])!=0) { c.push_back(1); c[x]=int(a[x]/b[x]); d.push_back(1); d[x]=a[x]-(int(a[x]/b[x])*b[x]); a.push_back(1); b.push_back(1); x++; a[x]=b[x-1]; b[x]=d[x-1]; } cout << "PGCD(" << a[0] << "," << b[0] << " = " << c[x]; return x; } int main() { cout << "Ce programme est crée afin de résoudre des équations diophantiennes du type : au + bv = 1." << endl; vector <int> a(1); vector <int> b(1); vector <int> c(0); vector <int> d(0); saisie (a, b); resoud_equation(a,b,c,d); system("PAUSE"); return 0; }
Jespère que quelqun saura maider...
A voir également:
- C++ Equation diophantiennes
- Editeur d'équation - Télécharger - Vie quotidienne
- Formule équation - Télécharger - Études & Formations
- Equation sinequanone - Télécharger - Calcul & Conversion
- Pourquoi je ne peux pas insérer une équation dans word - Forum Microsoft Office
- Écrire un programme qui résout une équation du second degré - Forum C
3 réponses
salut,
résoudre une equa diophantienne, ca revient a trouver u et v appartenant a Z tel que : 1 = au + bv
Voici le programme que j'ai terminé.
résoudre une equa diophantienne, ca revient a trouver u et v appartenant a Z tel que : 1 = au + bv
Voici le programme que j'ai terminé.
#include <iostream> #include <string> #include <vector> using namespace std; int saisie(vector <int> &a, vector <int> &b) // saisie des premières valeurs a tester. { cout << "Veuillez rentrer les deux nombres que vous avez choisis : " << endl << endl << "a = "; cin >> a[0]; cout << "b = ";; cin >> b[0]; cout << endl; return 0; } int resoud_equation(vector <int> &a, vector <int> &b, vector <int> &c, vector <int> &d) { int x=0; while((a[x]%b[x])!=0) { c.push_back(1); c[x]=int(a[x]/b[x]); // on cherche les quotients d.push_back(1); d[x]=(a[x]%b[x]); // le reste de chaque division euclidienne a.push_back(1); b.push_back(1); x++; a[x]=b[x-1]; // algo d'Euclide : nouveau dividende b[x]=d[x-1]; // algo d'Euclide : nouveau diviseur } cout << "PGCD(" << a[0] << "," << b[0] << ") = " << b[x] << endl << endl; // remontée de l'algorythme d'Euclide : if(b[x]==1) { int V(0), W(1), var; x--; while(x>=0) { var = W; W = ((-W)*c[x])+V; V = var; x--; } cout << "Equation diophantienne : " << a[0] << " (" << V << ") + " << b[0] << " (" << W << ") = 1"; } else cout << "Le PGCD de "<< a[0] << " et " << b[0] << " est different de 1, on ne resoud pas l'equation diophantienne."; return x; } int main() { cout << "Ce programme est cree afin de resoudre des equations diophantiennes du type :" << endl << "au + bv = 1." << endl; vector <int> a(1); // nombre a vector <int> b(1); // nombre b vector <int> c(0); // quotients de chacune des divisions de a par b vector <int> d(0); // reste de chacunes des divisions de a par b saisie (a, b); resoud_equation(a,b,c,d); // pour le moment, je me contente deffectuer lalgorythme deuclide et de garder toutes mes valeurs. cout << endl << endl; system("PAUSE"); return 0; }