Чтение и печать только положительных индексов массива - PullRequest
0 голосов
/ 18 ноября 2018

Вопрос, который у меня есть, похож на некоторые ответы на вопросы, но ответа на него, в частности, там не было. Вот мой код

    int main()
{   int i,j,k,sorted;
    int A[4][4];
    int C[16];
    int positive = 0;

    for(i=0;i<4;i++)
    {
        for(j = 0; j<4; j++)
        {
            printf("A[%d][%d]: ", i,j);
            scanf("%d", &A[i][j]);

            if(A[i][j]>0){
                C[positive] = A[i][j];
                printf("C = %d\n");         
                positive++;
            }       
        }
    }
    for(j=0;j<4;j++)
    {
        printf("%d  ", A[positive]);
    }
    printf("\n");
    //printf("Your positive numbers are: ", positive);

    printf("\n");
    system("pause");
    return 0;

}

Я хочу проверить, является ли вход отрицательным, и только потом добавить его в одномерный массив. Вопрос в том, как мне это сделать? Есть идеи?

Спасибо в объявлении

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018
int main()
{   int i,j,k,sorted;
int A[4][4];
int C[16];
int positive = 0;

for(i=0;i<4;i++)
{
    for(j = 0; j<4; j++)
    {
        printf("A[%d][%d]: ", i,j);
        scanf("%d", &A[i][j]);

        if(A[i][j]>0){
            C[positive] = A[i][j];
            printf("C = %d\n");         
            positive++;
        }       
    }
}
for(j=0;j<positive;j++)
{
    printf("%d  ", C[j]);
}
printf("\n");
//printf("Your positive numbers are: ", positive);

printf("\n");
system("pause");
return 0;

}

, где вы ошибаетесь в цикле для результата, вы печатаете 2D-массив, но вы просто используете 1D-массив, а в цикле не до 4, но до положительного, а затем в цикле вы печатаете A, но результат C no A

0 голосов
/ 18 ноября 2018

Общие советы

int main()
{   

int i,j,k,sorted; // do not declare loop control variables outside of their respective loops
int A[4][4];
int C[16];
int positive = 0; // for readability's sake please refrain from using long ass variable names for simple control var's

for(i=0;i<4;i++) // idiomatic way is for(int i = 0; i < 4; i++)
{
    for(j = 0; j<4; j++) // for(int j = 0; j<4; j++)
    {
        printf("A[%d][%d]: ", i,j);
        scanf("%d", &A[i][j]);

        if(A[i][j]>0)
        {
            C[positive] = A[i][j];
            printf("C = %d\n"); // missing argument & redundant since you intend to print them afterwards anyway? 
            positive++;
        }       
    }
}
for(j=0;j<4;j++) // this loop is supposed to print all positive numbers?
{
    printf("%d  ", A[positive]); // you are looping through A[0-3][0], which are not necessarily the positive numbers of A.
}
printf("\n");
//printf("Your positive numbers are: ", positive);

Теперь к вашему вопросу под рукой. То, что пытается сделать код, и то, что вы спрашиваете у нас, это две разные вещи. Прямо сейчас вы добавляете положительные значения в ваш массив C, но ваш вопрос касается отрицательных значений?

Исправлен код, который ведет себя так, как я думаю, вы хотите.

int main()
{
int A[4][4];
int C[16];
int k = 0;
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        printf("A[%d][%d]: ", i, j);
        scanf("%d", &A[i][j]);
        if (A[i][j] > 0) 
        {
            C[k] = A[i][j];
            k++;
        }
    }
}
printf("positive numbers in matrix A are: ");
for (int i = 0; i < k; i++) // loop from 0 to actual number of positive integers; array size remains at 16 in this case.
{
    printf("%d  ", C[i]);
}
printf("\n");
//printf("Your positive numbers are: ", positive);
printf("\n");
system("pause");
return 0;
}
...