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

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

 

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

Martin
C / C++ › Alokace paměti pomocí new a…
30. 11. 2013   #184578

#4 z
Super díky!

Martin
C / C++ › Alokace paměti pomocí new a…
29. 11. 2013   #184573

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 ;)

Martin
C / C++ › Alokace paměti pomocí new a…
29. 11. 2013   #184561

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.

Martin
C / C++ › Práce se string, vyhledávání…
21. 11. 2013   #184191

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);
}

 

 

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