Informatică, întrebare adresată de mickey213, 9 ani în urmă

C++

Se dau două numere naturale a,b cu maxim 9 cifre.
a) Să se determine cifrele distincte comune numerelor a şi b.
b) Să se afişeze numărul cel mai mare format din toate cifrele lui a şi b
Exemplu : pentru a=2115 b=29025 se va afişa
a) 2 5
b) 955222110

Răspunsuri la întrebare

Răspuns de antonii
1
#include<iostream>
#include<math.h>
#include<string>
using namespace std;
int GetSize(int Nr);
int GetNrByPlace(int Nr,int Loc);

int main(){
 long double a,b, WholeNr,MaxVal=0,NrPos=1;
string FinNr;

cin>>a>>b;

 cout<<"Nr. comune sunt:";
for(int x=1;x<=GetSize(a);x++){

      for(int y=1;y<=GetSize(b);y++){
            if(GetNrByPlace(a,x)==GetNrByPlace(b,y)) cout<<GetNrByPlace(b,y)<<" ";
 }

}

cout<<endl;

//===========Part 2============
 WholeNr=a*pow(10,((double)GetSize(b)))+b;
while(WholeNr!=0 && WholeNr>0){

        for(int x=1;x<=GetSize(WholeNr);x++){

                 if(GetNrByPlace(WholeNr,x)>MaxVal){
                                  MaxVal=GetNrByPlace(WholeNr,x); NrPos=x;
                   }
        }
        if(MaxVal!=0) FinNr=FinNr+to_string((long double)MaxVal);
        WholeNr-=MaxVal*pow(10,(double)NrPos-1);
        MaxVal=NrPos=0;
 }
cout<<"Max. Value is: "<<FinNr<<endl;

system("pause");
return 0;
}

int GetSize(int Nr){
    int Size=0;

     while(Nr!=0){

          Size++;
Nr/=10;
    }
 return Size;
}

int GetNrByPlace(int Nr,int Loc){
      int Count=0;
      while(Nr!=0){
          Count++;

           if(Count==Loc) {
                 return Nr%10;
                  continue;
            }

       Nr/=10;

    }
}

mickey213: Ai putea face o rezolvare mai simpla, pentru clasa a 9 a ??
antonii: nu nu cred
AntiEaglesDavids: incearca si varianta mea: http://pastebin.com/GbEhNDTW
AntiEaglesDavids: poti inlocui functia sort cu o sortare data de profu tau
Alte întrebări interesante