Массив:
float v[] = {
0.5, 0,5, 0.0,
1.0, 0.5, 0.0,
0.5, 0.5, 0.0,
-0.5, 0.5, 0.0,
1.0, 0.5, 0.0,
0.5, 0.5, 1.0,
0.5, 0.5, 1.0}
нужно проиндексировать каждую группу из трёх чисел массива целыми числами начиная с нуля и записать индексы в другой массив, т.е. для первых трёх чисел будет всегда 0.
например: 0.5, 0.5, 0.0 - индекс ноль,
1.0, 0.5, 0.0 - индекс 1,
0.5, 0.5, 0.0 - индекс ноль(т.к. группа уже встречалась),
-0.5, 0.5, 0.0 - индекс 2,
1.0, 0.5, 0.0 - индекс 1,
0.5, 0.5, 1.0 - индекс 3 и т.д.
В итоге новый массив должен получится таким: int v2[] = {0, 1, 0, 2, 1, 3, 3}
Мне кажется задача простая, если поразмыслить мозгами
Вот код:
#include "iostream"
using namespace std;
template <typename T>
void OutputArray(const T *array) {
int i = 0;
while (array[i + 1] != *"exit") {
cout << array[i] << " ";
i++;
}
cout << endl;
}
int main()
{
// Инициализация
float arr0[] = {
0.5, 0.5, 0.0,
1.0, 0.5, 0.0,
0.5, 0.5, 0.0,
-0.5, 0.5, 0.0,
1.0, 0.5, 0.0,
0.5, 0.5, 1.0,
0.5, 0.5, 1.0
};
int *arr1 = new int[8];
for (int i = 0; i < 7; arr1[i] = -1, i++) {};
int cnt = 0;
// Реализация
for (int i = 0; i < 21; i += 3) {
if (arr1[int(i / 3)] == -1) {
for (int j = i; j < 21; j += 3) {
if (arr0[i] == arr0[j] && arr0[i+1] == arr0[j+1] &&
arr0[i+2] == arr0[j+2]) {
arr1[int(j / 3)] = cnt;
}
}
cnt++;
}
}
arr1[8] = *"exit";
OutputArray<int>((arr1)); // Чисто для красоты
// Финализация
delete arr1;
system("pause");
return 0;
}
Результат:
Алгоритм основан на том что если в массиве arr1 элемент обозначен как -1 то он не имеет индекса и мы во 2 цикле даем ему индекс. j не от 0. так как все элементы сзади уже проиндексированны. 1 элемент в массиве arr1 это общий индекс 3 элементов массива arr0. Надеюсь понятно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Стоит задача: поднять сервер с бд, с несколькими таблицами, в которые юзеры будут заносить значенияВ дальнейшем эти значения нужно будет...
Мы пишем приложение на Java и перед нами стоит следующая задачаВ приложении есть пять разделов