Ich habe Probleme beim Versuch, ein Problem mit meinem Code zu beheben, wenn ich den zweitkleinsten einer zufälligen Anzahl von Eingängen gefunden habe. Immer wenn ich zwei oder mehr Zahlen mit dem gleichen Wert nach jedem und gefolgt von verschiedenen höheren Zahlen (zB: 1 1 3 4) eingeben (zB 3 3 3 4 5), bekomme ich immer den Fehler, obwohl das nicht das ist, was ich will das Programm zu tun. Alle Hinweise würden wirklich geschätzt werden. Danke!Zweiter Kleinster Programm-Eingang
#include <iostream>
#include <vector>
#include <stdexcept>
using namespace std;
int main()
{
double smallest, second_Smallest,a;
vector<double> v(0);
cout << "Enter the numbers in random order: " << endl;
try
{
while (cin >> a)
{
v.push_back(a);
}
if(v[0] < v[1])
{
smallest = v[0];
second_Smallest = v[1];
}
else
{
smallest = v[1];
second_Smallest = v[0];
}
for(int i = 2; i < v.size(); i++)
{
if (smallest > v[i])
{
second_Smallest = smallest;
smallest = v[i];
}
else if (v[i] < second_Smallest)
{
second_Smallest = v[i];
}
}
if (smallest == second_Smallest)
{
throw runtime_error("no second smallest");
}
else
{
cout << "The second smallest number is " << second_Smallest << endl;
}
}
catch (runtime_error)
{
cout << "error: no second smallest " << endl;
}
return 0;
}
Speichern Sie die Eingabe in einen Satz. Das zweite Element wird das zweitkleinste sein. – NathanOliver
schlagen Sie nicht für solche trivialen Probleme vor. Es wird unnötig die Verarbeitung verlangsamen. – user2407394