Exercice important>>>>>

porkapetan Messages postés 2 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 19 février 2004 - 16 févr. 2004 à 08:27
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 16 févr. 2004 à 11:35
salut
en fait je bloque sur un programme
je prends deux nombres de trois chiffres
et je les additionne et les multiplie
je dois ensuite verifier si le resultat de l'addition es l'inverse du resultat de la multiplication ou vice versa.
les chiffres sont pri de facon aleatoire par l'ordi
j'ai fais un prog mais je n'arrive pas a l'optimiser
je l'ai fais en java je le changerais en c++ ensuite car c presque identique
si il y a des candidats merci
import java.io.*;

public class nombrePalindrome {

    public static void Calcule() 

{
        int [] A = new int [999];
int [] B = new int [999];
int [] tabMult= new int [100];
int [] tabAdd = new int [100];
int MultM,MultR,longAdd,longMult;
int AddM, AddR;
int Add,Mult=0,k=0,m=0,n,p,longeur=0;
 boolean  resultat;

 for (int i=0 ; i<999 ;i ++)
    {
 
  for (int j=0 ; j<999 ;j ++)
      {
  AddR=1;
          MultR=1;
  Add = i+j;
  Mult = i*j;
  n=0;
          p=0;
  longMult = 0;
          longAdd = 0;
  resultat = false;
      
          while(AddR>0)
               {

        AddM = (Add % 10);
AddR = (Add / 10);
 		Add = AddR;
tabAdd[n]= AddM;
//System.out.print("" + tabAdd[n]);
n++;
                longAdd++;
                }
  while (MultR>0)
        {
MultM = (Mult  % 10);
MultR = (Mult  / 10);
 		Mult  = MultR;
tabMult [p]= MultM;
p++;
longMult ++;
}
            if  ( longMult==longAdd)
                 {
                  resultat=compare (tabAdd,tabMult,longMult);
  longMult = 0;
                  longAdd = 0;
                 }
            if (resultat == true)
                  {
                  A[k++]=i;
  B[m++]=j;
  System.out.println("Resulat i:" + i);
  System.out.println("Resulat j:" + j);
          }          

             }// fin for2
    }// fin for1
}// fin fonction

public static boolean compare ( int [] tabAdd,int [] tabMult,int longeur){
int index=0;
    while (index<longeur){
if (tabAdd[index]==tabMult[longeur-1 - index])
   	   {
   	   index++;
  	   }else{
    	   return false;
       	  } 
  }// fin de While
   return true;
} 

1 réponse

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 févr. 2004 à 11:35
je ne comprends pas exactement ton problème: est-il de passer au c++ ou bien d'optimiser ton programme?
je te mets un truc qui fait un peu des 2

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char mult[10], add[10];

int main()
{
    for(int i = 0; i < 1000; i++)
        for(int j = 0; j < 1000; j++)
        {
            // i + j ne peut pas avoir 4 chiffres
            if(i * j < 10000)
            {
                itoa(i + j, add, 10);
                itoa(i * j, mult, 10);
                strrev(mult);
                if(!strcmp(add, mult))
                    printf("(%d, %d)\n", i, j);
            }
        }
}
0
Rejoignez-nous