Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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();
}
Иван Кошевой вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить 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