IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Нижняя треугольная матрица, Си
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Дана матрица 5 на 5. Определить массив из 5-ти элементов, каждый из которых равен произведению элементов соответствующего столбца нижней треугольной матрицы.

Проблема как раз в формировании массива:

int *mas_x (int (*a)[n], int *x)
{
int i,j;

for (j=1; j < n; j++)
{
int pro=1;
for (i=1; i < j; i++)
pro*= a[i][j];
x[j] = pro;
}

return x;
}



Выдаются совершенно посторонние значения....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вызов этой функции покажи... Под массив X где место отводится?

Добавлено через 11 мин.
Кстати, почему индексация с 1? Надо бы с 0, иначе получишь мусор как минимум в первом элементе вектора X ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 5.06.2007 10:16) *

Вызов этой функции покажи... Под массив X где место отводится?

Добавлено через 11 мин.
Кстати, почему индексация с 1? Надо бы с 0, иначе получишь мусор как минимум в первом элементе вектора X ...



#include <STDIO.H>
#define n 3
#include <CONIO.H>
void input_matr (int a[n][n])
{
int i,j;
printf ("Vvedite elementi matrici: \n");
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf ("%d", &a[i][j]);
}
void input_matr_fail (int a[n][n])
{
int i,j;
FILE *fp;
fp=fopen("IN4-2.txt", "r");
for (i = 0; i < n; i++)
for (j = 0; j <n; j++)
fscanf (fp,"%d" , & a[i] [j]);
fclose(fp);
}

int *mas_x (int (*a)[n], int *x)
{
int i,j;

for (j=0; j < n; j++)
{
int pro=1;
for (i=0; i < j; i++)
pro*= a[i][j];
x[j] = pro;
}



return x;
}
void output (int a[n][n], int x[n])
{
int i,j;
FILE *fp;
printf ("Matrica a: \n");
for ( i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf ("%5d", a[i][j]);
printf ("\n");
}
printf ("Massiv x: \n");
for ( i= 0; i < n; i++)
printf ("%5d", x[i]);
printf ("\n");
fp = fopen ("out4-2.txt", "w");
fprintf (fp,"Matrica a: \n");
for ( i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
fprintf (fp, "%5d", a[i][j]);
fprintf (fp,"\n");
}
fprintf (fp,"Massiv x: \n");
for ( i= 0; i < n; i++)
fprintf (fp, "%5d", x[i]);
fprintf (fp,"\n");
fclose (fp);
}

void main ()
{
clrscr();
int a[n][n], x[n],c;
do
{
printf("vvod matr:\n1 - s klaviatyri\n2 - iz faila\n");
scanf("%d",&c);
}
while (c!=1 && c!=2);
switch ©
{
case 1: input_matr(a);
break;
case 2: input_matr_fail(a);
}
output(a,mas_x(a,x));
}





путаница какая-то со значениями массива х....

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
нижней треугольной матрицы
- это той, которая под главной диагональю? Тогда так:

int *mas_x (int (*a)[n], int *x) {
int i, j;
for (j=0; j < n; j++) {

int pro=1;
for (i=j; i < n; i++)
pro*= a[i][j];
x[j] = pro;
}
return x;
}
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 18:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name