Podřetězce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Podřetězce – C / C++ – Fórum – Programujte.comPodřetězce – C / C++ – Fórum – Programujte.com

 

Deivson0
Duch
7. 12. 2013   #1
-
0
-

   

#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.

Nahlásit jako SPAM
IP: 90.177.86.–
Deivson0
Duch
7. 12. 2013   #2
-
0
-

 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

Nahlásit jako SPAM
IP: 90.177.86.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 36 hostů

Podobná vlákna

Hledání podřetězce — založil Tom1234

Hledání podřetězce zprava — založil peacheass

Moderátoři diskuze

 

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