Форум программистов, компьютерный форум CyberForum.ru

Функция для сложения и вычитания вещественных матриц - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Медиана последовательности http://www.cyberforum.ru/cpp-beginners/thread98370.html
Ограничение времени: 1.0 секунды Ограничение памяти: 1 МБ Пусть задана последовательность из N целых неотрицательных чисел. Медианой такой последовательности в случае нечетного N называется элемент, который будет равноудален от концов последовательности, если ее отсортировать по возрастанию или убыванию (нетрудно сообразить, что этот элемент имеет номер (N+1)/2 в отсортированной...
C++ Формула Добрый день. Как на языке С++ будет выглядеть следующая формула? http://www.cyberforum.ru/cpp-beginners/thread98366.html
динамические массивы в wxDev-C++ C++
у меня такая проблема ... код int n; cout<<"n="; cin>>n; char c; for (int i=0; i < n; i++){ c=i+48; cout<<c; } в wxDev-C++ ( в GCC ) работает а вроде не должно ...
C++ Точка и Треугольник
Даны действительные числа x1, x2, x3, y1, y2, y3. Принадлежит ли начало координат треугольнику с вершинами (x1, y1), (x2, y2), (x3, y3)?
C++ Сортировка массива структур... http://www.cyberforum.ru/cpp-beginners/thread98318.html
Здравствуйте! Не могли бы вы выложить примеры или кинуть ссылочку на интересную статью по сортировке массива структур. Имеется массив структур, каждая структура из 5 полей, где 1 - символьное, а остальные - вещественные числа. Необходимо организовать сортировку данного массива структур по каждому из полю. Как сортировать обычные массивы я знаю, а вот массивы структур не получается. Например,...
C++ Разделить строку на слова. В общем есть строка, и ее надо разбить на массив строк чтобы каждое слово было в ствоей строке. Знаю что надо пользоваться strstr но в виду неопытности даже не знаю как сделать... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
11.03.2010, 17:57     Функция для сложения и вычитания вещественных матриц
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
1)Написать и протестировать функцию для сложения и вычитания вещественных матриц. Одним из формальных параметров должен быть признак вида операции.
Признак вида операции - указатель на функцию сложения или умножения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
inline double addition(double a, double b)
{
    return a+b;
}
 
inline double subtraction(double a, double b)
{
    return a-b;
}
//Сложение/вычитание матриц
double** WithMatrix(double** a,//Первая матрица
            double** b,//Вторая матрица
            size_t row, size_t col, //Размеры матриц
            double (*operation)(double, double)//Указатель на фунцию-тип операции
           )
{
    double** matrix=new double*[row];
    for(size_t i=0; i<row; ++i)
    {
        matrix[i]=new double[col];
        for(size_t j=0; j<col; ++j)
            matrix[i][j]=operation(a[i][j], b[i][j]);
    }
    return matrix;
}
//Создание матрицы
double** CreateMatrix(size_t row, size_t col)
{
    double** matrix=new double*[row];
    for(size_t i=0; i<row; ++i)
    {
        matrix[i]=new double[col];
        for(size_t j=0; j<col; ++j)
            matrix[i][j]=((double)(rand()%101-50))/((double)(rand()%50+1));
    }
    return matrix;
}
//Удаление матриц
void DeleteMatrix(double** matrix, size_t row)
{
    for(size_t i=0; i<row; ++i)
        delete[] matrix[i];
    delete[] matrix;
}
//Печать матрицы
void DisplayMatrix(double** matrix, size_t row, size_t col)
{
    for(size_t i=0; i<row; ++i, std::cout << std::endl)
        for(size_t j=0; j<col; ++j)
            std::cout << std::setw(10) << std::setprecision(4) << matrix[i][j];
}
 
int main()
{
    srand((size_t)time(NULL));
    size_t row=4, col=5;
    double** M1=CreateMatrix(row, col);
    double** M2=CreateMatrix(row, col);
    std::cout << "M1:" << std::endl;
    DisplayMatrix(M1, row, col);
    std::cout << "M2:" << std::endl;
    DisplayMatrix(M2, row, col);
    double** SUM=WithMatrix(M1, M2, row, col, addition);//Сумма
    std::cout << "SUM:" << std::endl;
    DisplayMatrix(SUM, row, col);
    double** SUB=WithMatrix(M1, M2, row, col, subtraction);//Разность
    std::cout << "SUB:" << std::endl;
    DisplayMatrix(SUB, row, col);
    DeleteMatrix(M1, row);
    DeleteMatrix(M2, row);
    DeleteMatrix(SUM, row);
    DeleteMatrix(SUB, row);
    system("pause");
    return EXIT_SUCCESS;
}
Добавлено через 8 минут
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
2)Написать и протестировать функцию, которая определяет, располагаются ли буквы в заданной символьной строке в алфавитном порядке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
    std::string string("abcehyz");
    std::string sorted(string);
    //Сортировка в алфавитном порядке
    std::sort(sorted.begin(), sorted.end());
    std::cout << sorted << std::endl;
    //Если строки совпадают, то в исходной строке
    //символы расположены в алфавитном порядке
    if(string==sorted)
        std::cout << "Yes" << std::endl;
    else 
        std::cout << "No" << std::endl;
    system("pause");
    return EXIT_SUCCESS;
}
Добавлено через 4 минуты
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
3)Даны вещественные числа а, b, с, d, e, f. Переменной s присвоить значение 1, если оба уравнения ах2 + bх + с = 0 и dx2 + ex + f = 0 имеют вещественные корни и при этом все корни первого уравнения лежат между корнями второго уравнения. В противном случае переменной s присвоить значение 0. (Для нахождения корней квадратного уравнения использовать функцию.)
Ищешь дискриминант для каждого из квадратных уравнений. Если D<0, то действительных корней у уравнения нет. Если D==0, то (считается), что у квадратного уравнения есть два одинаковых действительных корня. Если D>0, то эти корни - различны. Находишь корни каждого уравнения и проверяешь, лежат ли корни первого уравнения между корнями второго
 
Текущее время: 03:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru