Главная » 2015 » Март » 24 » матрицы. задача 9. регистровые и нерегистровые переменные
10:25
матрицы. задача 9. регистровые и нерегистровые переменные

#include <iostream>
#include <ctime>
using namespace std;
double &put(int i, int j); 
double get(int i, int j);     
const int n=5, m=7;
double a[n][m];
double error = -1;
int main()
{
    setlocale(LC_ALL, "Russian");  
    int start,end;
    double max;
    //нерегистровые переменые
    start=clock();
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
            put(i,j)=rand()%10;
    }
    cout <<"матрица А1:"<<endl;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
        {
            cout <<get(i,j)<<" ";
        }
        cout <<endl;
    }
    
    max=get(0,0);
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
            if (get(i,j)>max) max=get(i,j);
    }
    //деление на max
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
            put(i,j)=get(i,j)/max;
    }
    
    cout <<"Новая матрица А1:"<<endl;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
        {
            cout <<get(i,j)<<" ";
        }
        cout <<endl;
    }
    end=clock();
    cout <<"Время выполнения: "<<end-start<<endl;

    //регистровые переменные
    register int i2;
    register int j2;
    register double max2;
    register long start2,end2;
    start2=clock();
    for (i2=0;i2<n;i2++)
    {
        for (j2=0;j2<m;j2++)
            put(i2,j2)=rand()%10;
    }
    cout <<"матрица А1:"<<endl;
    for (i2=0;i2<n;i2++)
    {
        for (j2=0;j2<m;j2++)
        {
            cout <<get(i2,j2)<<" ";
        }
        cout <<endl;
    }
    
    max2=get(0,0);
    for (i2=0;i2<n;i2++)
    {
        for (j2=0;j2<m;j2++)
            if (get(i2,j2)>max2) max2=get(i2,j2);
    }
    //деление на max
    for (i2=0;i2<n;i2++)
    {
        for (j2=0;j2<m;j2++)
            put(i2,j2)=get(i2,j2)/max2;
    }
    
    cout <<"Новая матрица А1:"<<endl;
    for (i2=0;i2<n;i2++)
    {
        for (j2=0;j2<m;j2++)
        {
            cout <<get(i2,j2)<<" ";
        }
        cout <<endl;
    }
    end2=clock();
    cout <<"Время выполнения с регистровыми переменными: "<<end2-start2<<endl;

    system("pause");
    return 0;
}

double &put(int i, int j)
{
    if((i>=0) && (i<n) && (j>=0) && (j<m))
        return a[i][j]; 
        else
        {
            cout << "Ошибка нарушения границ!\n";
            return error; 
        }
}

double get(int i, int j)
{
    if((i>=0) && (i<n) && (j>=0) && (j<m))
        return a[i][j]; 
        else 
        {
            cout << "Ошибка нарушения границ!\n";
            return error; 
        }
}

Просмотров: 376 | Добавил: denjes | Рейтинг: 0.0/0
Всего комментариев: 0
avatar