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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2008, 23:27   #1
ReDev1L
 
Регистрация: 18.10.2008
Сообщений: 7
По умолчанию Умножение строки на столбец.

Задача:
Умножение строки с минимальным элементом матрицы на столбец с максимальным элементом.
Код:
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "iostream"

void vvod (int a[10][10], int x, int y)
{
	int i,j;
	for (i = 0; i < x; i++)
	{
		printf("Enter %d string\n", i + 1);
		for (j = 0; j < y; j++)
			scanf("%d", &a[i][j]);
	}
}
void count_string_on_col (int x, int y)
{
	int z = x * y;
	int sum =  
}
void main()
{
	int i,j;
	int x;
	int y;
	int min;
	int max;
	int ar[10][10];
	printf("Enter number of stings and col's, 2 3 etc is array with 2 strings and 3 col's\n");
	scanf("%d %d", &x, &y);
	int minString;
	int maxColumn;
	vvod (ar, x, y);
	printf("Array before operation:\n");
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d ", ar[i][j]);
	}
	for (i = 0; i < x; i++)
	{
		for (j = 0; j < y; j++)
		{
			if (ar[i][j] < min)
			{
				minString = i;
				min = ar[i][j];
			}
		}
	}
	for (j = 0; j < y; j++)
	{
		for (i = 0; i < x; i++)
		{
			if (ar[i][j] > max)
			{
				maxColumn = j;
				max = ar[i][j];
			}
		}
	}
	getch();
}
Красным выделен поиск строк и столбцов, синим - функция(нужно через функцию) операции, по умножению строки матрицы на столбец. с ней то и траблы.как считать знаю, как реализовать это в коде, нет
умножаться должно так:
1
2
3
4
m
1234n
1*1+2*2+3*3+4*4+n*m

как сделать цикл, чтоб одновременно плюсовал 2 переменные? типа такого:
Код:
	for (i = 0; i < x; i++)(j = 0; j < y; j++)
	{
			z = 0;
			z = ar[minString][j] * ar[i][maxColumn];
			sum = sum + z;
	}

Последний раз редактировалось ReDev1L; 21.10.2008 в 00:24.
ReDev1L вне форума Ответить с цитированием
Старый 21.10.2008, 00:28   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Для начала. Когда вы ищете мин и макс элемент, нужно сначала задать в качестве MAX и MIN заведомо малое и заведомо большое значение соответственно.
А по поводу функции... Тут вроде все просто.
minString и maxColumn вы вычисляете. А в самой функции - цикл по J для ar[minString][j] и цикл по I для ar[i][maxColumn].

Последний раз редактировалось mihali4; 21.10.2008 в 00:34.
mihali4 вне форума Ответить с цитированием
Старый 21.10.2008, 01:29   #3
ReDev1L
 
Регистрация: 18.10.2008
Сообщений: 7
По умолчанию

допер:
Код:
void EnterString (int a[10][10], int x, int y)
{
	int i,j;
	for (i = 0; i < x; i++)
	{
		printf("Enter %d string\n", i + 1);
		for (j = 0; j < y; j++)
			scanf("%d", &a[i][j]);
	}
}
int CountArrays (int a, int b, int x, int y, int i, int j, int sum)
{
	int c[10];
	c[j] = 0;
	c[i] = a * b;
	sum = sum + c[j];
	return sum;
}
void main()
{
	int i,j,x,y;
	int sum = 0;
	int ar[10][10];
	int minString = 0;
	int maxColumn = 0;
	printf("Enter number of stings and col's, 2 3 etc is array with 2 strings and 3 col's\n");
	scanf("%d %d", &x, &y);
	EnterString (ar, x, y);
	int min = ar[0][1];
	int max = ar[0][1];
	printf("Array before operation:\n");
	for (i = 0; i < x; i++)
	{
		printf("\n");
		for (j = 0; j < y; j++)
			printf("%d ", ar[i][j]);
	}
	printf("\n");
	printf("\n");
	for (i = 0; i < x; i++)
	{
		for (j = 0; j < y; j++)
		{
			if (ar[i][j] < min)
			{
				minString = i;
				min = ar[i][j];
			}
		}
	}
	for (j = 0; j < y; j++)
	{
		for (i = 0; i < x; i++)
		{
			if (ar[i][j] > max)
			{
				maxColumn = j;
				max = ar[i][j];
			}
		}
	}
	for (i = 0; i < x; i++)
	{
		for (j = 0; j < y; j++)
		{
			CountArrays (ar[minString][j], ar[i][maxColumn], x, y, i, j, sum);
		}
	}
	/*int ar1[10];
	for (i = 0; i < x; i++)
	{
		for (j = 0; j < y; j++)
		{
			ar1[j] = 0;
			ar1[i] = ar[minString][j] * ar[i][maxColumn];
			sum = sum + ar1[j];
		}
	}*/
	printf("%d\n", sum);
	getch();
}
только сумма всегда выходит 0, как исправить?, если без ф-и то все норм.

Последний раз редактировалось ReDev1L; 21.10.2008 в 01:46.
ReDev1L вне форума Ответить с цитированием
Старый 21.10.2008, 01:52   #4
ReDev1L
 
Регистрация: 18.10.2008
Сообщений: 7
По умолчанию

мна спать, ночные прогеры исправте мою ошибку в ф-и пожалуйста)
ReDev1L вне форума Ответить с цитированием
Старый 21.10.2008, 17:52   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, тут у вас просто бред написан, поэтому и сумма нулевая:
Код:
for (j = 0; j < y; j++)
		{
			ar1[j] = 0;
			ar1[i] = ar[minString][j] * ar[i][maxColumn];
			sum = sum + ar1[j];
		}
Можете циклить до посинения, но у вас только sum = sum + 0 !
mihali4 вне форума Ответить с цитированием
Старый 21.10.2008, 21:22   #6
ReDev1L
 
Регистрация: 18.10.2008
Сообщений: 7
По умолчанию

почему тогда без ф-и всё исправно работает?
ReDev1L вне форума Ответить с цитированием
Старый 21.10.2008, 22:31   #7
ReDev1L
 
Регистрация: 18.10.2008
Сообщений: 7
По умолчанию

то что закоменченно и выделено синим - работает, неработает то что красным)
ReDev1L вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблица, выделить столбец BlackOmen JavaScript, Ajax 0 26.09.2008 13:52
Как вывести один столбец в несколько??? M&Ms Microsoft Office Excel 9 21.07.2008 14:19
Удалить столбец двумерного массива вещественных чисел dolbi Помощь студентам 2 29.03.2008 06:30
Флажки на весь столбец Talisman Microsoft Office Excel 12 02.01.2008 19:20
Умножение матрицы на столбец в ассемблере hecz Помощь студентам 0 04.12.2007 09:55