Как я могу получить 0 в правой части некоторых указанных c цифр в этом 2d массиве? - PullRequest
0 голосов
/ 01 апреля 2020

В этом коде я взял два одномерных массива и сохранил множители и множители в них. Затем я сохранил результаты умножения в 2d массиве, чтобы добавить их.

{
    int n, m, i, j;
    printf("Enter multiplicand(n) size: ");
    scanf("%d", &n);
    printf("Enter multiplier(m) size: ");
    scanf("%d", &m);
    int a[n], b[m];
    printf("Enter multiplicands: ");
    for(i = 0; i<n; i++)
    {
        scanf("%d", &a[i]);
    }
    printf("Enter multipliers: ");
    for(i = 0; i<m; i++)
    {
        scanf("%d", &b[i]);
    }
    int c[m][n+m] , k = 0 , l = m+n-1 , p = 2;
    for(i = 0; i<m; i++)
    {
        for(j = 0; j<m+n; j++)
        {
            c[i][j] = -1;
        }
    }
    for(i = m-1; i>=0; i--)
    {
        for(j = n-1; j>=0; j--)
        {
            c[k][l] = a[j]*b[i];
            l--;
        }
        l = m+n-p;
        p++;
        k++;
    }
    for(i = 0; i<m; i++)
    {
        for(j = 0; j<m+n; j++)
        {
            printf("%d ", c[i][j]);
        }
        printf("\n");
    }
}

Я смог получить -1 в верхнем левом углу, но я хочу 0 в правом нижнем углу чисел. Итак, если я введу a [5] = {1, 1, 1, 1, 1}, b [5] = {1, 1, 1, 1, 1} Я должен получить:

-1 -1 -1 -1 -1 1 1 1 1 1
-1 -1 -1 -1 1 1 1 1 1 0
-1 -1 -1 1 1 1 1 1 0 0
-1 -1 1 1 1 1 1 0 0 0
-1 1 1 1 1 1 0 0 0 0

1 Ответ

0 голосов
/ 03 апреля 2020

Вот код чище с распечатками. Я действительно не понимаю, что вы пытаетесь сделать. Все -1 l oop сбивает с толку, и выходной пример не ясен.

Я думаю, вы пытаетесь просто добавить результат умножения в новый массив? Но что означает -1?

    #include <stdio.h>

int main()
{

    int n, m, i,l, j,k,p;
    n =5;
    m = 5;
    int a[5] = {1}, b[5] = {1};

    int c[m][n+m];
    k = 0; 
    l = m+n-1; 
    p = 2;

    for(i = 0; i<m; i++)
    {
        printf("\n");
        for(j = 0; j<m+n; j++)
        {
            c[i][j] = -1;
            printf("[%i][%i]:%i ",i,j,c[i][j]);
        }
    }

    printf("\n");

    for(i = m-1; i>=0; i--)
    {
        printf("\n");
        for(j = n-1; j>=0; j--)
        {
            c[k][l] = a[j]*b[i];
            printf("[%i][%i]: %i x %i = %i ",k,l,a[j],b[i],c[k][l]);
            l--;
        }

        l = m+n-1;
        k++;
    }

    printf("\n\n");

    for(i = 0; i<m; i++)
    {
        for(j = 0; j<m+n; j++)
        {
            printf("%d ", c[i][j]);
        }
        printf("\n");
    }
}

Если вы объясните больше о том, что вы пытаетесь сделать, я могу отредактировать это, чтобы помочь.

Например, если ваш массив 'a' равен {2,4}, а ваш массив 'b' - {3,6}. Каков ожидаемый вывод массива 'c'.

c = {? }

Output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...