Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2013, 16:33   #1
Margana17
Пользователь
 
Аватар для Margana17
 
Регистрация: 31.12.2013
Сообщений: 15
Вопрос задача на с: в матрице A(n,m) в каждом столбце найти минимальный эл-т

дана матрица А(n,m) в к-ом столбце найти минимальный эл-т. Это я сделала,а дальше нужен толчок....: В той строке где этот эл-т находится найти сумму положительных эл-в. каждый этап решать при помощи подпрограммы.
Margana17 вне форума Ответить с цитированием
Старый 31.12.2013, 17:06   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Так Вы покажите, как сделали, чтобы можно было что-то советовать дальше.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 31.12.2013, 20:12   #3
HelpCoder
Новичок
Джуниор
 
Регистрация: 26.12.2013
Сообщений: 1
По умолчанию

Код:
sum = 0;
for (i=0; i < m; i++)
	if (a[ns, i] > 0) sum = sum + a[ns, i];

ns - номер строки
m - кол-во столбцов
a[] - матрица
sum - переменная в которой сохраняется сумма полож. элементов

Если вы выполнили первое условие задачи, то составить функцию под второе, не составит труда.
Сам алгоритм я вам написал

Последний раз редактировалось HelpCoder; 31.12.2013 в 20:15.
HelpCoder вне форума Ответить с цитированием
Старый 03.01.2014, 15:44   #4
Margana17
Пользователь
 
Аватар для Margana17
 
Регистрация: 31.12.2013
Сообщений: 15
По умолчанию

спасибо большое! я хочу вырезать еще и строку с минимальным элементом( это то что под комментарием) но с этим блоком программа не работает. у меня экзамен по программированию 10 го числа, и нужно подготовится к нему самой..решила зайти на форум т к нужен хотя бы небольшой толчок с мертвой точки. А вообще программирование нравится и я сейчас пытаюсь его понять.
Изображения
Тип файла: jpg 4-1.1.jpg (30.3 Кб, 103 просмотров)
Тип файла: jpg 4-1.2.jpg (42.7 Кб, 95 просмотров)
Тип файла: jpg 4-1.3.jpg (39.0 Кб, 157 просмотров)
Тип файла: jpg 4-1.скриншот1.jpg (15.2 Кб, 99 просмотров)
Margana17 вне форума Ответить с цитированием
Старый 03.01.2014, 15:45   #5
Margana17
Пользователь
 
Аватар для Margana17
 
Регистрация: 31.12.2013
Сообщений: 15
По умолчанию

так я же написала что задача на С
Margana17 вне форума Ответить с цитированием
Старый 03.01.2014, 19:25   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Во-первых, выкладывайте сам код, а не его скриншоты
Во-вторых, Ваша функция xmin находит сам минимальный элемент, а не его положение.
Можно переписать так:
Код:
void
xmin(int n, int *x, int *r)
{
    int i;
    *r = 0;
    for (i = 1; i < n; ++i)
        if (x[i] < x[*r])
            *r = i;
}
...
printf("\nминимальный элемент %d\nстрока с минимальным элементом\n", y[r]);
for (i = 0; i < m; ++i)
    printf("%d ", a[r][i]);
В-третьих, неплохо бы освобождать память самому с помощью функции free.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.01.2014, 20:59   #7
Margana17
Пользователь
 
Аватар для Margana17
 
Регистрация: 31.12.2013
Сообщений: 15
Вопрос

то есть у меня # *r=x[0] # только ищет минимум, а если уже так #*r = 0; #то уже и минимум и положение элемента?


void xmin(int n,int*x,int*r)
{
int i;
*r=x[0];
for(i=1;i<n;i++)
if(x[i]<*r)
{
*r=x[i];
}
return;
}
Margana17 вне форума Ответить с цитированием
Старый 03.01.2014, 21:04   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

*r = x[0] - ищется значение минимального
*r = 0 - ищется положение минимального
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.01.2014, 21:30   #9
Margana17
Пользователь
 
Аватар для Margana17
 
Регистрация: 31.12.2013
Сообщений: 15
По умолчанию

не правильно ищет положение все равно...
Код:
void xpmin(int n,int*x,int*r)
{
int i;
*r=0;
for(i=1;i<n;++i)
	if(x[i]<x[*r])
	{
	*r=i;
	}
return;
}
main()
{
int i,j,n,m,**a,k,*y,s,r;
FILE *in;
clrscr();
in=fopen("massiv.dat","r");
printf(" n и m:");
scanf("%d%d",&n,&m);
a=(int**)malloc(n*sizeof(int*));
for(i=0;i<n;i++)
	a[i]=(int*)malloc(m*sizeof(int));
for(i=0;i<n;i++)
	for(j=0;j<m;j++)
		fscanf(in,"%d",&a[i][j]);
for(i=0;i<n;i++)
	{
	for(j=0;j<m;j++)
		printf("%3d",a[i][j]);
	printf("\n");
	}
printf("\n* k: \n");
scanf("%d",&k);
y=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
	y[i]=a[i][k];
for(i=0;i<n;i++)
	printf("%5d",a[i][k-1]);
xpmin(n,y,&r);
printf("\n положение мин\n строка",y[r]);
for(i=0;i<m;i++)
printf("%d",a[r][i]);
/*s=0;
for(i=0;i<n;i++)
	   if(y[i]>0)
	   s+=y[i];
	   printf("s=%d",s)*/
getch();
}

Последний раз редактировалось Stilet; 03.01.2014 в 21:39. Причина: недопечетала и случайно отправила)
Margana17 вне форума Ответить с цитированием
Старый 03.01.2014, 22:30   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Не тестировал:
Код:
void
xpmin(int n, int *x,int *r) {
    int i;
    *r = 0;
    for (i = 1; i < n; ++i)
        if (x[i] < x[*r])
            *r = i;
}

int
main() {
    int i, j, n, m, **a, k, *y, s, r;
    FILE *in;
    clrscr();
    in = fopen("massiv.dat", "r");
    printf("n и m:");
    scanf("%d%d", &n, &m);
    a = (int **) malloc(n * sizeof(int *));
    for (i = 0; i < n; ++i)
        a[i] = (int *) malloc(m * sizeof(int));
    for (i = 0; i < n; ++i)
        for (j = 0; j < m; ++j)
            fscanf(in, "%d", &a[i][j]);
    for(i = 0; i < n; ++i) {
        for(j = 0; j < m; ++j)
            printf("%3d", a[i][j]);
        printf("\n");
    }
    printf("\n* k (ot 0 do m-1): \n");
    scanf("%d", &k);
    y = (int*) malloc(n * sizeof(int));
    for (i = 0; i < n; ++i)
        y[i] = a[i][k];
    for (i = 0; i < n; ++i)
        printf("%5d ", y[i]);
    xpmin(n, y, &r);
    printf("\nположение минимального %d\nзначение минимального %d\n строка",r, y[r]);
    for (i = 0; i < m; ++i)
        printf("%d ", a[r][i]);
    for (i = 0; i < n; ++i)
        free(a[i]);
    free(a);
    free(y);
    getch();
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 03.01.2014 в 22:36.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в матрице найти сумму элементов в каждом столбце Стамус Помощь студентам 2 15.10.2012 07:23
В двумерном массиве найти минимальный максимальный элемент в строке\столбце Proskurina Паскаль, Turbo Pascal, PascalABC.NET 6 08.09.2012 21:14
В двумерном массиве найти минимальный максимальный элемент в строке\столбце Proskurina Помощь студентам 3 08.09.2012 11:07
В матрице nxm определить в каждом столбце минимальное и максимальное элемент число, возвести в степень. Рекурсия (на Паскаль абс) BArt2000 Паскаль, Turbo Pascal, PascalABC.NET 1 03.04.2012 08:32
[Delphi] В матрице обнулить все элементы, расположенные после максимального в каждом столбце Volodyajke Помощь студентам 5 17.11.2011 23:52