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

Двумерные массивы (СЛАУ). Привести систему к треугольному виду - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ иллюстрация полиморфизма http://www.cyberforum.ru/cpp-beginners/thread749906.html
Доброго времени суток!написал примитив для иллюстрации полиморфизма,ориентировался по видеокурсам с ТыТрубы #include<iostream.h> #include<conio.h> class Shape { public : virtual float calc_area()=0; }; class Rectangle : public Shape
C++ Функция для записи в буфер из потока существует в с++ такая функция для загрузки потока данных в строку fgets(buf,10000, f); но недостаток этой функции в том, что при наличии в потоке символа конца строки, он прекращает запись из потока посему подскажите пожалуйста, существует ли функция которая будет записывать в строку из потока до тех пор пока не наступит конец файла, а не до попадания на символ конца строки. http://www.cyberforum.ru/cpp-beginners/thread749889.html
Представление кода в виде функции C++
Столкнулся с проблемой, сделал код в виде функций, все запускается и вроде бы работает, но как введу значения жму Enter и программа просто виснет. В чем может быть проблема? Компилятор все норм компилит. Исходный: //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <tchar.h> #include <iostream.h> #include <math.h>
Длинная арифметика (найти остаток при делении на 7) C++
Уважаемые программисты! Задача на длинную арифметику (никогда такую не решал, потому хочу разобраться. Математически понимаю, а как написать код не знаю). Сама задача такова: нужно найти остаток при делении очень длинного числа (до 50 знаков) на 7. Приведите, пожалуйста, код.
C++ Двумерные массивы. Использование динамически распределяемой памяти http://www.cyberforum.ru/cpp-beginners/thread749828.html
В с++ Создать квадратную матрицу целых чисел и выполнить ее обработку согласно заданию, указанному ниже. Выполнить задание с такими дополнительными условиями: - размер матрицы вводится с клавиатуры; - память под двумерный массив выделяется динамически, на этапе выполнения программы; - ввод, вывод и обработку матрицы реализовать в виде функций, которым матрица передается в качестве...
C++ Сложение двух чисел в Двоично-десятичной системе счисления Доброго времени суток, может есть ли у кого уже готовый код? или же можете носом ткнуть на ссылку, bcd - двоично десятичная система, весь инет перерыл подобных сорсов не нашел Суть программы: Сложение двух чисел в двоично-десятичной системе счислений подробнее

Показать сообщение отдельно
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
31.12.2012, 13:52     Двумерные массивы (СЛАУ). Привести систему к треугольному виду
Приведение матрицы к вехрнему треугольному виду)
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
//
//  main.cpp
//
//  Created by Ilya Lavrenov on 12/31/12.
//
 
#include <iostream>
#include <emmintrin.h>
 
// приведение матрицы к треугольному виду
void to_triangle(double** matrix, unsigned int size)
{
    // y - ведущая строка
    for (unsigned int y0 = 0; y0 < size; ++y0)
    {
        if (matrix[y0][y0] == 0.0)
            return;
        
        // вычитаемые строки
        for (unsigned int y1 = y0 + 1; y1 < size; ++y1)
        {
            // нахождение коээфициента
            double _k = matrix[y1][y0] / matrix[y0][y0];
            
            unsigned int x = y0;
#ifdef __SSE2__
            __m128d k = _mm_load1_pd(&_k);
            for ( ; x <= size - 2; x += 2)
            {
                __m128d r0 = _mm_loadu_pd(matrix[y0] + x);
                __m128d r1 = _mm_loadu_pd(matrix[y1] + x);
                r0 = _mm_mul_pd(k, r0);
                r1 = _mm_sub_pd(r1, r0);
                _mm_storeu_pd(matrix[y1] + x, r1);
            }
#endif
            for ( ; x < size; ++x)
                matrix[y1][x] -= matrix[y0][x] * _k;
        }
    }
}
 
int main(int argc, const char * argv[])
{
    double** matrix = NULL;
    unsigned int size = 0u;
    
    std::cout << "Введите размер матрицы" << std::endl;
    std::cin >> size;
    
    matrix = new double*[size];
    for (unsigned int y = 0u; y < size; ++y)
        matrix[y] = new double[size];
    
    std::cout << "Введите матрицу размером " << size << "x" << size << ": " << std::endl;
    for (unsigned int y = 0u; y < size; ++y)
        for (unsigned int x = 0u; x < size; ++x)
            std::cin >> matrix[y][x];
    
    to_triangle(matrix, size);
    
    std::cout << "Ответ: " << std::endl;
    for (unsigned int y = 0u; y < size; ++y)
    {
        for (unsigned int x = 0u; x < size; ++x)
            std::cout << matrix[y][x] << " ";
        std::cout << std::endl;
    }
    
    return 0;
}
 
Текущее время: 01:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru