Dynamická alokace, předávání funkcím ... – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dynamická alokace, předávání funkcím ... – C / C++ – Fórum – Programujte.comDynamická alokace, předávání funkcím ... – C / C++ – Fórum – Programujte.com

 

Bananovnik
~ Anonymní uživatel
7 příspěvků
3. 12. 2013   #1
-
0
-

Zdravím, mám tu před sebou celkem hnusný úkol a nevím si rady ... chci, aby mi funkce zjisteniRoku zaplnila intové pole jednotlivými roky, přičemž uživatel může zadat jeden rok i interval roků... a když nevím jak velké pole budu mít, musím ho dynamicky alokovat, ne? na to mám vytvořenou další funkci, která mi to pole zvětšuje ... ale někde v té hrůze je nějaká strašlivá chyba, na kterou nemůžu přijít a dohání mě k šílenství ... prosím někoho o radu, co tam dělám špatně

void zvetsitPole(int arr[], int &a)
{
    int *arr2 = new int [a + 1];
    for (int i = 0; i < a; i++)
        arr2[i] = arr[i];
    delete [] arr;
    arr = arr2;
    a++;
}

void zvetsitPole(string arr[], int &a)
{
    string *arr2 = new string [a + 1];
    for (int i = 0; i < a; i++)
        arr2[i] = arr[i];
    delete [] arr;
    arr = arr2;
    a++;
}


char zjisteniRoku(const char * years, int roky[], int &delka)
{
   string s;
   s = years;
   for (unsigned int i = 0; i < s.length(); i++)
    if (s[i]==' ') s.erase(i,1);
   cout << s << endl;
   int delkaArr = 0;
   string *arr = new string [delkaArr];
   char *p = &s[0];
   char *token = strtok(p, ",");
   int i = 0;
   while (token != NULL)
    {
        zvetsitPole(arr,delkaArr);
        arr[i] = token;
        token = strtok(NULL, ",");
        i++;
    }


    for (unsigned int i = 0; i < delka; i++)
    {
        if (arr[i].length() == 4)
        {
            cout << delka << endl;
            zvetsitPole(roky, delka);
            cout << delka << endl;
            int rok = atoi(arr[i].c_str());
            roky[i] = rok;
            cout << roky[i]<<endl;

        }
        else if (arr[i].length()==8)
        {
            string s1 = arr[i].substr(0,4);
            string s2 = arr[i].substr(4,4);
            int is1 = atoi(s1.c_str());
            int is2 = atoi(s2.c_str());
            while (is1<=is2)
            {
                roky[i] = is1;
                i++;
                is1++;
            }

        }


    }


    return 0;

}

int vytvorPoleIntu( const char * years )
 {
    int delka = 0;
    int *roky = new int [delka];
    zjisteniRoku(years,roky,delka);
    for (int i=0; i < delka; i++) cout << roky[i] << endl;


   return 0;
 }

Nahlásit jako SPAM
IP: 88.100.200.–
KIIV
~ Moderátor
+43
God of flame
3. 12. 2013   #2
-
0
-

pravdepodobne nepocitas s tim, ze se pri predavani jen zkopiruje adresa a pokud se zmeni uvnitr funkce, tak se to nemuze projevit venku... jelikoz se zmenila jen ta kopie adresy

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 12 hostů

Podobná vlákna

Dynamická alokace — založil Bananovnik

Dynamická alokace paměti — založil birkof

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ý