Hjälp med C++ skoluppgift
Hej alla!
Jag har fått i skoluppgift att skriva ett program som läser temperatursensorer. Sensorerna finns på olika våningar i ett hus, det finns 6 sensorer.
Följande värden skall läsas in: rum, våning och hur många grader som uppmättes vid mättillfället.
Vad vi efterfrågar användaren:
Rum:
Våning:
Antal grader vid mät-tillfället:
Indata till programmet sparas lämpligast i en vektor eller en fältvariabel.
Mätområden: under 0 grader, 0 till 10 grader, 11 till 20 grader, 21 till 30 grader och över 30 grader.
När man läst in alla sensorers värden ska resultatet sorteras innan det skrivs ut, vid utskrift skall alla
resultat finnas med hur många temperaturer som ligger inom området.
Vid inmatningen skall alltså inte vara i storleksordning, det ska vara möjligt att skriva in olika
temperaturvärden, det vill säga det skall gå att börja med 20 grader, sen -1 och när alla värden har
matats in, då skall sortering ske av ditt program.
Sorteringen sker per temperatur.
Programexempel:
Rum: Kök
Våning: 2
Antal grader vid mät-tillfälle: -2
(upprepa frågan 5 gånger till)
Efter sortering:
Rum Våning Temperatur
Kök vån 2 -2 grader
1 sensor har registrerat värden under 0 grader.
Toalett vån 2 13 grader
Sovrum vån 2 20 grader
2 sensorer har registrerat värden mellan 11 och 20 grader.
Toalett vån 1 22 grader
Tvättstuga vån 1 23 grader
Vardagsrum vån 2 22 grader
3 sensorer har registrerat värden mellan 21 och 30 grader
Här är min kod, har fått den att funka med vet inte hur jag ska göra för att skriva ut de unerstruckna raderana i programexmplet ovanför.. har tänkt mig variabler för olika mättområdena som ökar när en temperatur i samma område läggs in i vektorn.. med if-satser men vet inte hur jag ska börja.. sedan är det utskriften av dessa rader också..hur ska jag göra? All hjälp tas emot med öppen famn! Tack alla på förhand..
#include <iostream>
#include <string>
#include <vector>
#include <tuple>
#include <algorithm>
class Temperatur
{
public:
std::string rum;
std::vector<std::tuple<std::string, int, int>> sensor;
int temp, vån;
void Info(void)
{
for (int i = 0; i < 6; i++)
{
std::cout<<"Rum: ";
std::cin>>rum;
std::cout<<"V\x86ning: ";
std::cin>>vån;
std::cout<<"Antal grader vid m\x84t-tillf\x84llet: ";
std::cin>>temp;
sensor.push_back(make_tuple(rum, vån, temp));
//sorterar efter temperatur
std::sort(sensor.begin(), sensor.end(), [](const std::tuple<std::string, int, int>& a,
const std::tuple<std::string, int, int>& b) -> bool
{
return std::get<2>(a) < std::get<2>(b);
});
}
void utskrift()
{
std::cout << std::setiosflags(std::ios::left);
std::cout << std::setw(30) << "Rum" << std::setw(30) << "V\x86ning " << std::setw(30)
<< "Temperatur"<< std::endl<<std::endl;
for (auto x : sensor )
{
std::cout<<std::setw(30)<<std::get<0>(x)<<"v\x86n "<<std::get<1>(x)
<<" "<<std::get<2>(x)<<" grader"<< std::endl;
}
};
int main(void)
{
Temperatur t;
t.Info();
t.utskrift();
return 0;
}