Динамические массивы с++

246
23 сентября 2017, 23:30

Ребят помогите пожалуйста. Вот задача

Вот что я сделал, почти всё но когда в последнем числе последняя цифра является 0 то в новом массиве последний элемент мусор.

  #include <iostream>
#include <ctime>
using namespace std;
int main()
{
    srand(time(0));
    int kol = 0, size = 20;
    int *arr = new int[size];
    for (int i = 0; i < size; i++)
    {
        arr[i] = rand() % 9989 + 10;
        cout << arr[i] << " ";
    }

    for (int i = 0; i < size; i++)
    {
        int tmp = arr[i];
        for (int j = tmp; tmp > 0; j++)
        {
            tmp = tmp / 10;
            kol++;
        }
    }
    cout << endl;
    cout << kol << endl;
    int *tmp = new int[kol];
    int k = 0;
    int kolnum = 0;
    for (int i = 0; i < size; i++)
    {
        int buf = arr[i];
        for (; buf > 0;)
        {
            buf /= 10;
            kolnum++;
        }
        buf = arr[i];
        for (; buf > 0;)
        {
            tmp[k] = buf / (int)pow(10, kolnum - 1);
            buf %= (int)pow(10, kolnum-1);
            kolnum--;
            k++;
        }
    }
    int new_kol = 0;
    for (int i = 0; i < kol; i++)
    {
        if (tmp[i] != 0)
            new_kol++;
    }
    int new_size;
    if (new_kol % 3 == 0)
        new_size = new_kol / 3;
    else
        new_size = new_kol / 3 + 1;
    cout << "\n\n ---------> " << new_kol << "\n\n";
    int*new_arr = new int[new_size];
    for (int i = 0; i < new_size; i++)
        new_arr[i] = 0;
    int current_pos = 0;
    for (int i = 0; i < new_size; i++)
    {
        for (int j = current_pos, u = 0; u < 3; u++)
        {
            if (tmp[current_pos] != 0)
            {
                new_arr[i] += tmp[current_pos];
                if (u < 2 /*&& current_pos < kol - 1*/)
                    new_arr[i] *= 10;
            }
            else
                    u--;
            if (current_pos < kol - 1)
                current_pos++;
            else
                break;
        }
    }
    cout << endl;
    //-------------------
    for (int i = 0; i < kol; i++)
        cout << tmp[i] << " ";
    cout << "\n\n\n";
    for (int i = 0; i < new_size; i++)
        cout << new_arr[i] << " ";
    cout << "\n\n\n";
    return 0;
}
READ ALSO
Правильность реализации деструктора

Правильность реализации деструктора

Написал небольшой класс который в будущем будет выступать в роли полноценного фреймворка, все работает, утечек вроде бы нет, нет никаких...

233
Есть ли простой способ в spring boot подсчитать количество запросов за временной промежуток?

Есть ли простой способ в spring boot подсчитать количество запросов за временной промежуток?

Допустим у меня есть сущность loan, у нее поле countryЯ хотел бы как-то реагировать на случай превышения некоторого числа запросов на секунду времени...

313
Многопоточность и swing

Многопоточность и swing

Есть простой интерфейс, при нажатии кнопки запускается процесс обработки загруженных данных

332
генерация сервисов с помощью swagger api java

генерация сервисов с помощью swagger api java

как генеряться сервисы в swagger api на java

298