1 / 1 / 0
Регистрация: 21.03.2019
Сообщений: 89
1

Как вывести массив в файл?

25.09.2019, 23:59. Показов 3282. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, нужно с применением функций определить двумерный массив, заполнить его
случайными числами и преобразовать таким образом, чтобы сначала располагались все элементы
равные нулю, а потом все остальные. Результаты выполнения задания выдать на экран и в файл. Для каждого действия должна быть описана своя функция.
- функция заполнения массива
- функция печати массива на экран
- функция печати массива в файл
- функция преобразования массива
У меня проблема с выводом преобразованного массива на экран и в файл, программы выводит ошибку(. Прошу, помогите пожалуйста, очень срочно!!

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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
#include <fstream>
using namespace std;
 
void init(int** a, int line, int column);
void out(int** a, int line, int column);
void fout(int** a, int line, int column, int min, int sum);
void newmas(int** a, int line, int column);
 
void main()
{
    setlocale(LC_ALL, "rus");
 
    int size_l, size_c;
    cout << "Введите количество строк:";
    cin >> size_l;
    cout << "Введите количество столбцов:";
    cin >> size_c;
    //инициализация двумерного массива
    int** mas = new int* [size_l];
    for (int i = 0; i < size_l; i++)
        mas[i] = new int[size_c];
 
    init(mas, size_l, size_c);//вызов функции заполнения массива
    out(mas, size_l, size_c);//вызов функции вывода массива на экран
    fout(mas, size_l, size_c, newmas(mas, size_l, size_c));//вызов функции вывода массива в файл
    newmas(mas, size_l, size_c);
    
    cout << "Преобразованный массив: " << newmas(mas, size_l, size_c) << "\n";
 
    //удаление двумерного массива
    for (int i = 0; i < size_l; i++)
        delete[]mas[i];
    delete[] mas;
    system("pause");
}
 
void init(int** a, int line, int column)
{
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            a[i][j] = rand() % 19 - 9;
        }
    }
}
 
void out(int** a, int line, int column)
{
    cout << "\n";
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            cout << a[i][j] << "\t";
        }
        cout << "\n";
    }
    cout << "\n";
}
 
void fout(int** a, int line, int column, int min, int sum)
{
    fstream F;
    F.open("E:\\С++\\lab2.txt", ios::out);
    F << "Массив: " << "\n";
    F << "\n";
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            F << a[i][j] << "\t";
        }
        F << "\n";
        F << "Преобразованный массив: " << newmas << "\n";
    }
}
 
void newmas(int** a, int line, int column)
{
    int k;
    int* b = new int[line * column];
    k = 0;
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            b[k++] = a[i][j];
        }
    }
    for (int i = 0; i < line * column; i++)
    {
        for (int j = line * column - 1; j > i; j--)
        {
            if ((!(b[j - 1] == 0)) && (b[j] == 0))
            {
                swap(b[j - 1], b[j]);
            }
        }
    }
    k = 0;
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            b[k++] = a[i][j];
        }
    }
    for (int i = 0; i < line * column; i++)
    {
        for (int j = line * column - 1; j > i; j--)
        {
            if ((!(b[j - 1] == 0)) && (b[j] == 0))
            {
                swap(b[j - 1], b[j]);
            }
        }
    }
    k = 0;
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            a[i][j] = b[k++];
        }
    }
 
    delete[] b;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2019, 23:59
Ответы с готовыми решениями:

Как вывести массив в файл?
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { int n;...

Как вывести массив в файл?
Задание такое: С применением функций определить двумерный массив, заполнить его случайными числами...

Как вывести в текстовый файл массив integer?
К сожалению, я только начинаю разбираться с Visual Basic (да и вообще я в основном имею дело со...

Считать массив строк из файла и вывести отсортированный по алфавиту массив в другой файл
Считать массив строк из файла и вывести отсортированный по алфавиту массив в другой файл. Если...

6
7427 / 5021 / 2891
Регистрация: 18.12.2017
Сообщений: 15,694
26.09.2019, 01:03 2
Лена Есеева, Вы в функцию передаёте min и sum. зачем они в этой задаче ? уберите.
Цитата Сообщение от Лена Есеева Посмотреть сообщение
void main() int main()
и комменты или уберите (это лучше) или исправьте
Цитата Сообщение от Лена Есеева Посмотреть сообщение
//инициализация двумерного массива
объявление двумерного массива
Цитата Сообщение от Лена Есеева Посмотреть сообщение
//удаление двумерного массива
освобождение памяти
0
1 / 1 / 0
Регистрация: 21.03.2019
Сообщений: 89
26.09.2019, 01:05  [ТС] 3
Yetty, насчёт sum и min, согласна, они лишние, я рабочую часть программы убрала, в их не заметила; комментарии я потом удалю вообще; проблема у меня в том, что в 29 строке знак "<<" перед newmas подчёркивает я красным, уже её помню какую ошибку выдаёт, и программа из-за этого не запускается
0
7427 / 5021 / 2891
Регистрация: 18.12.2017
Сообщений: 15,694
26.09.2019, 01:14 4
Цитата Сообщение от Лена Есеева Посмотреть сообщение
проблема у меня в том, что в 29 строке знак "<<" перед newmas
на самом деле проблем в коде гораздо больше, а то что Вы считаете проблемой таковой не является, этот вопрос решается очень просто: не выводите функцию типа void через соut.
0
1 / 1 / 0
Регистрация: 21.03.2019
Сообщений: 89
26.09.2019, 01:24  [ТС] 5
Yetty, то есть вместо void(main) нужно int(main), и все должно заработать? А какие ещё ошибки у меня в программе?
0
7427 / 5021 / 2891
Регистрация: 18.12.2017
Сообщений: 15,694
26.09.2019, 01:48 6
Лучший ответ Сообщение было отмечено Лена Есеева как решение

Решение

Цитата Сообщение от Лена Есеева Посмотреть сообщение
то есть вместо void(main) нужно int(main), и все должно заработать?
при чём здесь заработать ? это основная функция программы так записывается: int main()
Цитата Сообщение от Лена Есеева Посмотреть сообщение
какие ещё ошибки у меня в программе?
пока исправьте те, которые выше, и сбросьте код.

Добавлено через 11 минут
быстрее самому исправить пока от Вас получу код. с выводом в файл разбирайтесь сами.
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
#include <iostream>
#include <fstream>
using namespace std;
 
void init(int** a, int line, int column);
void out(int** a, int line, int column);
//void fout(int** a, int line, int column, int min, int sum);
void newmas(int** a, int line, int column);
 
int main()
{ 
    int size_l, size_c;
    cout << "n=";
    cin >> size_l;
    cout << "m=";
    cin >> size_c;
    
    int** mas = new int* [size_l];
    for (int i = 0; i < size_l; i++)
        mas[i] = new int[size_c];
 
    init(mas, size_l, size_c);//вызов функции заполнения массива
    out(mas, size_l, size_c);//вызов функции вывода массива на экран
    //fout(mas, size_l, size_c, newmas(mas, size_l, size_c));//вызов функции вывода массива в файл
    newmas(mas, size_l, size_c);
    
    cout << "New matrix:\n";
    out(mas, size_l, size_c);
    
    for (int i = 0; i < size_l; i++)
        delete[]mas[i];
    delete[] mas;
    system("pause");
}
 
void init(int** a, int line, int column)
{
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            a[i][j] = rand() % 19 - 9;
        }
    }    
}
 
void out(int** a, int line, int column)
{
    cout << "\n";
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            cout << a[i][j] << "\t";
        }
        cout << "\n";
    }
    cout << "\n";
}
 
void newmas(int** a, int line, int column)
{
    int k;
    int* b = new int[line * column];
    k = 0;
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            b[k++] = a[i][j];
        }
    }
    for (int i = 0; i < line * column; i++)
    {
        for (int j = line * column - 1; j > i; j--)
        {
            if ((!(b[j - 1] == 0)) && (b[j] == 0))
            {
                swap(b[j - 1], b[j]);
            }
        }
    }
    k = 0;
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            b[k++] = a[i][j];
        }
    }
    for (int i = 0; i < line * column; i++)
    {
        for (int j = line * column - 1; j > i; j--)
        {
            if ((!(b[j - 1] == 0)) && (b[j] == 0))
            {
                swap(b[j - 1], b[j]);
            }
        }
    }
    k = 0;
    for (int i = 0; i < line; i++)
    {
        for (int j = 0; j < column; j++)
        {
            a[i][j] = b[k++];
        }
    }
 
    delete[] b;
}
1
1 / 1 / 0
Регистрация: 21.03.2019
Сообщений: 89
26.09.2019, 08:50  [ТС] 7
Yetty, спасибо большое) ночью с интернетом у меня что-то случилось, не могла отправить(
Буду теперь пытаться в файл вывести
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2019, 08:50
Помогаю со студенческими работами здесь

Создать файл произвольных символов. Вывести в один файл цифры, содержащиеся в файле, а в другой файл символы, сохранив первоначальный порядок. Вывести
Создать файл произвольных символов. Вывести в один файл цифры, содержащиеся в файле, а в другой...

Вывести массив в файл
Надо вывести массив в файл. В чем ошибка подскажите. Ничего не поучается. Знаю что в кавычках текст...

Вывести массив в файл
Здрасти. У меня есть процедура ShowMatrix(DeliveryMatrix,max_row,max_col); , которая выводит массив...

Вывести массив в файл в 3 колонки
Определить массив Y= sinX2 – cosX , где X=0, 2, 4, ...60. Выделить из него массив положительных...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru