dodání ihned! nové
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
BF

Diskuze: Špatně načtený vstup

Aktivity
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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.