Codice:
#include <stdlib.h>
#include <stdio.h>
typedef struct Item {
int p;
int val;
} Item;
void Vernicia(int indice, int colore);
int compare(const void* p, const void* p1) {
return ((Item*) p)->val > ((Item*) p1)->val;
}
void range(int array[], int& indexarry, int& from, const int &to) {
for (; from+1 < to; ++from) {
array[indexarry] = from+1;
++indexarry;
}
from=to;
}
void Diversifica(int N, int colore[]) {
Item* items = new Item[N];
for (int i = 0; i < N; ++i) {
items[i] = {i, colore[i]};
}
qsort(items, N, sizeof (Item), compare);
int indexarr = 0, previus = 1;
range(colore, indexarr, previus, items[0].val);
for (int i = 1; i < N; ++i) {
range(colore, indexarr, previus, items[i].val);
}
if (previus != N)
range(colore, indexarr, previus, N + 1);
previus = items[0].val;
for (int i = 1; i < N; ++i) {
if (previus == items[i].val) {
--indexarr;
Vernicia(items[i].p, colore[indexarr]);
} else {
previus = items[i].val;
}
}
}
ho usato questo codice per il problema Cubetti colorati e mi da come errore (solo in alcuni test) “Chiamata non valida alla funzione Vernicia” , qualcuno a qualche idea da dove venga questo errore?