1 Востаннє редагувалося Дмитро-Чебурашка (10.06.2016 23:00:00)

Тема: Незрозуміла помилка об'яви динамичного масиву

Я хочу в функції запам'ятовувати кількість її викликів.
Загалом я використовую такую ось конструкцію. Я ледь не годину розглядав помилку..
Все ж ніби просто, зрозуміло, і без особливих викрутасів, і що ж?
Я лазив по довідниках. І я принципових помилок не бачу!
що це за особливості таки ось проявляються? Що не так?

Дійсно не бачу як причіни помилки так й вірного рішення, правильного, гарного.

void nakopychuvach (char *Znak, char***Ves_masyv, int *ZastarivPamjatay)
{
    static long NUMRYADOK=0;
    static long NUMZNAK=0;
    NUMZNAK++;
    if (Symbol==ZAKINCHENNYA_RYADKA) {NUMRYADOK++; NUMZNAK=0;}

    /*Для того що б не втратити знаки для кожного нового рядка. Рядки то не рівні і це у нас не квадрат. */

    int *Pamjatay = new int Pamjatay[NUMRYADOK+1]; //Запам'ятовувач рядків  ошибка: expected
    Pamjatay[NUMRYADOK] = NUMZNAK;
    for (int i=0; i<NUMRYADOK; i++)
    {
         Pamjatay[NUMRYADOK] = ZastarivPamjatay[i];
    }

    delete[] ZastarivPamjatay;
    ZastarivPamjatay=Pamjatay;    // А чі буде тепер ZastarivPamjatay вказувати саме на мічсце Pamjatay?

|95|ошибка: expected «,» or «;» before «Pamjatay»|

int *Pamjatay = new int Pamjatay[NUMRYADOK+1];

2

Re: Незрозуміла помилка об'яви динамичного масиву

Мабуть ви мали на увазі це

int *Pamjatay = new int [NUMRYADOK+1];

До того ж, не зовсім зрозуміло що у вас робить цикл for. Його можна замінити на це

Pamjatay[NUMRYADOK] = ZastarivPamjatay[NUMRYADOK-1];

3 Востаннє редагувалося Дмитро-Чебурашка (11.06.2016 00:49:32)

Re: Незрозуміла помилка об'яви динамичного масиву

YurkoFlisk дякую!!

Не, цикл цей, як я замислюю, якщо тільки я нічого не поплутав
він вставляє в масив старий застарілий масив, який передається у функцію як параметр ZastarivPamjatay.
У результаті ж старий масив зберігається але до нього дописується нова інформація. Я не знаю, як це зробити ще по іншому.  Чі буде працювати подивлюся після компіляціі.  Вже не мислю нічого...

Справді дуже дякую!

Re: Незрозуміла помилка об'яви динамичного масиву

Ось в цієї  ж функції, іщо б не плодити нову тему.

...-22\NOW\Pars_utf8.cpp|91|error: ISO C++ forbids comparison between pointer and integer|
...- 22 \ NOW \ Pars_utf8.cpp | 91 | Помилка: ISO C ++ забороняє порівняння між покажчиком і ціле число |

Звичайно!! Це по ідеї один знак УТФ-8. Але як бути? Написати перед ним фігнюшечку & ?? Чі як?

Ось де     if (Symbol==ZAKINCHENNYA_RYADKA) {NUMRYADOK++; NUMZNAK=0;}


#define ZAKINCHENNYA_RYADKA 0x0D0A

5

Re: Незрозуміла помилка об'яви динамичного масиву

Дмитро-Чебурашка написав:

Це по ідеї один знак УТФ-8. Але як бути? Написати перед ним фігнюшечку & ?? Чі як?
Ось де     if (Symbol==ZAKINCHENNYA_RYADKA) {NUMRYADOK++; NUMZNAK=0;}

З "comparison between pointer and integer" роблю висновок, що Symbol - це вказівник на символ, а ZAKINCHENNYA_RYADKA - це int.

Дмитро-Чебурашка написав:

#define ZAKINCHENNYA_RYADKA 0x0D0A

Так це int і навіть якби це був символ, то він не вліз би в UTF-8.
Треба якось так: #define ENDLN '\x0a'.

Тоді можна буде якось так:

if (*Symbol == ENDLN) { ++NUMRYADOK; NUMZNAK = 0; }
Подякували: Дмитро-Чебурашка1

Re: Незрозуміла помилка об'яви динамичного масиву

Дуже дуже дякую, leofun01!!!!!!!