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

> Внимание!

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

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

> Формирование вектора
сообщение
Сообщение #1


Профи
****

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

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


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

Объясните пожалуйста, каким способом решать задачу...не могу составить конкретного алгоритма....
(есть такое предположение : записать в один массив суммы элементов каждого столбца, в другой - номер столбца, где находится первый положительный элемент строки, а после сравнивнить: равны ли очерёдный элемент второго массива и индекса 1-го массива)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


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

int ColumnSum(int **mx, int col, int n) {
int s = 0;
for (int i = 0; i < n; i++) { s += mx[i][col]; }
return s;
}

void CreateVector(int **mx, int *arr, int n) {
for (int i = 0; i < n; i++) {
int j = 0;
while ((j < n) && (mx[i][j] <= 0)) j++;
arr[i] = (j < n) ? ColumnSum(mx, j, n) : 0;
}
}

int n, *x, **m;

int main (void) {
n = 5;

x = (int*)malloc(n * sizeof(int));
m = (int**)malloc(n * sizeof(int*));

for (int i = 0; i < n; i++)
m[i] = (int*)malloc(n * sizeof(int));

srand(time(NULL));

for (i = 0; i < n; i++) {
printf("\n");
for (int j = 0; j < n; j++) {
m[i][j] = rand() % 10 - 5;
printf("%4d", m[i][j]);
}
}

CreateVector(m, x, n);

printf("\n\n");

for (i = 0; i < n; i++) printf("%5d", x[i]);

free(x);
for (i = 0; i < n; i++) free(m[i]);
free(m);

return 0;
}


упс, опоздал smile.gif

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

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

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


Цитата(klem4 @ 5.06.2007 18:49) *

упс, опоздал smile.gif

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


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

for (i=0; i < n; i++)
{

j = 0;
while ((j < n)&&(a[i][j] <=0)) j++;

x[i] = (j < n) ? x[j] : 0;
}
return x;
}

//одно НО! у меня выходной массив х получается из одинаковых элементов, т.к. в строчке
//x[i] = (j < n) ? x[j] : 0;
//не могу предусмотреть изменение x[j]. в таком варианте это вообще выполнимо?





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

Сообщений в этой теме


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

 





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