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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Darita
0 / 0 / 0
Регистрация: 19.05.2014
Сообщений: 18
#1

Дана матрица 4x4. Нужно составить вектор из минимальных элементов столбцов матрицы - C++

26.05.2014, 20:20. Просмотров 654. Ответов 0
Метки нет (Все метки)

Условие задачи: дана матрица 4x4. Нужно составить вектор из минимальных элементов столбцов матрицы. Написать функции для чтения из файла, вывести на экран матрицу и вектор.

Вот код программы:
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
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <iomanip>
using namespace std;
//Прототип функции для чтения матрицы из файла
double** inputf (ifstream& f, int n, int m, char std[40]);
//Прототип функции для вывода матрицы на монитор
void outputm(double** a,int n,int m);
//Прототип функции нахождения минимальных значений 
double* min (double** a, int n, int m, int l);
//Прототип для функции вывода вектора
void outputv (double* x, int l);
//Главная функция
void main()
{//Руссификация
    setlocale (LC_ALL, "Russian");
 //Объявление потока чтения из файла и массивов
    ifstream sf;
    double** a, * x;
    char s[40];
    int n, m;
 //Ввести имя файла, из которого читается матрица а
    cout<<"\n Ввод имени файла, из которого читается матрица а \n";
    cin>>s;
    cout<<"\n Количество столбцов а\n";
    cin>>n;
    cout<<"\n Количество строк а\n";
    cin>>m;
 //Читаем матрицу а из файла
    a=inputf (sf, 4, 4, s);
 //Выводим матрицу а
    cout<<"\n Матрица а: \n";
    outputm (a, 4, 4);
 //Обращение к функции поиска минимального элемента
    x=min (a, 4, 4, 4);
 //Обращение к функции для вывода вектора
    cout<<"\n Вектор x: \n";
    outputv (x, 4);
    cout<<endl;
}
//Функция для чтения матрицы из файла
double** inputf ( ifstream& f, int n, int m, char str[40])
{//Объявление переменных
    double** a;
    int i, j;
 //Открываем файл чтения, проверяем успешность открытия файла
    f.open (str);
    if (f.fail()) {cout<<"\n Ошибка открытия файла для чтения ";
                exit(1);
                  }
    //Выделение памяти под массив
    a=new double* [n];
    if(a==NULL) {cout<<"\nНедостaточно ОП ";
                  exit(1);
                 }
    for(i=0;i<n;i++)
      {a[i]=new double [m];
    if(a==NULL) {cout<<"\nНедостaточно ОП ";
                  exit(1);
                 }
      }
 
 //Чтение матрицы из файла
    for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    f>>a[i][j];
 //Закрытие файла
    f.close();
    return a;
}
//Функция для вывода динамической матрицы
void outputm(double** a,int n,int m)
{//Объявление переменных
int i,j;
//Вывод
for(i=0;i<n;i++)
  {cout<<endl;
   for(j=0;j<m;j++)
     cout<<setw(10)<<a[i][j];
  }
}
//Функция нахождения минимальных значений столбцов матрицы
double* min (double** a, int n, int m, int l)
{//Объявление переменных
    int i, j;
    double* x;
    double p;
 //Выделение ОП под вектор
    x=new double [l];
    if (x==NULL) {cout<<"\n Не хватило ОП ";
    exit(1);
    }
    for(j=0;j<m;j++)
        x[j]=0;
 //Вычисления
    for (j=0; j<m; j++)
    {p=a[0][j]; l=j;
        for (i=0; i<n; i++)
        {if (a[i][j]<p) {p=a[i][j];
                         x[l]=p;
                        }
        }
    }
    return x;
}
//Вывод вектора
void outputv (double* x, int l)
{//Объявление переменных
    int i;
 //Вычисления
    for (i=0; i<l; i++)
    {if (i%6==0) cout<<endl;
    cout<<setw(10)<<x[l];
    }
}
При запуске программы ничего не выдает: ни ошибок, ни угроз. Но получается такой результат:
Ввод имени файла, из которого читается матрица а
D:\m.cpp

Количество столбцов а
4

Количество строк а
4

Матрица а:

1.2 4.75 -11.8 13
3.45 -2.1 8 0
7.43 0 -3.25 4.17
-2.2 9.86 4.58 15
Вектор x:

-1.45682e+144-1.45682e+144-1.45682e+144-1.45682e+144
Для продолжения нажмите любую клавишу . . .
В чем тут проблема, подскажите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2014, 20:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дана матрица 4x4. Нужно составить вектор из минимальных элементов столбцов матрицы (C++):

Даны три квадратные матрицы. Сформировать вектор, состоящий из минимальных элементов каждой матрицы, отличных от нуля - C++
Даны три квадратные матрицы. Сформировать вектор, состоящий из минимальных элементов каждой матрицы, отличных от нуля. Поиск минимального...

Дана вещественная матрица А(N.M). Составить программу замены всех отрицательных элементов матрицы на элемент, имеющий максимальное значение. - C++
Дана вещественная матрица А(N.M). Составить программу замены всех отрицательных элементов матрицы на элемент, имеющий максимальное...

Составить программу обмена местами максимального и минимального элементов главной диогонали матрицы 4x4. - C++
как я понял надо работать только с главной диогональю зарание спасибо!

Найти произведение минимальных по модулю элементов столбцов матрицы - C++
Дана действительная матрица размерности M*N. Найти произведение минимальных по модулю элементов ее столбцов и записать это произведение на...

Дана матрица A m×n. Сформировать вектор B из m элементов - C++
Дана матрица A m×n. Сформировать вектор B из m элементов, каждый из которых равен минимальному элементу соответствующей строки матрицы А. n...

В прямоугольной целочисленные матрицы определить сумму минимальных элементов столбцов - C++
в прямоугольной целочисленные матрицы определить сумму минимальных элементов столбцов

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2014, 20:20
Привет! Вот еще темы с ответами:

Дана действительная матрица А(N*M) и массив В(N).Заменить четные столбцы матрицы на вектор B. - C++
Прошу помочь решить задачки!:(очень нужно (Билет №26) Дана действительная матрица А(N*M) и массив В(N).Заменить четные столбцы...

Дана матрица размером МхN. Сформировать из этой матрицы вектор по правилу - C++
Как решить эту программу с помощью указателей? Задача Дано матрицу размером МхN. Сформировать из этой матрицы вектор по правилу:...

Работа с многомерными массивами. Дана матрица размером М * N. Сформировать из этой матрицы вектор по правилу - C++
Дано матрицу размером М * N. Сформировать из этой матрицы вектор по правилу: первые N элементов вектора - это элементы матрицы первого...

Дана квадратная матрица A[n,n] b вектор b[n]. Определить сумму положительных элементов вектора c=b*A - C++
Дана целочисленная квадратная матрица A порядка n и вектор b размером n. Определить сумму положительных элементов вектора c=b*A


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru