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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2011, 16:21   #1
sasha14486
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 23
По умолчанию умножения строк

Возник вопрос по реализации произведения строк в матрицы.Нужно сформировать вектор b из произведения элементов строк
К примеру матрица
2 3 4 1=2*3*4*1=24
2 2 1 4=2*2*1*4=8
1 1 1 2=1*1*1*2=2

Код:
#include<stdio.h>
#include<conio.h>
void main(){
	int i,j,m,n,c;
	int a[4][4],b[4];
	clrscr();
		puts("Введите размерность матрицы:");
		scanf("%d%d",&m,&n);
		printf("Введите элементы матрицы:\n");
	for(i=0;i<m;i++)
	for(j=0;j<n;j++)
		scanf("%d",&a[i][j]);
		puts("*** Наша матрица ***");
	for(i=0;i<m;i++){
	for(j=0;j<n;j++)
		printf("%d\t",a[i][j]);
		printf("\n");
	}
	  puts("Vector:");
	for(i=0;i<m;i++)

	for(i=0;i<m;i++)
		printf("%d",b[]);
	}
sasha14486 вне форума Ответить с цитированием
Старый 02.05.2011, 17:40   #2
Exeil
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 24
По умолчанию

как то давно такую функцию писал:
Код:
//*******************{Umnojenie}************************
int **Function_Umnojenie(int **arr1, int **arr2, int MaxStolb1, int MaxStroka1, int MaxStolb2, int MaxStroka2)
{
	int **arr3;
	int Result = 0;
	arr3 = new int *[MaxStolb1];
	for(int J=0; J <= MaxStolb1;J++) arr3[J]= new int[MaxStroka1];
	
	//если введенные массивы удовлетворяют условиям умножения
	if ((MaxStolb1 != MaxStroka2))
	{
		printf("\nErorr: for umnojenie need stolbiki1=strokam2 matrix\n");
		return 0;
	}
	//само умножение
	for(int stolb=0; stolb < MaxStolb1; stolb++)
	{
		for(int stroka = 0; stroka < MaxStroka1; stroka++)
		{
			Result = 0;
			for (int y = 0; y < MaxStroka1; y++)
				Result += arr1[y][stroka] * arr2[Curent_Stolb][y];
			arr3[Curent_Stolb][stroka] = Result;
		}
	}
	return arr3;
}

Последний раз редактировалось Exeil; 02.05.2011 в 19:05.
Exeil вне форума Ответить с цитированием
Старый 02.05.2011, 22:53   #3
EC.cpp
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 30
По умолчанию

Если Вы используете условие типа "Введите размерность матрицы"...
То Ваш вектор произведения необходимо будет задавать динамически, в духе:
int* Vect = (int*) new int[RAZMER]
EC.cpp вне форума Ответить с цитированием
Старый 02.05.2011, 23:13   #4
RgnRok
Пользователь
 
Аватар для RgnRok
 
Регистрация: 13.01.2009
Сообщений: 19
По умолчанию

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

То что нужно автору до боли банально
Код:
double a[n][n];
double b[n];
int i,j;
double pr=1;

for (i=0; i<n; ++i)
  { for (j=0; j<n; ++j)
          pr*=a[i][j];
    b[i]=pr;
    pr=1;}
RgnRok вне форума Ответить с цитированием
Старый 03.05.2011, 12:27   #5
sasha14486
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 23
По умолчанию

Код:
double a[n][n];
double b[n];
int i,j;
double pr=1;

for (i=0; i<n; ++i)
  { for (j=0; j<n; ++j)
          pr*=a[i][j];
    b[i]=pr;
    pr=1;}
Кампилятор что-то ругается на эту строчку b[i]=pr;
Lvalue required

Уже все ок, испривил, вроде работает програма
Код:
#include<stdio.h>
#include<conio.h>
void main(){
	int i,j,m,n;
	int a[50][50];
	int b[50];
	double pr=1;
	clrscr();
		puts("Вводим размерность:");
		scanf("%d%d",&m,&n);
		printf("Vvedite a\n");
	for(i=0;i<m;i++)
	for(j=0;j<n;j++)
		scanf("%d",&a[i][j]);
		puts("*** Матрица ***");
	for(i=0;i<m;i++){
	for(j=0;j<n;j++)
		printf("%d\t",a[i][j]);
		printf("\n");
	}
	for(i=0;i<n;i++){
	for(j=0;j<n;j++)
	pr*=a[i][j];
		b[i]=pr;
		pr=1;
	}
	for(i=0;i<n;i++)
	printf("%d",b[i]);
	getch();
}
Только програма не всегда правильно работает

Последний раз редактировалось sasha14486; 03.05.2011 в 12:50.
sasha14486 вне форума Ответить с цитированием
Старый 03.05.2011, 15:34   #6
sasha14486
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 23
По умолчанию

вопрос снят, програма работает только для квадратной матрици.
sasha14486 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция умножения. 0479 Общие вопросы Delphi 3 26.02.2011 00:42
Замена умножения и деления Alex Cones Общие вопросы Delphi 16 05.09.2010 18:00
Составить функцию для умножения матрицы matr из n строк и m столбцов на вектор vect (из n элементов) KASPEER Помощь студентам 7 12.01.2010 15:11
Таблица умножения Golovastik Общие вопросы C/C++ 18 25.07.2009 23:46
вывод таблицы умножения Soule Паскаль, Turbo Pascal, PascalABC.NET 3 12.10.2007 11:26