Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Yamko
11 / 11 / 2
Регистрация: 10.03.2013
Сообщений: 104
#1

Разные способы подключения файла, или как еще можно передать функции двумерный массив? - C++

02.05.2014, 11:58. Просмотров 311. Ответов 4
Метки нет (Все метки)

Программа считает сумму положительных элементов каждого столбца и сумму отрицательных элементов каждой строки. Все работает как нужно, но мне не нравится как подключен файл. Есть ли другой способ его подключения? И как еще можно передать функции двумерный массив?
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
#include <iostream>
using std::cout;
using std::endl;
#include <ctime>
#include <fstream>
using std::ofstream;
 
const int size=8;
ofstream file("result.txt");
 
void inputArray(int arr[size][size]);
void columnSum(int arr1[size][size], int *arr2);
void rowSum(int arr1[size][size], int *arr2);
void outputArray(int *arr);
 
int main()
{
    int arr[size][size];
    int rowArr[size];
    int columnArr[size];
    inputArray(arr);
    columnSum(arr,columnArr);
    rowSum(arr,rowArr);
    file<<"Column sum:\n";
    outputArray(columnArr);
    file<<"Row sum:\n";
    outputArray(rowArr);
    file.close();
    return 0;
}
 
void inputArray(int arr[size][size])
{
    srand(time(0));
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++)
            arr[i][j]=rand()%198-99;
}
 
void columnSum(int arr1[size][size], int *arr2)
{
    int sum=0;
    for (int j = 0; j < size; j++)
    {
        sum=0;
        for (int i = 0; i < size; i++)
            if(arr1[i][j]>0)
                sum+=arr1[i][j];
        arr2[j]=sum;
    }
}
 
void rowSum(int arr1[size][size], int *arr2)
{
    int sum=0;
    for (int i = 0; i < size; i++)
    {
        sum=0;
        for (int j = 0; j < size; j++)
            if(arr1[i][j]<0)
                sum+=arr1[i][j];
        arr2[i]=sum;
    }
}
 
void outputArray(int *arr)
{
    file<<"Pos  Sum\n";
    for (int i = 0; i < size; i++)
        file<<i+1<<"    "<<arr[i]<<endl;
    file<<endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2014, 11:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разные способы подключения файла, или как еще можно передать функции двумерный массив? (C++):

Как передать двумерный массив функции? - C++
Уважаемые форумчане, подскажите пожалуйста как передать двумерный массив в функцию? Как то самому не получается разобраться.... Заранее...

Передать двумерный массив функции - C++
Скажите, пожалуйста, как я могу передать двумерный массив функции, которая с ним поработает, а потом вернет мне его? int...

Как передать файл в функцию для записи/чтения (разные функции) - C++
Собственно сабж. Во первых есть вот такой блок в main: ofstream f1(&quot;F1.txt&quot;); cout&lt;&lt;&quot;Введите элементы в файл 1&quot;&lt;&lt;endl; for (i=0;...

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

Не могу разобраться как передать корректно передать массив из функции в функцию - C++
//--------------------------------------------------------------------------- #pragma hdrstop ...

Как передать в функцию двумерный динамический массив? - C++
#include &lt;iostream&gt; #include&lt;time.h&gt; #include&lt;cstdlib&gt; using namespace std; void zap(int array, int n) { ...

4
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.05.2014, 16:18 #2
Цитата Сообщение от Yamko Посмотреть сообщение
но мне не нравится как подключен файл
В смысле?
Цитата Сообщение от Yamko Посмотреть сообщение
И как еще можно передать функции двумерный массив?
Чем этот не устраивает?
0
DmitryDidenko
4 / 4 / 2
Регистрация: 01.05.2014
Сообщений: 24
02.05.2014, 16:24 #3
Вроде же всё нормально, единственное, что можно сделать - это через класс, но будет примерно тоже самое.
0
Yamko
11 / 11 / 2
Регистрация: 10.03.2013
Сообщений: 104
02.05.2014, 19:41  [ТС] #4
Цитата Сообщение от alsav22 Посмотреть сообщение
В смысле?
Интересно, можно ли как-то подключить файл в main, но чтоб запись в него делать через ф-цию?
Цитата Сообщение от alsav22 Посмотреть сообщение
Чем этот не устраивает?
Просто интересно какие еще есть способы.
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.05.2014, 19:53 #5
Цитата Сообщение от Yamko Посмотреть сообщение
Интересно, можно ли как-то подключить файл в main, но чтоб запись в него делать через ф-цию?
Объявляйте в main(), в функции передавайте по ссылке:
C++
1
void outputArray(int *arr, ofstream& file);
1
02.05.2014, 19:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2014, 19:53
Привет! Вот еще темы с ответами:

Как передать массив (двумерный/одномерный вектор) в функцию? - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int n,m;//סענמך ט סעמכבצנג void searchmin(int g,int mm,int i,int...

Как правильно передать в функцию указатель на двумерный массив? - C++
Сабж #include &lt;windows.h&gt; #include &lt;stdio.h&gt; using namespace std; //ОТ безысходности сделал матрицу глобальной int A = {2,...

Как передать в функцию двумерный массив указателей на класс? - C++
у меня есть std::vector&lt;Monster*&gt; monsters; Rect *pole; int pacmen_distance; Monster и Rect два...

Как можно еще создать массив объектов класса - C++
допустим у меня есть основной класс и куча классов что наследуют его. помню видео в котором говорили что типа виртуальные функции и...


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

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

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