| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1183 人关注过本帖
标题:矩阵运算
只看楼主 加入收藏
重载
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
矩阵运算
C++题
1.对复数运算符重载
定义一个复数类,Complex,重载运算符“+”、“-”、”*”、“/”,使之能够用于两个复数、一个复数与一个实数的加、减、乘、除运算。重载运算符函数使用Complex成员函数和友元函数两种形式实现。
2.矩阵运算
设有两个3行3列矩阵A、B,求两矩阵的和、差、乘。
A+B=(aij+bij)
A-    B=(aij-bij)
3.简单职工工资管理统计
编程实现如下功能:
(1)    按职工号由大到小的顺序通过键盘输入10个职工的数据(包括职工号、姓名、年龄、工资)并输出到磁盘文件zggz1.dat(二级制文件)保存。
(2)    从键盘输入若干个职工数据(职工号要大于已存在的职工号)追加到磁盘文件zggz1.dat的末尾。
(3)    从键盘输入一个职工号,从磁盘文件zggz1.dat中有无该职工号,如存在,则显示该职工是第几个职工,并显示该职工的信息;如果没有,则显示信息“查无此人”。
(4)    从磁盘文件zggz1.dat读入全部职工数据,按工资从大到小排序后写入磁盘文件zggz2.dat(二进制文件),并在显示器中显示。
(5)    根据磁盘文件zggz1.dat中的职工数据,分别计算出职工最低工资、最高公职以及工资总额。
(6)    显示磁盘文件zggz1.dat中的职工数据。


需要详细备注解释和程序
搜索更多相关主题的帖子: 职工工资 Complex 键盘 统计 姓名 
2015-06-11 17:16
重载
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-11
收藏
得分:0 
运用谭浩强C++程序设计教材的内容,求助攻
2015-06-11 17:20
重载
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-11
收藏
得分:0 
2015-06-11 18:07
重载
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-11
收藏
得分:0 
没有一个人会吗?
2015-06-11 18:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
給你示範一個加法,其餘的自己試試類推。
 
程序代码:
/*
1.对复数运算符重载
定义一个复数类,Complex,重载运算符“+”、“-”、”*”、“/”,使之能够用于两个复数、一个复数
与一个实数的加、减、乘、除运算。重载运算符函数使用Complex成员函数和友元函数两种形式实现。
*/

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <conio.h>

// 複數類定義
class Complex
{
    double _real;            // 實部
    double _imaginary;        // 虛部

    public:

        Complex() : _real(0.0), _imaginary(0.0) {};
        Complex(double x, double y) : _real(x), _imaginary(y) {};

        // 轉換爲字符串
        std::string ToString(void);

        Complex operator + (const Complex& source);
        Complex& operator += (const Complex& source);
};

std::string Complex::ToString(void)
{
    char buffer[256];

    sprintf_s(buffer, "(%.4f, %.4f)", _real, _imaginary);
    return std::string(buffer);
}

Complex Complex::operator + (const Complex& source)
{
    return Complex(_real + source._real, _imaginary + source._imaginary);
}

Complex& Complex::operator += (const Complex& source)
{
    _real += source._real;
    _imaginary += source._imaginary;

    return *this;
}

int main(void)
{
    Complex a(1, 0);
    Complex b(-1, 2);
    Complex c(1.5, -0.3);

    std::cout << "a = " << a.ToString().c_str() << std::endl;
    std::cout << "b = " << b.ToString().c_str() << std::endl;
    std::cout << "c = " << c.ToString().c_str() << std::endl;

    std::cout << std::endl;

    std::cout << "a + b : " << (a + b).ToString().c_str() << std::endl;
    std::cout << "a += c : " << (a += c).ToString().c_str() << std::endl;

    std::cout << "\nPress any key to continue...";
    _getch();
    return EXIT_SUCCESS;
}


運行效果:
图片附件: 游客没有浏览图片的权限,请 登录注册



[ 本帖最后由 TonyDeng 于 2015-6-11 23:05 编辑 ]

授人以渔,不授人以鱼。
2015-06-11 23:02
重载
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-11
收藏
得分:0 
回复 5楼 TonyDeng
我不会。。。
2015-06-13 09:02
重载
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-11
收藏
得分:0 
回复 5楼 TonyDeng
图片附件: 游客没有浏览图片的权限,请 登录注册
没有在那个范围中声明
2015-06-13 09:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那是vc安全函数,你的编译器把_s去掉即可

授人以渔,不授人以鱼。
2015-06-13 09:43
w2009w
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:190
专家分:542
注 册:2015-4-20
收藏
得分:0 
好多编译器,乱七八糟,都不知道用哪个最好
2015-06-13 13:49
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
#include<iostream>
using namespace std;
class matrix         //自己做一个三阶方阵类
{
public:
   /*matrix(){};
   matrix(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9)
   {
       element[0][0]=a1;element[0][1]=a2;element[0][2]=a3;
       element[1][0]=a4;element[1][1]=a4;element[1][2]=a6;
       element[2][0]=a7;element[2][1]=a8;element[2][2]=a9;
   }*/
   int element[3][3];
   matrix operator*(matrix& multiplied)
   {
        matrix C;
        for(int row=0;row<3;row++)
        {
             for(int col=0;col<3;col++)
             {
                     C.element[row][col]=0;
                     for(int k=0;k<3;k++)
                         C.element[row][col]+=(element[row][k]*multiplied.element[k][col]);
             }
        }
        return C;
   }
};
int main()
{
    int get[9];
    cout<<"Please input the elements of matrix A:\n";
    cin>>get[0]>>get[1]>>get[2]>>get[3]>>get[4]>>get[5]>>get[6]>>get[7]>>get[8];
    matrix A;
    int idx;
    for(idx=0;idx<9;idx++)
    {
         A.element[idx/3][idx%3]=get[idx];
    }
    cout<<"you just input\n"<<get[0]<<'\t'<<get[1]<<'\t'<<get[2]<<endl;
    cout<<get[3]<<'\t'<<get[4]<<'\t'<<get[5]<<endl;
    cout<<get[6]<<'\t'<<get[7]<<'\t'<<get[8]<<endl;
    cout<<"Please input the elements of matrix B:\n";
    cin>>get[0]>>get[1]>>get[2]>>get[3]>>get[4]>>get[5]>>get[6]>>get[7]>>get[8];
    matrix B;
    for(idx=0;idx<9;idx++)
    {
         B.element[idx/3][idx%3]=get[idx];
    }
    cout<<"you just input\n"<<get[0]<<'\t'<<get[1]<<'\t'<<get[2]<<endl;
    cout<<get[3]<<'\t'<<get[4]<<'\t'<<get[5]<<endl;
    cout<<get[6]<<'\t'<<get[7]<<'\t'<<get[8]<<endl;
    matrix C;
    C=A*B;
    cout<<"After multiplication, you get\n";
    for(int r=0;r<3;r++)
    {
         for(int c=0;c<3;c++)
         {
              cout<<C.element[r][c]<<'\t';
         }
         cout<<endl;
    }
   return 0;
}

这是三阶矩阵相乘所用的*运算符重载。已测试。加减法更容易,自己处理吧。
2015-06-13 19:01
快速回复:矩阵运算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017703 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved