Ребят помогите пожалуйста. Вот задача
Вот что я сделал, почти всё но когда в последнем числе последняя цифра является 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;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей