IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.
Avatar
rouman95
Člen
Avatar
rouman95:23.12.2016 14:53

Zdravím, už začínám být zoufalý a nevím na koho se obrátit. Mám zadán projekt do školy, ve kterém je třeba načíst údaje z .csv souboru, kde zaznamenaní zaměstnanci a jejich doba strávená v práci. Pokud je tam některý vícekrát, tak se již existujícímu zaměstnanci přičte odpracovaná doba, plat, daně a navýší se počet dnů v práci. Jakmile je vše načteno, tak to seřadím přes klasický selection sort (metoda) a na základě uživatelova rozhodnutí to vypíšu buď do html, či csv.

Problém je bohužel v tom, že se mi nedaří zcela správně zapsat jednotlivé údaje do mého pole struktur (zamestnanci). Nemohl by prosím někdo poradit?

main - http://www.itnetwork.cz/dev-lighter/836
vstup - http://www.itnetwork.cz/dev-lighter/837

 
Odpovědět
23.12.2016 14:53
Avatar
rouman95
Člen
Avatar
rouman95:23.12.2016 15:50

Problém bude především v této části

while (getline(vstup, slovo, ';'))
        {
            if (slovo == "pondeli" || slovo == "utery" || slovo == "streda" || slovo == "ctvrtek" || slovo == "patek")
            {
                cout << "den" << endl;
            }
            else
            {
                string docasne_cislo=slovo.substr(0,2);
                string docasne_cislo2=slovo.substr(3,2);
                if(isdigit(slovo[0]))
                {
                    minuty=(atoi(docasne_cislo.c_str())*60)+atoi(docasne_cislo2.c_str());
                }
                vyskyt = overeni_vyskytu(zamestnanci, slovo, pocet);
                if (vyskyt == -1)
                {
                    if(udaj==0)
                    {
                        zamestnanci[index].jmeno = slovo;
                    }
                    if(udaj==1)
                    {
                        zamestnanci[index].prijmeni = slovo;
                    }
                    if(udaj==2)
                    {
                        zamestnanci[index].odpracMin = minuty/60.;
                        zamestnanci[index].plat = zamestnanci[index].odpracMin * 65;
                        zamestnanci[index].dane = zamestnanci[index].plat * 0.21;
                        zamestnanci[index].vyplata = zamestnanci[index].plat - zamestnanci[index].dane;
                        zamestnanci[index].dny = 1;
                        udaj=0;
                        index++;
                    }
                }
                else
                {
                    if(udaj==2)
                    {
                        zamestnanci[vyskyt].odpracMin += minuty/60.;
                        zamestnanci[vyskyt].plat += zamestnanci[index].odpracMin * 65 / 60.;
                        zamestnanci[vyskyt].dane += zamestnanci[index].plat * 0.21;
                        zamestnanci[vyskyt].vyplata += zamestnanci[index].plat - zamestnanci[index].dane;
                        zamestnanci[vyskyt].dny += 1;
                        udaj=0;
                    }
                }
                udaj++;
            }
        }

Metoda ověření výskytu -

int overeni_vyskytu(zamestnanec* zamestnanci, string jmeno, int velikost_pole)
{
    int pozice = -1;
    for (int i = 0; i < velikost_pole; i++)
    {
        if (zamestnanci[i].jmeno.c_str() == jmeno.c_str())
        {
            pozice = i;
        }
    }
    return pozice;
}
 
Nahoru Odpovědět
23.12.2016 15:50
Avatar
Odpovídá na rouman95
Libor Šimo (libcosenior):23.12.2016 16:43

Preco nenapises: poslem 1000 kc za ...?

Nahoru Odpovědět
23.12.2016 16:43
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.