Я старался изо всех сил, но я не могу решить проблему. В последней части «createArray» я выводил созданный конечный массив. Я имею в виду, что это повторяется один раз, но потом повторяется больше раз, чем я ожидаю. createArray - это итеративная функция. Если он повторяется 3 раза, то, наконец, созданный массив, который выполняет критерий, будет распечатан 3 + 1 раз.Итеративный цикл повторяется больше, чем я ожидаю
Я пытаюсь создать массив с 3 номерами 5 раз, в результате получается 2D-массив. 3 числа в массиве выбираются из 0-5. Я ввожу createArray (5,3,5). Затем эти 5 массивов сравниваются друг с другом, чтобы увидеть, есть ли повторения. Если есть, весь процесс начинается снова, 5 массивов с 3 номерами будут собраны снова и сравнены друг с другом. Если повторений нет, то будет напечатано 5 массивов.
#include <algorithm>
#include <iterator>
void deleteArray(int** array){
delete[] array;
}
int** createArray(int simu_times, int randomrun,int numberofrun){
vector<Int_t>fChosenRun;
int** Array = new int*[simu_times];
for(int i = 0; i < simu_times; ++i) {
fChosenRun=getRandom(1,randomrun,numberofrun);
Array[i] = new int[randomrun];
for(int j = 0; j < randomrun; ++j){
Array[i][j] = fChosenRun[j];
}
}
в следующем двухполюсном цикле, я сравниваю массивы друг с другом. Если есть какие-либо повторения, этот массив будет удален, и createArray вызывается для создания массивов снова.
for(int j=0;j<simu_times;++j){
for(int i=0+j;i<simu_times;++i){
if(j!=i) {
if (std::equal(Array[j], Array[j]+ sizeof Array[j]/sizeof *Array[j], Array[i])){
cout<<"same: "<< j<<" "<<i<<endl;
deleteArray(Array);
createArray(simu_times,randomrun,numberofrun);
}
}
}
}
Когда массивы не имеют повторения, они будут распечатаны. Все массивы должны быть распечатаны один раз, но их распечатывают много раз.
for(int i=0;i<simu_times;++i){
for(int j=0;j<randomrun;++j){
cout<< i<<" "<<j<<" "<<Array[i][j]<<endl;;
}
cout<<endl;
}
return Array;
}
* Пожалуйста, исправьте отступ – Borgleader
Используйте отладчик, вот для чего они предназначены. – vsoftco
Примечание: вы не удаляете весь массив должным образом. –