Informatică, întrebare adresată de PuiPrajit, 8 ani în urmă

Se citește de la tastatură un număr natural x cu maxim nouă cifre. Să se afișeze toate numerele care se obțin
prin eliminarea pe rând a câte unei singure cifre din x, precum și cel mai mare dintre aceste numere.
Exemplu: Pentru x=547621 se vor afișa: 54762, 54761, 54721, 54621, 57621, 47621 maxim 57621.

Răspunsuri la întrebare

Răspuns de uleiaalex
0
Sper ca te-am ajutat. L-am facut in C++ cu vector, se poate si fara vector dar e putin mai complicat.  In C# l-am facut in cateva minute pe cel cu vector in C++ mi-a dat batai de cap transformari si altele.

#include <iostream>
#include <string>#include <sstream>
using namespace std;
int Pow(int nr,int power)
{
   int tempNr = 1;
   for (int i = 1; i <= power; i++)
   {
       tempNr*=nr;
   }
   return tempNr;
}
int main()
{
  int n = 0;
  cin>>n;
  int workN = n;
  int max = 0;
  
  string Result;          // string which will contain the result
  ostringstream convert;   // stream used for the conversion
  convert << n;      // insert the textual representation of n in the                                                                   characters in the stream

  Result = convert.str(); // set 'Result' to the contents of the stream
 
  int length = Result.length();
  int v [length];
  for (int i = 0; i < length; i++)
  {
      v[i] = workN / Pow(10, length - 1 - i) % 10;
  }
  int j = 0;
  for (int i = 0; i < length; i++)
  {
      int tempNumber = 0;
      int countPas = 0;
      for (int k = 0; k < length; k++)
      {
        if (j != k)
        {
            tempNumber = tempNumber*10 + v[k];
            countPas++;
        }
       } 
   j++;
    if (tempNumber > max)
        max = tempNumber;
    cout<<tempNumber<<endl;
  }
   cout<<endl;
  cout<<"Cel mai mare numar este: " << max;
}

Ai aici si varianta fara vector in C++:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int Pow(int nr,int power)
{
   int tempNr = 1;
   for (int i = 1; i <= power; i++)
   {
       tempNr*=nr;
   }
   return tempNr;
}
string countSystem(int nr)
{
  //nr - number to be converted to a string
  string Result;          // string which will contain the result
  ostringstream convert;   // stream used for the conversion
  convert << nr;      // insert the textual representation of 'Number' in the characters in the stream
  Result = convert.str(); // set 'Result' to the contents of the stream
    return  Result;
}
int main()
{
  int n = 0;
  cin>>n;
  int workN = n;
  int max = 0;
  int length = countSystem(n).length();
  for (int i = 1; i <= length; i++)
    {
        int nrT = workN % Pow(10, i);
        workN /= Pow(10, i);
        int tempNr = workN;
        int tempCont = 0;
        for (int j = 0; j < countSystem(nrT).length() - 1; j++)
        {
            tempCont = tempCont*10 + (nrT / Pow(10, countSystem(nrT).length() -i + j) % 10);       
         }
        if (tempCont > 0)
        {
            for (int k = 1; k <= countSystem(tempCont).length(); k++)
            {
                tempNr = tempNr * 10 + (tempCont % 10);
                tempCont /= 10;
            }
        }
        if (countSystem(tempNr).length()<countSystem(n).length()-1)
            tempNr = tempNr * 10 + (tempCont % 10);
        cout<<tempNr<<endl;
        if (tempNr > max)
            max = tempNr;
        workN = n;
    }
    cout<<"Cel mai mare este: "<< max;
  }
Alte întrebări interesante