#4 z
Super díky!
Příspěvky odeslané z IP adresy 46.13.181.–
Tak jsme to vykutil přes ty vektory, funguje to v podstatě jak má, jen by mě zajímalo jak předat vektor funkci, př:
mám definovaná vektor:
vector<shop> tempshop(velikost_pole);
chtěl bych mít funkci pro výpis.
Ta funkce by vypisovala načtené hodnoty ze souboru, normálně to jde ale nejde mi to předat funkci, nejde mi předat jen ten vektor.
Funkce:
//první proměnná funkce: shop tempshop[] je asi špatně na 99% :D
void vypis(shop tempshop[], int velikost_pole)
{
for(int i=0; i<velikost_pole; i++)
{
cout << tempshop[i].id << " " << tempshop[i].nazev << " " << tempshop[i].popis << " " << tempshop[i].cena << " " << tempshop[i].pocet_kusu << endl;
}
}
//volání funkce:
// vypis(parametr vektoru, velikost_pole);
Díky za nápady ;)
Ahojte. Trošku jsem zmatený jak alokovat nový paměťový prostor. V mém příkladu jde o načítání ze souboru. V základu mám pole o velikosti 10, pokud ale tohle pole vyčerpám, chtěl bych ho například zvýšit o dalších 10 prvků a tak dále až se nenačte celý soubor.
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
#include <new>
using namespace std;
typedef struct shop {
long int id;
string nazev;
string popis;
long int cena;
long int pocet_kusu;
}shop;
int main()
{
int velikost_pole = 0;
int i = 0;
shop shop[10];
string proud;
string file_in = "vstup"
string pripona = ".csv";
file_in = file_in + pripona;
// Načtení ze souboru
ifstream vstup_soubor;
vstup_soubor.open(file_in.c_str(), ios::in);
while(!vstup_soubor.eof())
{
getline(vstup_soubor, proud,';');
if(proud.length() == 0) break;
shop[i].id = atoi(proud.c_str());
getline(vstup_soubor, proud,';');
shop[i].nazev = proud;
getline(vstup_soubor, proud,';');
shop[i].popis = proud;
getline(vstup_soubor, proud,';');
shop[i].cena = atoi(proud.c_str());
getline(vstup_soubor, proud,'\n');
shop[i].pocet_kusu = atoi(proud.c_str());
proud = "";
i++;
velikost_pole++;
}
vstup_soubor.close();
}
Pokud mi někdo poradí jak to přesně v tom cyklu udělat budu rád. Pokud mi to někde napíše přesně budu ještě raději, protože jsem vyzkoušel několik variant a prostě to nechápu a padá mi to pořád. Díky.
Pokusil jsem se tedy něco stvořit :) poměrně to funguje ale rád bych byl aby ta část ,,hledání podřetězce" byla v nějakém cyklu, který v případě, že se v řetězci podřetězec nachází vícekrát, vypsal všechny pozice ale ne jen tu první :) zkoušel jsem to hodit do nějakého cyklu ale neúspěšně, děkuji všem co mě nějak nakopnout :)
#include <iostream>
using namespace std;
void porovnej_znak(string retezec, string znak)
{
int znak_pocet = 0;
for(unsigned int i=0; i<retezec.length(); i++)
{
if(retezec[i] == znak[0]) znak_pocet++;
}
cout << "Znak '" << znak << "' byl v řetězci zobrazen: " << znak_pocet << " krat." << endl;
}
int main()
{
string retezec, znak, podretezec;
cout << "Zadejte řetězec, podřetězec a znak pro porovnání:\n";
cin >> retezec >> podretezec >> znak;
if(!cin.good() || (retezec.length() > 100))
{
cout << "Nespravny vstup.\n";
return 1;
}
//Hledání podřetězce
int hledej = retezec.find(podretezec);
if(hledej == string::npos)
{
cout << "Podřetězec '" << podretezec << "' se v řetězci nenachází.\n";
}
else
{
cout << "Podřetězec '" << podretezec << "' se v řetězci nachází na pozici: " << hledej << endl;
}
porovnej_znak(retezec, znak);
}