Программа не выводит массив из функции, зависает, что не так

#include <iomanip>
#include<iostream>
void choos(int arr[24][10],int x,int y){
int c1[4][2];
int number,i,j;
number=1+rand()%7;
for (i=0;i<4;i++){for (j=0;i<2;j++){c1[i][j]={0};}}
switch(number){
    case 1: for (i=0;i<4;i++){c1[i][1]={1};}
    case 2: for (i=0;i<2;i++){
                                for (j=0;i<2;j++){c1[i][j]={2};}}
case 3: for (i=0;i<4;i++){c1[i][1]={3};}
        c1[1][2]={3};
case 4: for (i=0;i<4;i++){c1[i][2]={4};}
        c1[1][1]={4};
case 5: for (j=0;j<2;j++){c1[2][j]={5};}
        c1[1][1]={5};
        c1[3][2]={5};
case 6: for (j=0;j<2;j++){c1[2][j]={6};}
        c1[1][2]={6};
        c1[3][1]={6};
case 7: for(i=0;i<3;i++){c1[i][1]={1};}
        c1[2][2]={3};
}

for(i=0;i<4;i++){for (j=4;i<6;j++){arr[i][j]=c1[i][j-4];}} }

int main(){
int array[24][10]={};
int i,j;
    for (i=4;i<24;i++){
    for (j=0;j<10;j++)
    {std::cout<<std:: setw(2)<<std::right;
    array[i][j]=0;
    std::cout<<array[i][j];}
std::cout<<std::endl;
}
std::cout<<std::endl;
choos(array,24,10);
for (i=0;i<24;i++){
    for (j=0;j<10;j++)
    {std::cout<<std:: setw(2)<<std::right;
    std::cout<<array[i][j];}
std::cout<<std::endl;
}
std::cout<<std::endl;
return 0;
}

Ответы (1 шт):

Автор решения: Zhihar

у вас бесконечный цикл с переполнением всего чего можно:

for (i=0;i<4;i++){for (j=0;i<2;j++){c1[i][j]={0};}}

вместо j вы написали i во вложенном for:

for (j=0;i<2;j++)

надо

for (i=0;i<4;i++){for (j=0;j<2;j++){c1[i][j]={0};}}

и в конце функции вы сделали ту же ошибку (копипаста?):

for (i = 0; i < 4; i++) { for (j = 4; i < 6; j++) { arr[i][j] = c1[i][j - 4]; } }

надо

for (i = 0; i < 4; i++) { for (j = 4; j < 6; j++) { arr[i][j] = c1[i][j - 4]; } }

P.S.

и вообще код в некоторых местах очень избыточный, к примеру зачем c1[2][2]={3}; вместо c1[2][2]=3;?

→ Ссылка