• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C++] ocena, ew. pomoc w poprawie kodu, klasy

VPS Starter Arubacloud
0 głosów
208 wizyt
pytanie zadane 14 maja 2016 w C i C++ przez 9au5a Początkujący (280 p.)
edycja 14 maja 2016 przez 9au5a

Witam :)

Mam program który wczytuje dni tygodnia wraz z wartoscią liczbową (ignoruje złe nazwy dnia, ale akceptuje skrócenia; przy złej liczbie wyrzuca błąd), i zapisuje ta wartosc do odpowiedniego vecotora. Wlasciwie to brzmi absolutnie prymitywnie, program napisany, działa, ale teraz mam napisac dokladnie to samo, używając z góry podanej "konstrukcji" klasy, oto ona:

class Name_values 
{
public:
  Name_values(); // Standardkonstruktor 
  Name_values( string, vector<int> ); // Konstruktor
  void add_value( int ); // weiteren Wert speichern (zapisanie następnej wartości)
  void print_all( ) const; // 
  string get_name( ) const; // 
private:
  string name;
  vector<int> values;
};

Do tego program ma na koniec pokazac takze średnią arytmetyczna każdego dnia. (i na koniec pokazac ile było złych nazw dni).

No okey,program napisany, działa, ale jego wygląd...i ogólnie działanie..

-->konstruktor standardowy, nie mam pojęcia czy można tak robić, ale nie mam póki co (a nie zaczełam tego dziś) innych pomysłów

-->konstruktor ze string i vector<int> nie jest u mnie wgl używany

Oto plik main:

/* 
 * File:   main.cpp
 * Author: Paula
 * Name_values, Tag und wert eingeben, durschnitt berechnen, alles zeigen
 * Created on 6. Mai 2016, 22:47
 */

#include "headers.h"
#include "name_values.h"

int main() 
try {
    vector <Name_values> week{7}; //czy tak to zapisac?

    string temp_day{"noday"};
    int temp_value{0};
    int bad_day_name{0};
    bool found{0};//do sprawdzania poprawnosci nazwy dnia
    
    while (cin >> temp_day && temp_day!="q"  )
    {
        found=false; 
 
        cin >> temp_value;
        is_number(); 
        
        if(temp_day.size()==1)  //do uniknięcia niejednoznacznych nazw dni np "P"
        {
            cout << "Zu kurzer Name!" << endl; //
            bad_day_name++;
            continue;
        }
        
        for (unsigned int i{0}; i<7; i++) //sprawdza podnay dzien z kazdym w klasie
            if(confer(temp_day, week[i].get_name()))
            {
                week[i].add_value(temp_value); //jesli jakis był dobry to dodaje podana wartosc
                found=true;
            }
        if(!found)
            bad_day_name++;
    }
    
    for (unsigned int i{0}; i<7; i++)
        week[i].print_all();

   //pokazuje ile złych dni podano        
    if(bad_day_name)
    {
        if(bad_day_name==1)
            cout <<endl << "Es wurde " << bad_day_name <<" Wert wegen unzulässigem Tag abgelehnten.";
        else if (bad_day_name>1)   
            cout <<endl << "Es wurden " << bad_day_name <<" Werte wegen unzulässigem Tag abgelehnten.";
    }  
   return 0;
}

catch( exception& e ) 
{
    cerr << endl <<"FEHLER: " << e.what();
    return -2;
}

void error ( string s ) { 
    throw std::runtime_error{ s }; 
}
void is_number()
{
    if(cin.fail()) //method fail fuer cin
      error("Eigegebener Wert ist keine Zahl");
}
bool confer(string temp, string name)
{
    for (unsigned int i{0};i<temp.size(); i++)
    {
        if(temp[i]!=name[i])
            return false;
    }
    return true;
    
}

 klasa Name_values:
#include "name_values.h"
// wiec sobie pomyślałam, że będzie przecież ok, jak po prostu przy
// utworzeniu siedmiu objektów od razu każdy z nich dostanie odpowiednią nazwe dnia

Name_values::Name_values() : summe{0}
{
//    values{}; 
    static int i{1};
    switch (i)
    {
        case 1: name="Montag"; break;
        case 2: name="Dienstag"; break;
        case 3: name="Mittwoch"; break;
        case 4: name="Donnerstag"; break;
        case 5: name="Freitag"; break;
        case 6: name="Samstag"; break;
        case 7: name="Sonntag"; break;
        default: error("Name_values::Name_values(): Max 7 Tage!");
    }
    i++;
}
 //dalej nie wiem czy go wgl potrzebuje, jeśli tak to do czego
Name_values::Name_values(string n, vector<int> v)
{
    name=n;
    values=v;
}
void Name_values::add_value(int value)
//nie jestem pewna czy jest to poprawne w tej funkcji od razu obliczac sumę,
//czy może lepsza byłąby nowa funkcja?
{
    summe+=value;
    values.push_back(value);
}
void Name_values::print_all() const
{
    cout << endl << setw(10)<<name << " :";
    for (unsigned int i{0}; i<values.size();i++)
        cout << "   " << values[i];
    if (summe)
        cout << " Durchschnitt: " <<summe/values.size();
 
}
string Name_values::get_name() const
{
    return name;
}

Przykładowe działanie:

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 130 wizyt
pytanie zadane 19 marca 2019 w C i C++ przez Poczprogramista123 Bywalec (2,900 p.)
0 głosów
2 odpowiedzi 231 wizyt
pytanie zadane 7 kwietnia 2017 w Nasze projekty przez ThePatrykOOO Dyskutant (8,380 p.)
–1 głos
1 odpowiedź 157 wizyt
pytanie zadane 14 kwietnia 2017 w Nasze projekty przez Paweł Sypek Początkujący (440 p.)

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...