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

С++ CodeBlocks Матрицы - C++

Восстановить пароль Регистрация
 
Andreyuni
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 5
03.11.2013, 10:56     С++ CodeBlocks Матрицы #1
Здравствуйте. Помогите пожалуйста. В данной лабораторной работе, которая приложена. Программа считает для матриц размерност 2 , но для размерностей >2 программа перестает работать. Я предполагаю что где то деление на ноль, но никак его не могу найти.
Вложения
Тип файла: rar Matrix.rar (184.4 Кб, 8 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 10:56     С++ CodeBlocks Матрицы
Посмотрите здесь:

Codeblocks! C++
codeblocks C++
Codeblocks C++
C++ codeblocks
CodeBlocks C++
C++ Codeblocks > C++
С++ CodeBlocks C++
C++ CodeBlocks 13.12 vs 10.05

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
03.11.2013, 11:21     С++ CodeBlocks Матрицы #2
Andreyuni, код выложите прямо сюда, в тэгах С++
Andreyuni
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 5
03.11.2013, 11:43  [ТС]     С++ CodeBlocks Матрицы #3
#include <iostream>;
#include <stdlib.h>
#include <ctime>;
using namespace std;
float** A;
float** B;
float** C;
float** D;
float** A2;
float** B2;
int N;
float** Zapm(int N) // Заполнение матрицы
{float **A;
A = new float*[N];
for(int i = 0; i < N; i++)
{
A[i] = new float[N];
}
return A;
}
void Sluch(float **A, int N) // Заполнение случайными числами
{
srand(time(0));
for (int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
{
A[i][j] = rand() % 100;
}
}
void PrintMatrix(float** matrix, int N) // Печать матрицы
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
cout << "
}
float MinInMatrix(float** matrix, int N) // Минимальный элемент в матрице
{
float min = matrix[0][0];
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
if(matrix[i][j] < min)
min = matrix[i][j];
return min;
}
float MaxInMatrix(float** matrix, int N) // Максимальный элемент в матрице
{
float max = matrix[0][0];
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
if(max < matrix[i][j])
max = matrix[i][j];
return max;
}
float** T(float** matrix, int N)
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
for(int j = i; j < N; j++)
{
temp[i][j] = matrix[j][i];
}
}
return temp;
}
float** E(int N) // Единичная матрица
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
temp[i][i] = 1;
}
return temp;
}
float** SumMatrix(float** A, float** B, int N) // Сумма матрицы
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
for(int j = 0; j < N; j++)
temp[i][j] = A[i][j] + B[i][j];
}
return temp;
}
float** Vich(float** A, float** B, int N) // Вычитание матриц
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
for(int j = 0; j < N; j++)
temp[i][j] = A[i][j] - B[i][j];
}

Добавлено через 1 минуту
#include <iostream>;
#include <stdlib.h>
#include <ctime>;

using namespace std;

float** A;
float** B;
float** C;
float** D;
float** A2;
float** B2;
int N;

float** Zapm(int N) // Заполнение матрицы
{float **A;

A = new float*[N];
for(int i = 0; i < N; i++)
{
A[i] = new float[N];

}
return A;
}
void Sluch(float **A, int N) // Заполнение случайными числами
{
srand(time(0));
for (int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
{
A[i][j] = rand() % 100;
}
}
void PrintMatrix(float** matrix, int N) // Печать матрицы
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
cout << "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||" << endl;
}
float MinInMatrix(float** matrix, int N) // Минимальный элемент в матрице
{
float min = matrix[0][0];
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
if(matrix[i][j] < min)
min = matrix[i][j];
return min;
}
float MaxInMatrix(float** matrix, int N) // Максимальный элемент в матрице
{
float max = matrix[0][0];
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
if(max < matrix[i][j])
max = matrix[i][j];
return max;
}
float** T(float** matrix, int N)
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
for(int j = i; j < N; j++)
{
temp[i][j] = matrix[j][i];
}
}
return temp;
}
float** E(int N) // Единичная матрица
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
temp[i][i] = 1;
}
return temp;
}
float** SumMatrix(float** A, float** B, int N) // Сумма матрицы
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
for(int j = 0; j < N; j++)
temp[i][j] = A[i][j] + B[i][j];
}
return temp;
}
float** Vich(float** A, float** B, int N) // Вычитание матриц
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
for(int j = 0; j < N; j++)
temp[i][j] = A[i][j] - B[i][j];
}
return temp;
}
float** UmnNumMatrix(float** matrix, float a, int N) // Умножение матриц на число
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
{
temp[i] = new float[N];
for(int j = 0; j < N; j++)
temp[i][j] = matrix[i][j] * a;
}
return temp;
}
float** UmnMatMatrix(float** A, float** B,int N) // Умножение матриц
{
float** temp = new float*[N];
for(int i = 0; i < N; i++)
temp[i] = new float[i];
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
for(int k = 0; k < N; k++)
temp[i][j] += A[i][k] * B[k][j];
return temp;
}
int main()
{
cout << "Vvedite razmer matricy: ";
cin >> N;
A=Zapm(N);
B=Zapm(N);
A2=Zapm(N);
B2=Zapm(N);
C=Zapm(N);
D=Zapm(N);
Sluch(A,N);
Sluch(B,N);
cout << "Matrica A: " << endl;
PrintMatrix(A,N);

cout << "Matrica B: " << endl;
PrintMatrix(B,N);
for(int i = 0; i < N; i++)
{
float min = A[i][0]; // перемещение максимального на 1 место в сточке Матрица A
for(int j = 1; j < N; j++)
if(min > A[i][j])
min = A[i][j];
A[i][0] = min;
}
for(int i = 0; i < N; i++) // перемещение максимального на 1 место в сточке Матрица B
{
float min = B[i][0];
for(int j = 1; j < N; j++)
if(min > B[i][j])
min = B[i][j];
B[i][0] = min;
}
cout << "A maksim elem v ctroke :" << endl;
PrintMatrix(A,N);

cout << "B maksim elem v ctroke : " << endl;
PrintMatrix(B,N);
if ((MinInMatrix(A,N))==0)
cout << "Oshibka";
C = UmnNumMatrix(B,1.0/MinInMatrix(A,N),N); // B/min(A)
C = SumMatrix(A,C,N); // A+B/min(A)
C = Vich(C,E(N),N); // A+B/min(A)-E(N)
A2 = UmnMatMatrix(C,C,N); // (A+B/min(A)-E(N))^2
C = UmnNumMatrix(A2,3,N); // 3*(A+B/min(A)-E(N))^2
D = UmnMatMatrix(A,B,N); // (A*B)
B2 = UmnMatMatrix(D,D,N);
D = UmnMatMatrix(B2,B2,N); //(A*B)^3
D = UmnNumMatrix(D,4,N);// 4*(A*B)^3
C = SumMatrix(C,D,N); //3*(A+B/min(A)-E(N))^2+4*(A*B)^3
cout << "Matrica C: " << endl;
PrintMatrix(C,N);
D = Vich(A,B,N); //(A-B)
D = UmnNumMatrix(T(D,N),9,N); // 9*(A-B)T
C = SumMatrix(A,B,N); // A+B
A2 = UmnMatMatrix(C,C,N); // (A+B)^2
C = UmnNumMatrix(B,1.0/MaxInMatrix(B,N),N); //(A+B)^2*B/max(B)
D = Vich(D,C,N); //9*(A-B)T-(A+B)^2*B/max(B)
cout << "Matrica D: " << endl;
PrintMatrix(D,N);
return 0;
}
Yandex
Объявления
03.11.2013, 11:43     С++ CodeBlocks Матрицы
Ответ Создать тему
Опции темы

Текущее время: 23:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru