C++ :: Aufgabe #237
3 Lösungen
Array von Zahlen in die nächstgelegene durch 5 teilbare Zahl umwandeln
Anfänger - C++
von Gustl
- 08.05.2019 um 20:08 Uhr
Schreibe ein Programm welches aus einem Array von Dezimalzahlen diese Zahlen in die nächstgelegene durch 5 teilbare Zahl umwandeln.
Etwa so:
Etwa so:
Konsolenausgabe:
7.1 => 5
8.4 => 10
-2.4 => 0
-2.6 => -5
-8.3 => -10
Lösungen:
float fMyFloor = floor(*it / 5); //ganzzahlige Division, über floor IMMER abgerundet
float fRest = *it - (fMyFloor * 5); //Modulo-Rest eines Float somit errechnet
if (fRest <2.5) {*it = *it - fRest;} //goldene Mitte 2.5 -> vorher abrunden
else {*it=*it + (5 - fRest);} //.. ansonsten aufrunden
#include<iostream>
#include<vector>
#include<sstream>
#include<tgmath.h>
using namespace std;
bool IsFloat( string myString ) {
std::istringstream iss(myString);
float f;
iss >> noskipws >> f; // noskipws considers leading whitespace invalid
// Check the entire string was consumed and if either failbit or badbit is set
return iss.eof() && !iss.fail();
}
int main() {
cout << "5-Teiler-Programm - bitte geben Sie Zahlen ein, bis Ihre Zahlenfolge durch ein # beendet wird.\n"
"Anschliessend erfolgt die Berechnung.\n";
vector<float> fltVect{};
while (1) {
string Input;
cout << ">>";
cin >> Input;
if (IsFloat(Input))
{
fltVect.push_back(stof(Input));
}
else if (Input == "#")
{
break;
}
else
{
cout << "Ungültige Eingabe. Zum Beenden der Eingabe genuegt ein #.";
}
}
cout << "Ausgabe Inhalt:\n";
for (std::vector<float>::iterator it = fltVect.begin() ; it != fltVect.end(); ++it)
{
float fMyFloor = floor(*it / 5);
float fRest = *it - (fMyFloor * 5);
if (fRest <2.5) {*it = *it - fRest;}
else {*it = *it + (5 - fRest);}
cout << *it << "\n";
}
}# include <iostream>
#include <math.h>
using namespace std;
int main()
{
int array [5] = { 0 };
for (int counter = 0; counter < 5; counter++)
{
double input = 0;
cout << "Input " << counter+1<<": ";
cin >> input;
array[counter] = round(input);
if (array[counter] % 5 != 0)
{
for (int i = -2; i <= 2; i++)
{
if ((array[counter]+i) % 5 == 0)
{
array[counter] = array[counter] + i;
}
}
}
}
for (int i = 0; i < 5; i++)
{
cout << " " << array[i];
}
}