Помогите написать программу
|
|
valentinshmickov | Дата: Четверг, 26.11.2015, 01:53 | Сообщение # 1 |
НовичЁк
Группа: Проверенные
Сообщений: 4
Статус: Оффлайн
| 1. Определить количество строк и столбцов в ней (в случае, если файл имеет неверный формат - выдать сообщение об ошибке), прочитать в двумерный массив все значения в ячейках матрицы. 2. Под неверным форматом понимаются случаи, когда данные в файле не являются матрицей (таблицей) или значения ячеек матрицы не являются вещественными. Вывести пользователю. В консоль количество строк и столбцов в матрице. 3. Вычислить минимальное и максимальное значение в матрице. 4. Отсортировать значения в матрице по возрастанию или убыванию (задать об этом вопрос пользователю) 5. Вывести в файл (название файла принять от пользователя) в виде такой же матрицы значения функций f(x), где "х" - ячейка исходной матрицы.
|
|
| |
Алексей | Дата: Четверг, 26.11.2015, 01:56 | Сообщение # 2 |
Продвигающийся
Группа: Администраторы
Сообщений: 324
Статус: Оффлайн
| valentinshmickov, Библиотеку к проекту надеюсь знаешь как подключать?
Код #include <fstream> #include<locale.h> #include<time.h> #include <stdlib.h> #include <stdio.h> #include <Windows.h> #include <iostream> #include <string.h> #include <omp.h> using namespace std;
struct maxmin { maxmin() {} double min; double max; };
double **filein(int n, int m) { double **mass = new double *[n]; cout << "Исходный массив" << endl;
double nm = n * m, id=0;
for (int i = 0;i < n; i++) { mass [i]= new double[m]; for (int j = 0;j < m;j++) { id++; mass [i][j]= 1 + rand() % 1001; now: int i1 = i, j1 = j - 1; while (1) { if (i1 == -1) { break; } if ((mass[i1][j1] == mass[i][j]) && ((i == i1 && j > j1) || (i > i1))) { srand(time(NULL)); mass [i][j]= 1 + rand() % 1001; goto now; } j1--; if (j1 < 0) { i1--; j1 = m - 1; } if (i1 < 0) { break; } } cout << (id * 100) / nm << "% "; } } cout << endl; for (int i = 0;i < n;i++) { for (int j = 0;j < m;j++) { cout << mass [i][j]<< "\t"; } cout << endl; }
return mass; }
maxmin обработчик1(double **mass, int n, int m) { maxmin res; res.min = res.max = mass[1][1]; for (int i = 0;i < n;i++) { for (int j = 0;j < m;j++) { if (res.max < mass[i][j]) { res.max = mass[i][j]; } else if (res.min > mass[i][j]) { res.min = mass[i][j]; } } } return res; }
double **обработчик2(double **mass, int n, int m) { start: cout << "Как отсортировать элементы матрицы (возрастанию - 1/убыванию - 2)? "; int ty; cin >> ty; if (ty == 1) { double tmp; for (int i = 0; i < n;i++) for (int j = 0;j < m;j++) for (int i1 = 0;i1 < n;i1++) for (int j1 = 0;j1 < m;j1++) { if ((mass[i1][j1] < mass[i][j]) && ((i == i1 && j<j1) || (i<i1))) { tmp = mass[i][j]; mass [i][j]= mass[i1][j1]; mass[i1][j1] = tmp; } } } else if (ty == 2) { double tmp; for (int i = 0; i < n;i++) for (int j = 0;j < m;j++) for (int i1 = 0;i1 < n;i1++) for (int j1 = 0;j1 < m;j1++) { if ((mass[i1][j1] > mass[i][j]) && ((i == i1 && j<j1) || (i<i1))) { tmp = mass[i][j]; mass [i][j]= mass[i1][j1]; mass[i1][j1] = tmp; } } } else { cout << "Вы ввели неправильное значение" << endl; goto start; } return mass; }
int main(int argc, char *argv) { setlocale(LC_ALL, "Russian"); srand(time(NULL)); int n, m; cout << "Введите размерность (столбы строки): "; cin >> n >> m; system("pause"); maxmin max_min; double **mass = filein(n, m); double **sortmass;
#pragma omp parallel { #pragma omp sections { #pragma omp section { max_min = обработчик1(mass, n, m); } #pragma omp section { sortmass = обработчик2(mass, n, m); } } }
cout << "Результаты работы программы" << endl; cout << "Минимальный элемент массива - " << max_min.min << endl; cout << "Максимальный элемент массива - " << max_min.max << endl; cout << "Отсортированный массив:" << endl; for (int i = 0;i < n;i++) { for (int j = 0;j < m;j++) { cout << sortmass [i][j]<< "\t"; } cout << endl; }
system("pause"); }
|
|
| |
valentinshmickov | Дата: Четверг, 26.11.2015, 01:58 | Сообщение # 3 |
НовичЁк
Группа: Проверенные
Сообщений: 4
Статус: Оффлайн
| Алексей, спасибо. С файлом разберусь, наверное.
|
|
| |
ladyirina-rom1995 | Дата: Четверг, 26.11.2015, 02:07 | Сообщение # 4 |
НовичЁк
Группа: Пользователи
Сообщений: 4
Статус: Оффлайн
| Алексей, а где ввод и вывод из файла?
|
|
| |
valentinshmickov | Дата: Четверг, 26.11.2015, 02:10 | Сообщение # 5 |
НовичЁк
Группа: Проверенные
Сообщений: 4
Статус: Оффлайн
| ladyirina-rom1995, Да я сам сделаю
|
|
| |
ladyirina-rom1995 | Дата: Четверг, 26.11.2015, 02:12 | Сообщение # 6 |
НовичЁк
Группа: Пользователи
Сообщений: 4
Статус: Оффлайн
| valentinshmickov, ты не смог сделать элементарные функции и закрепить их в omp, но ввод и вывод сделаешь...
|
|
| |
Алексей | Дата: Четверг, 26.11.2015, 15:01 | Сообщение # 7 |
Продвигающийся
Группа: Администраторы
Сообщений: 324
Статус: Оффлайн
| ladyirina-rom1995, ввод/вывод сделает сам. Я откуда знаю какого формата файл из которого получаем информацию, может он из обычного txt это берет, может это бинарный файл, а может excel таблица. В любом случае простейшие моменты типа ввода и вывода молодой человек в силах сделать самостоятельно.
|
|
| |