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
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;
}
#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
Limba română,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Chimie,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă