21

Re: Допоможіть з функціями підпрограми в С

stovbanolexandr написав:

десь у вас помилка, бо воно як виводило 2ий елемент матриці у добутку, так і далі виводить

Це не в мене помилка, це у вас помилка була в mult == j > i:D

22

Re: Допоможіть з функціями підпрограми в С

Дуже дякую вам за допомогу, а чи можна записати, щоб у добуток був тільки кінцевий, а не по порядку

23

Re: Допоможіть з функціями підпрограми в С

я видалив else і кількість зменшилася, але чи можна звести до одного?

24

Re: Допоможіть з функціями підпрограми в С

stovbanolexandr написав:

Дуже дякую вам за допомогу, а чи можна записати, щоб у добуток був тільки кінцевий, а не по порядку

Зdісно можна, треба винести printf поза цикл, аби виводило множення тільки з останньої ітерації циклу:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int A[4][4], E[3][3];
int main()
{
  printf("Вхідна матриця A\n");
  srand(time(NULL));
  for (int i = 0; i < 4; i++)
  {
    for (int j = 0; j < 4; j++)
    {
      A[i][j] = (rand() % 10) + 1;
      printf("%i\t", A[i][j]);
    }
    printf("\n");
  }

  int mult = 1;
  for (int i = 0; i < 4; i++)
  {
    for (int j = 0; j < 4; j++)
    {
      if (j > i)
      {
        mult = mult * A[i][j];
      }
    }
  }
  printf("Добуток А: %i\n", mult);

  printf("Вхідна матриця E\n");
  srand(time(NULL));
  for (int i = 0; i < 3; i++)
  {
    for (int j = 0; j < 3; j++)
    {
      E[i][j] = (rand() % 10) + 1;
      printf("%i\t", E[i][j]);
    }
    printf("\n");
  }

  int multi = 1;

  for (int i = 0; i < 3; i++)
  {
    for (int j = 0; j < 3; j++)
    {
      if (j > i)
      {
        multi = multi * E[i][j];
      }
    }
  }
  printf("Добуток Е: %i\n", multi);

}