Объявление массивов:
float x[sum], y[sum],xp[sum],yp[sum];
где sum был вычислен заранее и получился равным где то 13000
Cпособ задания массивов.
for (j=1;j<n1;j++){
for (k=0;k<round(2*pi*j);k++){
x[t]=j*h*cos(2*pi*k/(round(2*pi*j)));
y[t]=j*h*sin(2*pi*k/(round(2*pi*j)));
t++;
};
t примерно равно 13000. По вышеуказанной схеме формируются 2 массива координат точек в одном слое double xp[j] и yp[j] длиной примерно g=13000 точек, необходимо создать одномерный массив (застакать n0+50=165 раз(количество слоев) массив координат), массив dz[g*(n0+50)] содержит координату слоя для точки у которой координата x берется из массива dx3, а у соотвественно из dy3:
for (int i=0;i<n0+50;i++){
for (int j=0;j<g;j++){
dx3[j+i*g]=xp[j];
dy3[j+i*g]=yp[j];
dz3[j+i*g]=h*i-Q;}}
либо можно создать двумерный массив, но это нежелательно:
for (int i=0;i<n0+50;i++){
for (int j=0;j<g;j++){
dxx[i][j]=xp[j];
dyy[i][j]=yp[j];
}
}
Из-за обоих циклов при запуске вылетает программа и просит JIT-отладку. Подскажите, пожалуйста, как решить данную проблему или же покажите пример более оптимального кода.
Тут создаются слишком большие массивы:
for (int i=0;i<n0+50;i++){
for (int j=0;j<g;j++){
dx3[j+i*g]=xp[j];
dy3[j+i*g]=yp[j];
dz3[j+i*g]=h*i-Q;}}
вместо массива используйте std::vector или создавайте массим в динамической памяти через new
Если вы добавить try catch блоки то наверняка увидете cannot allocate memory
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как прочитать и вывести каждую строку из файла? Имеется такой код:
В этом приложении входным данным должно быть натуральное число, при вводе целого или нуля и нажатия Enter программа начинается сначала и так...
Я хочу получить информацию о модуле в системеДопустим, есть драйвер в системе Example