1

Тема: Завдання з двовимірними масивами

Потрібно обчислити суму рядків матриці за рівнянням:b1*x^n-1+b2*x^n-2+...+bn,x вводиться з клавыатури.Чи за правильним принципом я це роблю.
Якщо так,то де похибка?

int main()
{
int i,j,n,t;
float x,x1=0;
printf("Vvedit n->");
scanf("%d",&n);
printf("Vvedit x->");
scanf("%d",&x);
float A[n][n];
float B[n];
printf("Zapovnit matricu");
for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    scanf("%f",&A[i][j]);
for(i=0;i<n;i++)
        B[i]=0;
for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
       if(A[i][j]<0)
            A[i][j]=1;
    }
for(i=0,t=n;i<n;i++)
    for(j=0;j<n;j++)
    {
        x1=pow(x,t-1);
        B[i]+=A[i][j]*x1;
        t--;
    }
for(i=0;i<n;i++)
        printf("%f\n",B[i]);
    return 0;
}

2

Re: Завдання з двовимірними масивами

Ви щось робите, але мені дуже важко сказати, що саме.

dimakrupko00 написав:

обчислити суму рядків матриці


це як? Рядок матриці - це набір чисел. Що таке сума рядків чисел?

dimakrupko00 написав:

за рівнянням b1*x^n-1+b2*x^n-2+...+bn

Це не рівняння. Рівняння - це коли щось чомусь дорівнює. Вираз без знака рівності не є рівнянням за визначенням.

Гм. Можливо, мало бути так: "знайти для кожного рядка матриці суму за формулою ..."?
Чи "знайти суму формул, застосованих до всіх рядків матриці"?
Чи "знайти значення формули, де bi - сума i-го рядка матриці"?
Можете на матриці 2х2 показати, як саме слід застовувати цю формулу?

Крім того, вирівняйте код (після кожного { відступ збільшується на 2 або 4 відступи, коли зустрічається { - зменшується). Подекуди ви поставили відступи, але не всюди.
І не намагайтеся відгадати, підходить код чи ні - якщо ви вважаєте, що він підходить, просто перевірте. Якщо не підійшов - вказуйте, як саме ви перевіряли.

Подякували: 221VOLT1

3

Re: Завдання з двовимірними масивами

Мені потрібно обчислити значення b1*x^n-1+b2*x^n-2+...+bn, де bi(i=1,2,...,n)-перший за порядком додатний елемент і-го рядка матриці;якщо в і-му рядку додатних елементів немає,то bi=1

4

Re: Завдання з двовимірними масивами

Будемо сподіватися, що це вся умова.
Просто зауваження: тут можна було б застосувати схему Горнера. Але то вже ваш вибір, можете і з цього боку розв'язувати.

dimakrupko00 написав:
for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
       if(A[i][j]<0)
            A[i][j]=1;
    }

Перша проблема тут. В умові нічого не сказано про заміну елементів A; зрештою, це просто неправильно, бо, наприклад, з рядка (-1, 0.5) треба взяти коефіцієнт 0.5, а після заміни треба буде брати 1.
Вам треба в кожному рядку (A[ i ]) знайти перший додатний елемент і занести в B[ i ], а якщо його немає, поставити в B[ i ] 1. Після цього ви можете забути про масив A і працювати лише з B. Тепер зможете запрограмувати?

Подякували: 221VOLT, dimakrupko002