|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.02.2017, 02:25 | #1 |
Новичок
Джуниор
Регистрация: 25.02.2017
Сообщений: 1
|
Дополнение элементов при считывании элементов массива из файла - C++
Ребята, у меня последняя надежда на вас. Помоготе, пожалуйста.
Условие: дана квадратная матрица целых чисел. Найти сумму: - наибольших значений элементов строк и столбцов; - элементов главной и побочной диагонали. Проблема в том что необходимо реализовать три возможности заполнения массива (клавиатура, рандом, считывание из файла). С последним методом и есть вся загвоздка. Дело в том что, допустим, кол-во элементов массиве 12, а в файле их всего 9, и необходимо оставшиеся три дополнить рандомно. Никак не могу додумать алгоритм для двумерного массива. Чтобы вы лучше понимали что я имею в виду, вот код моей программы с одномерным массивом, где все работает правильно и дополнение идет: За вывод и дополнение отвечает функция void fail_massiv. void fail_massiv(int arr[], int size) { ifstream file("arr.dat"); srand(time(0)); int k_e = 0; if (!file) { cout<<"Невозможно осуществить операции с файлом\n"; } for (int i = 0; i < size; i++) { if( !(file)) break; file>>arr[i]; k_e++; } for (int i = k_e-1; i < size; i++) { arr[i] = rand() % 100 + 1; } file.close(); } А вот собственно, злосчастная программа двумерного массива: #include <iostream> #include<cstdlib> #include <conio.h> #include<ctime> #include <iomanip> #include<fstream> using namespace std; void main() { setlocale(LC_ALL, "rus"); int const N = 10; int arr[N][N]; int c, k = 1, s1 = 0, s2 = 0, s3=0, s4=0; float maxcol, maxrow; cout << "\t\t*****Программа работает с матрицами*****"; cout << "\n\nВведите размер квадратной матрицы: "; cin >> c; cout << "\nВыберете способ заполнения массива:" << endl; cout << "Нажмите 1 для заполения с клавиатуры;" << endl; cout << "Нажмите 2 для заполнения случайными числами;" << endl; cout << "Нажмите 3 для заполнения с файла." << endl; cout << "\nСделайте Ваш выбор: "; int choise; cin >> choise; switch (choise) { case 1: for (int i = 0; i < c; i++) { for (int j = 0; j < c; j++) { cout << "Введите " << "[" << i << "][" << j << "]" << ": "; cin >> arr[i][j]; } } cout << endl; break; case 2: srand(time(0)); for (int i = 0; i < c; i++) { for (int j = 0; j < c; j++) { arr[i][j] = rand() % 1000 / 10.0; } } cout << endl; break; case 3: ifstream file("massiv.dat", ios::in|ios::binary); for (int i = 0; i < c; i++) { for (int j = 0; j < c; j++) { file >> arr[i][j]; } } file.close(); break; } cout << "\nИсходная матрица: " << endl; for (int i = 0; i<c; i++) { for (int j = 0; j<c; j++) { cout <<setw(6)<< arr[i][j] << " "; } cout << endl; } cout << endl; for (int i = 0; i<c; i++) { maxrow = 0; maxcol = 0; for (int j = 0; j<c; j++) { if (arr[i][j]>maxrow) maxrow = arr[i][j]; if (arr[j][i]>maxcol) maxcol = arr[j][i]; } cout << "Максимальный элемент " << k << " столбца: " << maxcol << endl; s1 += maxcol; cout << "Максимальный элемент " << k << " рядка: " << maxrow << endl; s2 += maxrow; k++; } cout << "\nСумма максимальных элементов рядков: " << s2; cout << "\nСумма максимальных элементов столбцов: " << s1; cout << "\n\nГлавная диагональ: "; for (int i = 0; i < c; i++) //формирование и поиск по масиву главной диагонали { cout << arr[i][i] << " "; s3 += arr[i][i]; } cout << "\nПобочная диагональ: "; for (int i = 0; i < c; i++) //формирование и поиск по масиву побочной диагонали { cout << arr[i][c - 1 - i] << " "; s4 += arr[i][c - 1 - i]; } float s5 = s3 + s4; cout << "\nСумма: "<<s5; getch(); } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вычислить z=s1+s2/2, где s1-сумма положительных элементов массива X(8); s2-сумма отрицательных элементов массива Y(10) . обе суммы | Лидия 188 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 06.11.2015 18:44 |
Найти среднее арифметическое целых частей элементов числового массива из 30 элементов | noobcplusplus | Общие вопросы C/C++ | 3 | 02.02.2015 18:30 |
Записать в массив Z подряд семь нулевых элементов массива R,состоящего из N элементов.(Язык QBasic) | Лиза) | Помощь студентам | 0 | 11.01.2011 16:02 |
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива | HazelHen | Общие вопросы C/C++ | 2 | 29.03.2009 15:16 |