Anonymní profil Deivson – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Deivson – Programujte.comAnonymní profil Deivson – Programujte.com

 

Příspěvky odeslané z IP adresy 90.177.86.–

C / C++ › Funkce na nejčastěji se opak…
21. 12. 2013   #185521

#1 Deivson U toho csv souboru Jídelníček se mi to zde špatně zkopírovalo. Správně mají být informace o jednom jídle na jednom řádku.

C / C++ › Funkce na nejčastěji se opak…
21. 12. 2013   #185520

   

~~Ahoj, mám následující zadání:


~~Menza vaří 5 obědů denně, každé jídlo má svou cenu, ID, popis a energetickou hodnotu. V CSV souboru jsou uloženy jídelníčky pro dny v určitém období. Pro konkrétní obědy strávníka, určené v jiném CSV souboru způsobem datum, jídlo číslo X, zapište do výstupního souboru podle voleb z klávesnice pro zadané období:

přehled všech odebraných jídel, jejich kumulativní cenu a celkovou cenu a počet jídel, energetickou hodnotu odebraných jídel jednotlivě, kumulativně a celkově a průměrnou energetickou hodnotu z odebraných jídel, nejčastěji se opakující odebrané jídlo. Berte v úvahu, že strávník nemusí odebrat stravu každý den. ID určuje jednoznacně o jaké jídlo se jedná, využijte toho při určení opakujících se jídel.


~~Poznámky: jména vstupních a výstupních souboru musí být možno zadat v bežící aplikaci (nesmí být nemenitelne zadána jen ve zdrojovém kódu programu), nepoužívejte diakritiku v názvech souborů, odevzdávejte .zip archiv s požadovaným obsahem, nevkládejte do odevzdávaného souboru balast (.obj/.pch/.pdb soubory a další soubory, které se ze zdrojových kódů vygenerují při překladu), velikost odevzdávaného archinu nesmí překročit 7 MiB (delší soubor bude odmítnut).


Můj problém: Nevím si vůbec rady s vytvořením funkce na nejčastěji se opakující odebrané jídlo. Zde přikládům csv soubor s vytvořeným jídelníčkem a mými objednávkami a můj zdrojový kód:

CSV soubor Jídelníček:

1,"Spanelsky ptacek /hovezi, vejce, uzenina,okurek/, dusena ryze",41,215 2,"Perstynsky veprovy platek /uzenina,zampiony/, testovinova ryze",37,300 3,"Zapecene testoviny se spenatem a uzenym, okurek",37,250 4,"1ks varene vejce, fazolky na smetane, varene brambory",36,350 5,"Veprovy platek zapeceny s nivou a anglickou slaninou, smazene hranolky",51,500 6,"Kureci smes s bylinkovou omackou, testoviny",47,400 7,"Zapekane palacinky s tvarohem",39,450 8,"Soulet s hrachem a zeleninou, okurek",22,410 9,"Jizersky drak /hovezi,cesnek/, smazene hranolky",50,1000 10,"Veprove kostky po vidensku /cibule/, dusena ryze",35,600 11,"Uzene maso, krenová omacka, houskove knedliky",39,700 12,"Bramborory gulas s fazolovymi lusky, chleb Moskva",39,550 13,"Mamincino kure /testoviny,jatra,zampiony/",39,900 14,"Pekingske maso /veprove,zampiony,solamyl/, kari ryze",37,600 15,"Sekany veprovy rizek s celerem, mastene brambory",40,350 16,"Kynuty makovy zavin",33,200 17,"Hovezi varene /zadni/, duseny spenat, varene brambory",49,850 18,"Ohnive maso /veprove,leco,feferony/, spagety",36,1000 19,"Pecena krkovicka, strapacky se zelim",40,325 20,"Zampionova cina /zampiony,paprika,rajcata/, dusena ryze",30,450

CSV soubor Můj výběr:

1.12.2013,3
2.12.2013,5
4.12.2013,10

Zdrojový kód:


#include <iostream>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <string>

using namespace std;

typedef struct
{
    int id;
    string nazev;
    int cena;
    int energie;

}jidlo;

typedef struct
{
    string datum;
    int id;
}objednani;
/** \brief Vypocet druhe mocniny
 *
 * \param n Cislo, ktere mocnime
 * \return Mocnina cisla n
 *
 * Funkce pro vypocet druhe mocniny zadaneho cisla
 */
int mocnina(int n)
{
    return n*n;
}

bool prevedeni(string a,int&b)
{
    istringstream iss(a);
    iss>>b;
    return iss.good();

}

jidlo *nacitani(string nazev_souboru,int &velikost_pole)
{
   ifstream soubor_jidel(nazev_souboru.c_str());
   string obed;
   int pozice=0;
   for(velikost_pole=0;;velikost_pole++)
   {
       getline(soubor_jidel,obed);
       if(soubor_jidel.eof())
       {
           break;
       }
       if(obed.length()==0)
       {
           cout<<"Nespravny vstup."<<endl;
       }


    }

   jidlo *pole=new jidlo[velikost_pole];
    soubor_jidel.clear();
    soubor_jidel.seekg(ios_base::beg);
    string jidlo1;
    while(true)
    {
    getline(soubor_jidel,jidlo1);
    if(soubor_jidel.eof())
    {
        break;
    }
if(!soubor_jidel.bad())
{
int pos=jidlo1.find(',');
string str1=jidlo1.substr(0,pos);
int pos1=jidlo1.find('"')+1;
int pos2=jidlo1.find('"',pos1)-3;
string str2=jidlo1.substr(pos1,pos2);
int pos3=jidlo1.find(',',pos2);
int pos4=jidlo1.find(',',pos3)-pos2-1;
string str3=jidlo1.substr(pos3+1,pos4-1);
int pos5=jidlo1.find(',',pos3);
string str4=jidlo1.substr(pos5+4);
jidlo j;
prevedeni(str1,j.id);
j.nazev=str2;
prevedeni(str3,j.cena);
prevedeni(str4,j.energie);
pole[pozice]=j;
pozice++;
    }
    else
    {
        cout<<"Nespravny vstup."<<endl;
    }
}
    return pole;
}

objednani *nacitani1(string jmeno_souboru, int &velikost_pole1)
{
    ifstream soubor_objednavek(jmeno_souboru.c_str());
   string objednavka;
   int pozice1=0;
   for(velikost_pole1=0;;velikost_pole1++)
   {
       getline(soubor_objednavek,objednavka);
       if(soubor_objednavek.eof())
       {
        break;
       }
       if(objednavka.length()==0)
       {
           cout<<"Nespravny vstup."<<endl;
       }


   }


   objednani *pole1=new objednani[velikost_pole1];
    soubor_objednavek.clear();
    soubor_objednavek.seekg(ios_base::beg);
    string chut;
   while(true)
   {
       getline(soubor_objednavek,chut);
       if(soubor_objednavek.eof())
       {
           break;
       }
    if(!soubor_objednavek.bad())
    {
    int poz1=chut.find(',');
    string podretezec1=chut.substr(0,poz1);
    string podretezec2=chut.substr(poz1+1);
    objednani x;
    x.datum=podretezec1;
    prevedeni(podretezec2,x.id);
    pole1[pozice1]=x;
    pozice1++;
    }
       else
       {
           cout<<"Nespravny vstup."<<endl;
       }

   }

return pole1;

}

jidlo *sekvencni_vyhledavani(jidlo *pole,int velikost_pole,int id)
{
    for(int i=0;i<velikost_pole;i++)
    {
        if(pole[i].id==id)
        {
            return &pole[i];
        }
    }
    return NULL;

}

int cena(jidlo *jidelnicek,int pocet_jidelnicek, objednani *muj_vyber, int pocet_muj_vyber)
{
    int celkova_cena=0;
    for(int i=0;i<pocet_muj_vyber;i++)
    {
      celkova_cena+=sekvencni_vyhledavani(jidelnicek,pocet_jidelnicek,muj_vyber[i].id)->cena;
    }
    return celkova_cena;
}

int * kumul_cena(jidlo *jidelnicek,int pocet_jidelnicek,objednani *muj_vyber,int pocet_muj_vyber)
{
   int kumulativ_cena=0;
    int *pole_cen=new int[pocet_muj_vyber];
    for(int i=0;i<pocet_muj_vyber;i++)
    {
        kumulativ_cena+=sekvencni_vyhledavani(jidelnicek,pocet_jidelnicek,muj_vyber[i].id)->cena;
        pole_cen[i]=kumulativ_cena;
    }
    return pole_cen;
}
int * kumul_energie(jidlo*jidelnicek,int pocet_jidelnicek,objednani *muj_vyber,int pocet_muj_vyber)
{
    int kumulativni_energie=0;
    int *pole_energii=new int[pocet_muj_vyber];
    for(int i=0;i<pocet_muj_vyber;i++)
    {
        kumulativni_energie+=sekvencni_vyhledavani(jidelnicek,pocet_jidelnicek,muj_vyber[i].id)->energie;
        pole_energii[i]=kumulativni_energie;
    }
    return pole_energii;
}
int energie(jidlo *jidelnicek,int pocet_jidelnicek, objednani *muj_vyber, int pocet_muj_vyber)
{
    int celkova_energie=0;
    for(int i=0;i<pocet_muj_vyber;i++)
    {
       celkova_energie+=sekvencni_vyhledavani(jidelnicek,pocet_jidelnicek,muj_vyber[i].id)->energie;
    }
    return celkova_energie;
}
int prumerna_enrgie(jidlo *jidelnicek,int pocet_jidelnicek, objednani *muj_vyber, int pocet_muj_vyber)
{
    return energie(jidelnicek,pocet_jidelnicek,muj_vyber,pocet_muj_vyber)/pocet_muj_vyber;
}
int prumerna_cena(jidlo *jidelnicek,int pocet_jidelnicek,objednani *muj_vyber,int pocet_muj_vyber)
{
    return cena(jidelnicek,pocet_jidelnicek,muj_vyber,pocet_muj_vyber)/pocet_muj_vyber;
}

int main()
{
    string menza;
    cout<<"Zadej nazev jidelnicku:"<<endl;
    cin>>menza;
    int velikost_pole;
jidlo*jidelnicek=nacitani(menza,velikost_pole);
for(int i=0;i<velikost_pole;i++)
{
    cout<<jidelnicek[i].nazev<<endl;
}


string menu;
cout<<"Zvol jidlo:"<<endl;
cin>>menu;

int velikost_pole1;
objednani*muj_vyber=nacitani1(menu,velikost_pole1);
int*kumulativni_ceny=kumul_cena(jidelnicek,velikost_pole,muj_vyber,velikost_pole1);
int*kumulativni_energie=kumul_energie(jidelnicek,velikost_pole,muj_vyber,velikost_pole1);
for(int i=0;i<velikost_pole1;i++)
{
    cout<<muj_vyber[i].datum<<" "<<muj_vyber[i].id<<" "<<kumulativni_ceny[i]<<" "<<sekvencni_vyhledavani(jidelnicek,velikost_pole,muj_vyber[i].id)->energie<<" "<<kumulativni_energie[i]<<endl;
}
cout<<"Celkova cena: "<<cena(jidelnicek,velikost_pole,muj_vyber,velikost_pole1)<<endl;
cout<<"Prumerna cena: "<<prumerna_cena(jidelnicek,velikost_pole,muj_vyber,velikost_pole1)<<endl;
cout<<"Celkovy pocet jidel: "<<velikost_pole1<<endl;
cout<<"Celkova energie: "<<energie(jidelnicek,velikost_pole,muj_vyber,velikost_pole1)<<endl;
cout<<"Prumerna energeticka hodnota: "<<prumerna_enrgie(jidelnicek,velikost_pole,muj_vyber,velikost_pole1)<<endl;


delete [] jidelnicek;
delete [] muj_vyber;

    return 0;
}
C / C++ › Práce s náhodnými čísly ve s…
17. 12. 2013   #185389

#4 hlucheucho
Takhle přesně mi to bohužel zadal vyučující na vysoké škole. Takže bohužel víc k tomu nemám.

C / C++ › Práce s náhodnými čísly ve s…
17. 12. 2013   #185354

Ahoj, mám naprogramovat pomocí statického pole v C++ následující úlohu: Mám zdrojový interval <A,B> a cílový interval <X,Y>. Mám zadanou hodnotu a ze zdrojového intervalu, kterou vygeneruje funkce rand().  Úkolem je přiřadit hodnotě a hodnotu z intervalu  <X,Y>.  Nevím, jak na to jít obecně, tudíž to neumím ani naprogramovat. Mohl by mi prosím Vás někdo pomoct?

Deivson
C / C++ › Práce s náhodnými čísly ve s…
17. 12. 2013   #185350

Ahoj, mám naprogramovat za použití statického pole v C++ následující úlohu: Mám zdrojový interval <A,B> a cílový interval <X,Y>. Mám zadanou hodnotu a ze zdrojového intervalu, kterou vygeneruje funkce rand(). Úkolem je přiřadit hodnotě a hodnotu z intervalu <X,Y>. Nevím, jak na to jít obecně, tudíž to neumím ani naprogramovat a navíc jsem začátečník. Může mi prosím Vás někdo pomoct?

C / C++ › Podřetězce
7. 12. 2013   #184911

 Ahoj, tak už jsem na to přišel. Bylo to ve špatném určení pozice toho posledního podřetězce.

#include <iostream>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <string>
using namespace std;

typedef struct
{
    int id;
    string nazev;
    int cena;
    int energie;

}jidlo;

/** \brief Vypocet druhe mocniny
 *
 * \param n Cislo, ktere mocnime
 * \return Mocnina cisla n
 *
 * Funkce pro vypocet druhe mocniny zadaneho cisla
 */
int mocnina(int n)
{
    return n*n;
}

bool prevedeni(string a,int&b)
{
    istringstream iss(a);
    iss>>b;
    return iss.good();

}

int main()
{
    string menza;
    cout<<"Zadej nazev jidelnicku:"<<endl;
    cin>>menza;
ifstream jidelnicek(menza.c_str());
string jidlo1;
getline(jidelnicek,jidlo1);
int pos=jidlo1.find(',');
string str1=jidlo1.substr(0,pos);
cout<<str1<<endl;
int pos1=jidlo1.find('"')+1;
int pos2=jidlo1.find('"',pos1)-3;
string str2=jidlo1.substr(pos1,pos2);
cout<<str2<<endl;
int pos3=jidlo1.find(',',pos2);
int pos4=jidlo1.find(',',pos3)-pos2-1;
string str3=jidlo1.substr(pos3+1,pos4-1);
cout<<str3<<endl;
int pos5=jidlo1.find(',',pos3);
string str4=jidlo1.substr(pos5+4);
cout<<str4<<endl;
jidlo j;
prevedeni(str1,j.id);
cout<<j.id<<endl;


    return 0;
}

#1 Deivson

C / C++ › Podřetězce
7. 12. 2013   #184908

   

#include <iostream>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <string>
using namespace std;

typedef struct
{
    int id;
    string nazev;
    int cena;
    int energie;

}jidlo;

/** \brief Vypocet druhe mocniny
 *
 * \param n Cislo, ktere mocnime
 * \return Mocnina cisla n
 *
 * Funkce pro vypocet druhe mocniny zadaneho cisla
 */
int mocnina(int n)
{
    return n*n;
}

bool prevedeni(string a,int&b)
{
    istringstream iss(a);
    iss>>b;
    return iss.good();

}

int main()
{
    string menza;
    cout<<"Zadej nazev jidelnicku:"<<endl;
    cin>>menza;
ifstream jidelnicek(menza.c_str());
string jidlo1;
getline(jidelnicek,jidlo1);
int pos=jidlo1.find(',');
string str1=jidlo1.substr(0,pos);
cout<<str1<<endl;
int pos1=jidlo1.find('"')+1;
int pos2=jidlo1.find('"',pos1)-3;
string str2=jidlo1.substr(pos1,pos2);
cout<<str2<<endl;
int pos3=jidlo1.find(',',pos2);
int pos4=jidlo1.find(',',pos3)-pos2-1;
string str3=jidlo1.substr(pos3+1,pos4-1);
cout<<str3<<endl;
int pos5=jidlo1.find(',',pos4);
string str4=jidlo1.substr(pos5);
cout<<str4<<endl;
jidlo j;
prevedeni(str1,j.id);
cout<<j.id<<endl;


    return 0;
}

Ahoj, mám soubor s jídelníčkem:

1,"Spanelsky ptacek /hovezi, vejce, uzenina,okurek/, dusena ryze",41,215
2,"Perstynsky veprovy platek /uzenina,zampiony/, testovinova ryze",37,300
3,"Zapecene testoviny se spenatem a uzenym, okurek",37,250
4,"1ks varene vejce, fazolky na smetane, varene brambory",36,350
5,"Veprovy platek zapeceny s nivou a anglickou slaninou, smazene hranolky",51,500
6,"Kureci smes s bylinkovou omackou, testoviny",47,400
7,"Zapekane palacinky s tvarohem",39,450
8,"Soulet s hrachem a zeleninou, okurek",22,410
9,"Jizerský drak /hovezi,cesnek/, smazene hranolky",50,1000
10,"Veprove kostky po vidensku /cibule/, dusena ryze",35,600
11,"Uzene maso, krenová omacka, houskove knedliky",39,700
12,"Bramborory gulas s fazolovymi lusky, chleb Moskva",39,550
13,"Mamincino kure /testoviny,jatra,zampiony/",39,900
14,"Pekingske maso /veprove,zampiony,solamyl/, kari ryze",37,600
15,"Sekany veprovy rizek s celerem, mastene brambory",40,350
16,"Kynuty makovy zavin",33,200
17,"Hovezi varene /zadni/, duseny spenat, varene brambory",49,850
18,"Ohnive maso /veprove,leco,feferony/, spagety",36,1000
19,"Pecena krkovicka, strapacky se zelim",40,325
20,"Zampionova cina /zampiony,paprika,rajcata/, dusena ryze",30,450

Potřebuji načíst postupně všechny řádky tohoto souboru, kde každý řádek rozdělím na podřetězce id, název, cena a energetická hodnota, které jsou v souboru vymezeny čárkami. Podařilo se mi vyřešit ty první tři podřetězce, ale nevím, jak vyřešit ten poslední podřetězec energetická hodnota. Mohl by mi prosím Vás někdo poradit? Zdrojový kód se nachází nahoře.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý