E:\Projet 2012\Langage\Trois langage Java, JavaScprit et C++.java vendredi 30 décembre 2011 20:46 *=====================================================================================================* /*================================================================================================ Universite de Djibouti Theoreme des restes chinois ( Projet Technique Numerique ) Cree par: Ibrahim Abdallah Ali Licence Math/Fond 2011/2012 Dini Ahmed Mohamed ************* Langage Java ********** ===============================================================================================*/ *=====================================================================================================* import javax.swing.*; public class chinois { private int int int int N,T,x,j,p,h,PGCD,f, i,nb1,nb2,ind1,ind2,l; rep1,rep4,rep6; cpt1,cpt4; []r,m,Y,M; public void nomequation(){ cpt1=0;cpt4=0; x=0; rep1=0;rep4=0;rep6=0; JOptionPane.showMessageDialog(null,"CE PROGRAMME RESOUDRE UN SYSTEME DE CONGRUENCE D'ORDRE N", "Theoreme des Restes Chinois",JOptionPane.INFORMATION_MESSAGE); do { N=Integer.parseInt(JOptionPane.showInputDialog(null,"Precisez les nombres d'equation Souhaitez vous? ","Resolution du systemes congruence",JOptionPane.INFORMATION_MESSAGE)); if (N<1){ JOptionPane.showMessageDialog(null,"Error du dimension? Veuillez reassir svp? ", "Resolution du systemes congruence",JOptionPane.INFORMATION_MESSAGE);}} while (N<1); r=new m=new Y=new M=new } int int int int [N]; [N]; [N]; [N]; public void liremodulo(){ JOptionPane.showMessageDialog(null,"saisissez l'element de l'equation ?","Saisir",JOptionPane. INFORMATION_MESSAGE); for( i=0; i<N; i++){ do{ JTextField mod = new JTextField(); JTextField res = new JTextField(); JOptionPane.showOptionDialog(null, new Object[] {"Votre module :m["+(i+1)+"]=", mod, "votre reste : a["+(i+ 1)+"]=", res},"saissiez les elements",JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); m[i] = Integer.parseInt(mod.getText()); r[i]= Integer.parseInt(res.getText()); if (m[i]<2){ rep6=JOptionPane.showConfirmDialog(null," vous venez de saisi un module: m["+(i+1)+"]=" +m[i]+"<2 !!! veuillez resaisir SVP ?"," Theoreme de Reste Chinois ",JOptionPane. OK_CANCEL_OPTION);}} while (m[i]<2 & rep6==JOptionPane.OK_OPTION); if (rep6!=JOptionPane.OK_OPTION){cpt1++;break;} } } public void soultion(){ String[] Question = {"Particulier", "Generale", "sortir"}; if ( cpt1==0){ for(j=0; j<N; j++){ for(i=0; i<N; i++){ -1- E:\Projet 2012\Langage\Trois langage Java, JavaScprit et C++.java vendredi 30 décembre 2011 20:46 if ( j!=i){ PGCD=m[j]; f=m[i]; while ( PGCD != f ) { if ( PGCD< f ) f = f - PGCD; else PGCD = PGCD - f; } if ( PGCD!=1) { cpt4++; nb1=m[j]; nb2=m[i]; }}} if (cpt4==0){ T=m[0]; ind1=i; ind2=j;break;} for (i=1;i<N;i++){ T=T*m[i];} for ( i=0;i<N;i++){ M[i]=T/m[i];} for (i=0;i<N;i++){ Y[i]=1; do { if ((M[i]*Y[i]-1)%m[i]!=0){ Y[i]++ ;} } while ((M[i]*Y[i]-1)%m[i]!=0); } for (i=0;i<N;i++){ x=((r[i]*M[i]*Y[i])+x);} int b=x; x=x%T; if ( x<0){ x=x+T;} if (T<=x ){ x=x%T; } do { int rang = JOptionPane.showOptionDialog(null, "Preciser type solution !","Les solution !",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,Question,Question[ 2]); if (rang==0){ h=Integer.parseInt(JOptionPane.showInputDialog(null,"Veuillez saisi un valeur initial","Saisir",JOptionPane.INFORMATION_MESSAGE)); p=x+(T*h); JOptionPane.showMessageDialog(null,"la solution particulier est: x"+h+"="+p , "Solution",JOptionPane.INFORMATION_MESSAGE);} else if (rang==1){ JOptionPane.showMessageDialog(null,"les solution est x="+b+"["+T+"] ou x="+x+"["+T+"]", "les solutions du system",JOptionPane.INFORMATION_MESSAGE);} rep4=JOptionPane.showConfirmDialog(null," Voulez vous trouvez d'autres solution ou Solution Generale ","continue",JOptionPane.OK_CANCEL_OPTION);} while (rep4==JOptionPane.OK_OPTION); } else {JOptionPane.showMessageDialog(null," les modulo m["+(ind1+1)+"]="+nb2+" et m["+(ind2+1 )+"]="+nb1+" ne sont pas premiers entre eux"," desole",JOptionPane.ERROR_MESSAGE); } } else if (cpt1!=0) {JOptionPane.showMessageDialog(null," Desole, vous n'avez pas voulu reassir votre module. Donc votre modulo est inferieur à 2"," desole",JOptionPane.ERROR_MESSAGE); }} public static void main(String[] args){ chinois Theormechinois= new chinois(); int rep1; do { Theormechinois.nomequation(); Theormechinois.liremodulo(); Theormechinois.soultion(); rep1=JOptionPane.showConfirmDialog(null,"voulez vous revenir au programmer"," Theoreme de Reste Chinois ",JOptionPane.OK_CANCEL_OPTION);} while (rep1==JOptionPane.OK_OPTION); } } -2- E:\Projet 2012\Langage\Trois langage Java, JavaScprit et C++.java vendredi 30 décembre 2011 20:46 *=====================================================================================================* /*================================================================================================ Universite de Djibouti Theoreme des restes chinois ( Projet Technique Numerique ) Cree par: Ibrahim Abdallah Ali Licence Math/Fond 2011/2012 Dini Ahmed Mohamed ************* Langage Java Script ********** ===============================================================================================*/ *====================================================================================================* <HTML> <HEAD> <TITLE> Theoreme des reste chinois</TITLE> <HEAD> <SCRIPT LANGUAGE="JavaScript"> do { var var var var var var var var N=prompt("veuillez saisi la dimension N="," "); A=new Array(N) m=new Array(N) Y=new Array(N) M=new Array(N) a=new Array(N) cpt1=0; cpt4=0; for (var i =0;i<N;i++){ do{ m[i]=parseInt(prompt( " m["+i+"]="," ")); if (m[i]<2){ var reponse1 = confirm("veuillez reassisir svp") if (reponse1){ reponse1="true";} else{ cpt1++;break;} } } while(m[i]<2 & reponse1=="true"); A[i]=parseInt(prompt( " a["+i+"]="," ")); } if ( cpt1==0 ){ for(j=0; j<N; j++){ for(i=0; i<N; i++){ if ( j!=i){ PGCD=m[j]; f=m[i]; if ( PGCD> 0 && f > 0 ) { while ( PGCD != f ) { if ( PGCD< f ) f = f - PGCD; else PGCD = PGCD - f; } if ( PGCD!=1) { cpt4++; var nb1=m[j]; } } } } if (cpt4==0){ var nb2=m[i]; var T=m[0]; for (var i=1;i<N;i++){ T=T*m[i];} for ( var i=0;i<N;i++){ M[i]=T/m[i];} for (var i=0;i<N;i++){ var q=1; do { if ((M[i]*q-1)%m[i]==0){ Y[i]=q ;} q++;} while (((M[i]*Y[i]-1)%m[i]!=0));} var x=0; for (var i=0;i<N;i++){ -3- var ind1=i; var ind2=j;break;} E:\Projet 2012\Langage\Trois langage Java, JavaScprit et C++.java vendredi 30 décembre 2011 20:46 x=(A[i]*M[i]*Y[i])+x;} var b=x; x=x%T; if ( x<0){ x=x+T;} if (T<=x ){ x=x%T;} alert("les solution sont x="+b+"["+T+"] ou x="+x+"["+T+"]");} else alert("les modulo m["+(ind1+1)+"]="+nb2+" et m["+(ind2+1)+"]="+nb1+" ne sont pas premiers entre eux") } else if (cpt1!=0) {alert(" Desole, vous n'avez pas voulu reassir votre module. Donc votre modulo est inferieur à 2")} var reponse4=confirm(" voulez vous revenir au programme ", "Theoreme de reste chinois") if (reponse4){ reponse4="true";} else { break;} } while(reponse4="true"); </SCRIPT> </BODY> </HTML> -4- E:\Projet 2012\Langage\Trois langage Java, JavaScprit et C++.java vendredi 30 décembre 2011 20:46 *=====================================================================================================* /*================================================================================================ Universite de Djibouti Theoreme des restes chinois ( Projet Technique Numerique ) Cree par: Ibrahim Abdallah Ali Licence Math/Fond 2011/2012 Dini Ahmed Mohamed ************* Langage C++ ********** ===============================================================================================*/ *====================================================================================================* #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int N,T,x,j,p,h,PGCD,f, i,Z; int rep1,rep2,rep3,rep4,rep5,rep6; int cpt1,cpt4; int nb1; int nb2; int ind1; int ind2; do { cpt4=0; x=0;Z=2; cout << " bienvenue au programme theoreme de reste chinois \n"; cout<< " veuillez saisi les nombre d'equation souhaitez-vous \n" << "N= "; cin>> N; int A [N]; int m[N]; int Y[N]; int M[N]; int w[N][Z]; cout<< " veuillez saisi les elements du equation \n"; for ( i =0;i<N;i++){ do{ cout << "m["<<(i+1)<<"]= "; cin>> m[i]; if ( m[i]<2){ cout<< " vous venez de saisir un module < 2 \n"; cout << "veuillez resaissi votre nombre \n"; }} while (m[i]<2); cout << "a["<<(i+1)<<"]= "; cin>> A[i]; cout<< " \n"; } cout<< " \n"; cout<< " \n"; for(j=0; j<N; j++){ for(i=0; i<N; i++){ if ( j!=i){ PGCD=m[j]; f=m[i]; if ( PGCD> 0 && f > 0 ) { while ( PGCD != f ) { if ( PGCD< f ) f = f - PGCD; else PGCD = PGCD - f; } if ( PGCD!=1) {cpt4++; nb1=m[j]; nb2=m[i]; if (cpt4==0){ T=m[0]; for (i=1;i<N;i++){ T=T*m[i];} for ( i=0;i<N;i++){ M[i]=T/m[i];} for (i=0;i<N;i++){ int q=1; -5- ind1=i; ind2=j; break;}}}}} E:\Projet 2012\Langage\Trois langage Java, JavaScprit et C++.java vendredi 30 décembre 2011 20:46 do { if ((M[i]*q-1)%m[i]==0){ Y[i]=q ;} q++;} while (((M[i]*Y[i]-1)%m[i]!=0));} for (i=0;i<N;i++){ x=((A[i]*M[i]*Y[i])+x); } int b=x; x=x%T; if ( x<0){ x=x+T;} if (T<=x ){ x=x%T; } for(i=0; i<N; i++){ for(j=0;j<Z;j++){ if (j==0){ w[i][j]=A[i];} else if (j==1) { w[i][j]=m[i];}}} cout<< " votre systeme de congruence est: \n"; for(i=0; i<N; i++){ for(j=0; j<2; j++){ if (j==0) cout<< " x= "<<w[i][j]; else cout << "["<< w[i][j]<<"]"; } cout << " \n";} cout <<"\n"; cout << " les solutions de votre systeme de congruence est \n " << "x="<< b<<"["<<T<<"] ou x="<< x<<"["<<T<<"] \n"; } else { cout << " desole,les module m["<<(ind1+1)<<"]="<<nb2<<" et m["<<(ind2+1)<<"]="<<nb1<<" ne sont pas premier entre eux \n"; } cout<<" \n"<< " \n"; cout<< " voulez vous revenir au programmer\n"; cout << " taper 1 pour revenir rep="; cin>> rep6;} while(rep6==1); system("PAUSE"); } -6-