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

Исправьте ошибку для ленточной стр. симетр. матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры.Вывести список http://www.cyberforum.ru/cpp-beginners/thread827358.html
Здраствуйте. Помогите,пожалуйста,с програмой, немного не понимаю как сделать В отделе кадров хранится список преподавателей университета, в котором указано Ф.И.О. преподавателя, его возраст, должность, факультет, на котором работает преподаватель. Вывести список доцентов младше 55 лет. #include <iostream> using namespace std; struct { char fio; int vik;
C++ Развернуть матрицу подиагонально в одномерный массив Развернуть матрицу подиагонально в одномерный массив Конечно были идеи: вроде приписывать нулевые матрицы и брать у них главную диагональ... ну или записать две матрицы где чередуются с нулевыми диагоналями... Прошу помощи =( Буду премного благодарен ! http://www.cyberforum.ru/cpp-beginners/thread827338.html
C++ Ошибка потокового ввода cin
Цель: сделать проверку ввода с клавиатуры числа unsigned short типа. Проблема: при вводе значения кпримеру: 2A , то переходит к следующему считыванию значения и в него пытается вписать что-то. Код: unsigned short UserId; // Идентификатор пользователя cout << " Введите индентификатор пользователя (0;255): "; // Интервал исходя из 2^8, где 8-биты cin >> UserId; while(cin.fail() || !(UserId >=...
в чем ошибка? задача на "сортировку массива" C++
Подскажите в чем ошибка в коде. Я должен отсортировать массив по убыванию элементов. #include <iostream> #include <conio.h> #include<time.h> using namespace std; const int N=10; void main () { int A; int B; srand(time(NULL));
C++ Циклы и использование case http://www.cyberforum.ru/cpp-beginners/thread827309.html
Вот задание: Напишите программу, которая читает из cin входные числа (целые или вещественные) и суммирует, умножает или делит их, прекращая процесс после ввода 0. Сконструируйте три версии этой программы для каждого случая с использование циклов while, do-while, for. Вот моя программа: Только 1 проблемка, циклы while и for работают, но вот в цикле do_while при вводе 0 не происходит выход из...
C++ Строки и файлы Доброго времени суток. Я студент, и недавно перешёл с Pascal на С++, и столкнулся с такой проблемой, что не могу понять, как в "плюсах" работать со строками и файлами. Пожалуйста, дайте кто- нибудь ссылку на источник с информацией, где коротко и конструктивно объясняется работа со строками. Заранее спасибо. подробнее

Показать сообщение отдельно
кщтеук34
1 / 1 / 0
Регистрация: 27.02.2013
Сообщений: 70

Исправьте ошибку для ленточной стр. симетр. матрицы - C++

03.04.2013, 21:42. Просмотров 259. Ответов 0
Метки (Все метки)

Дана разреженная ленточная матрица. Найти матрицу, обратную к ней. Помогите исправить ошибку
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "stdafx.h" 
#include <iostream> 
#include <cstdlib>
 
using namespace std; 
 
void Input(double ** array, int size) 
{
    for (int v = 0; v < size; v++)
    { 
        for (int h = 0; h < size; h++)
        { 
            if (abs(v-h) > size/4)
            { 
            cout << "(" << v << ")(" << h << "): 0";// << endl;
            } 
            else
            { 
                cout << "(" << v << ")(" << h << "): ";
                cin >> array[v][h - (v - size/4 - 1)];
            }
        }
    }
 }
int getEl(double ** array, int v, int h, int size) 
{
    if (abs(v-h) > size/4)
    { 
        return 0; 
    } 
    else 
    { 
        return array[v][h - (v - size/4 - 1)]; 
    }
}
void Output(double ** array, int size) 
{   
    cout << endl <<"Matrica:" << endl;
    for(int v = 0; v < size; v++)
    { 
        for(int h = 0; h < size; h++) 
        cout <<getEl(array, v, h, size);
        cout << endl;
    }
}
 
 
 
void inversion(double **A, int N)
{
    double temp;
 
    double **E = new double *[N];
 
    for (int i = 0; i < N; i++)
        E[i] = new double [N];
 
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
        {
            E[i][j] = 0.0;
 
            if (i == j)
                E[i][j] = 1.0;
        }
 
    for (int k = 0; k < N; k++)
    {
        temp = A[k][k];
 
        for (int j = 0; j < N; j++)
        {
            A[k][j] /= temp;
            E[k][j] /= temp;
        }
 
        for (int i = k + 1; i < N; i++)
        {
            temp = A[i][k];
 
            for (int j = 0; j < N; j++)
            {
                A[i][j] -= A[k][j] * temp;
                E[i][j] -= E[k][j] * temp;
            }
        }
    }
 
    for (int k = N - 1; k > 0; k--)
    {
        for (int i = k - 1; i >= 0; i--)
        {
            temp = A[i][k];
 
            for (int j = 0; j < N; j++)
            {
                A[i][j] -= A[k][j] * temp;
                E[i][j] -= E[k][j] * temp;
            }
        }
    }
 
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            A[i][j] = E[i][j];
 
    for (int i = 0; i < N; i++)
        delete [] E[i];
 
    delete [] E;
}
 
int main() 
{
//-------Задаём размерность матрицы
    cout << "Vvedite razmernost': ";
    int size; 
    cin >> size;
//-------Создаём матрицу
    double **array1 = new double *[size]; 
        for (int v = 0; v < size; v++) 
        array1[v] = new double[size/2 + 1]; 
        cout << "Vvedite matricy: " << endl;
        Input(array1, size);
        Output(array1, size);
//--------Сумма элементов
 
inversion(array1, size);
Output(array1, size);
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru