30/09/2018, 16:36

Viết chương trình tính tích 2 ma trận A và B. (chỉ sử dụng hàm main)

Viết chương trình tính tích hai ma trận C(nxm) = A(nxp) * B(pxm), in 3 ma trận ra màn hình

Ai giúp mình làm bài đó với, nhưng chỉ dùng hàm main thui, không dùng hàm con nhá mn, tks mn
p/s: Viết bằng ngôn ngữ C nhé mn

X viết 18:42 ngày 30/09/2018

trong đó có viết hàm nhập ma trận, hàm in ma trận. In các ma trận ra màn hình.

nhưng chỉ dùng hàm main thui, không dùng hàm con nhá mn

ý là sao nhỉ ??

NOName viết 18:48 ngày 30/09/2018

mình nhầm tí, mình sửa lại r

NOName viết 18:37 ngày 30/09/2018

Cậu biết thì vào viết giúp mình vs

Gió viết 18:40 ngày 30/09/2018

Mình có viết 1 ít về thuật toán nhân ma trận strassen bạn có thể xem qua. Nếu nhân ma trận bình thường thì của mình là hàm straight

github.com

boconganh/algorithm/blob/master/c/strassen.c

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

typedef long long ll;
typedef struct{
	ll **a;
	int m,n;
}matrix;

void read(matrix *a){
	scanf("%d%d",&(a->m),&(a->n));
	int i,j;
	a->a=(ll**) malloc(sizeof(ll*)*a->m);
	for(j=0;j<a->m;++j){
		a->a[j]=(ll*) malloc(sizeof(ll)*a->n);
		for(i=0;i<a->n;++i){
			scanf("%lld",a->a[j]+i);
		}
This file has been truncated. show original

NOName viết 18:50 ngày 30/09/2018

Viết ngôn ngữ C mà dùng các vòng lặp cơ cậu ơi, mình mới học C, hjx. mà chỉ sử dụng hàm main mà k dùng các hàm con

X viết 18:39 ngày 30/09/2018

Lục lại kho code ngày xưa được cái này chắc là phù hợp với newbie :)) trông không thể cơ bản hơn

#include <iostream>
using namespace std;
int main()
{
	int a[10][10], b[10][10],c[10][10];
	int x,y,i,j,m,n;


	cout<<"\nNhap vao dong/cot cua ma tran A: ";
	cin>> x >> y;
	for(i=0;i<x;i++)
	{
		for(j=0;j<y;j++)
		{
			cout << "Nhap phan tu A[" << i << "][" << j << "]: ";
			cin >> a[i][j];
		}
	}

	cout<<"\nNhap vao so dong/cot ma tran B: ";
	cin>>m>>n;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			cout << "Nhap phan tu B[" << i << "][" << j << "]: ";
			cin>>b[i][j];
		}
	}

	cout <<"\nMa tran A: " << endl;

	for(i=0;i<x;i++)
	{
		for(j=0;j<y;j++)
		{
			cout << a[i][j] << "  ";
		}
		cout << endl;
	}

	cout <<"\nMa tran B: " << endl;

	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			cout << b[i][j] << "  ";
		}
		cout << endl;
	}

	cout << "Ket qua: "<< endl;
	if(y == m)
	{
		for(i = 0; i < x; i++)
		{
			for(j = 0; j < n; j++)
			{
				c[i][j] = 0;
				for(int k = 0; k < m; k++)
				{
					c[i][j] = a[i][k] * b[k][j];
				}
			}
		}

		for(i = 0; i < x; i++)
		{
			for(j = 0; j < n; j++)
			{
				cout << c[i][j] << "  ";
			}
			cout << endl;
		}
	}
	else
	{
		cout<<"Khong chia duoc!";
	}
	return 0;
}
lê tuấn anh viết 18:45 ngày 30/09/2018

c[i][j] = a[i][k] * b[k][j]; => Đoạn này ko đúng rồi, phải là c[i][j] += a[i][k] * b[k][j];

X viết 18:48 ngày 30/09/2018

à đúng rồi. ngày xưa làm sai mà k phát hiện a chỉ lấy rồi copy ra thôi chứ chưa xem lại, tks @tuananh_2108

NOName viết 18:41 ngày 30/09/2018

Hjx ai cover ra ngôn ngữ C giúp mình đc ko, mình mới học C với C++ mình chưa học

Tùng Vũ viết 18:38 ngày 30/09/2018

ở trên có thuật toán đấy bạn tự động não đi chứ nhờ mấy anh chị cover thì bạn sẽ k giỏi được đâu phải sai nhiều vào mới có thể thành công

Bài liên quan
0