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

Вывод случайного массива, вылетает программа

09.05.2014, 01:59. Показов 967. Ответов 6
Метки нет (Все метки)

Программа генерирует случайный двумерный массив, выводит его в файл, потом читает и выводит на экран из этого файла. При нажатии клавиши 2 в меню программа пишет "Прекращена работа программы". Заранее спасибо за помощь.

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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <iostream>              //библиотека ввода/вывода
#include <windows.h>                //установка команд операционной системы
#include <fstream>               //потоки ввода/вывода в файлы
#include <stdlib.h>              //стандартная библиотека выделения памяти/контроль процесса выполнения программы
#include <time.h>
 
#define MROW 3                   //n=3
#define MCOL 7                   //m=7
 
using namespace std;
string Rus(string text)          //установка вывода русского языка в строке
{CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str()); return text;}
 
void random(ofstream& fu, double matrix[MROW][MCOL]){
    fu.open("massiv.txt");
    srand(time(0));
            for(int i=1; i<MROW+1; i++)
                for(int j=1; j<MCOL+1; j++)
                    matrix[i][j]=-10+rand()%50;
    fu<<"matrix[i][j]";
    fu<<endl;
    fu.close();
}
 
void input_from_file(ifstream& fi, double matrix[MROW][MCOL])   //создание потока для чтения данных с файла
    {
        fi.open("massiv.txt");          //путь к файлу с массивом
    for(int i=0; i<MROW; i++)
        for(int j=0; j<MCOL; j++)
            fi>>matrix[i][j];
    fi.close();                       //закрытие потока
}
 
void keyboard_input(double matrix[MROW][MCOL])                    //ввод данных с клавиатуры
{
    for(int i=0; i<MROW; i++)
        for(int j=0; j<MCOL; j++)
            cin>>matrix[i][j];
}
 
void show_matrix(double matrix[MROW][MCOL]) {
    for(int i=0; i<MROW; i++) {
        for(int j=0; j<MCOL; j++)
            cout<<matrix[i][j]<<" ";             //вывод матрицы на экран
        cout<<endl;
    }
}
 
int count_pos_el(double matrix[MROW][MCOL])        //подсчёт положительных элементов матрицы
{
    int pos_el = 0;
    for(int i=0; i<MROW; i++)
        for(int j=0; j<MCOL; j++)
            if(matrix[i][j]>0)
                pos_el++;
    return pos_el;
}
 
int count_neg_el(double matrix[MROW][MCOL])         //подсчёт отрицательных элементов матрицы
{
    int neg_el = 0;
    for(int i=0; i<MROW; i++)
        for(int j=0; j<MCOL; j++)
            if(matrix[i][j]<0)
                neg_el++;
    return neg_el;
}
 
int count_zero_el(double matrix[MROW][MCOL])          //подсчёт нулевых элементов матрицы
{
    int zero_el = 0;
    for(int i=0; i<MROW; i++)
        for(int j=0; j<MCOL; j++)
            if(matrix[i][j]==0)
                zero_el++;
    return zero_el;
}
 
void output_matrix_from_file(ofstream& fo, double matrix[MROW][MCOL])     //создание потока для вывода данных в файл
{
    fo.open("123ololo.txt");           //создание файла
    for(int i=0; i<MROW; i++) {
        for(int j=0; j<MCOL; j++)
            fo<<matrix[i][j]<<"  ";
        fo<<endl;
    }
    fo.close();                           //закрытие потока
}
 
void show_results(int neg, int pos, int zero)            //создание потока вывода данных на экран
{
    cout<<Rus("Отрицательные элементы: ")<<neg<<endl;
    cout<<Rus("Положительные элементы: ")<<pos<<endl;
    cout<<Rus("Нулевые элементы: ")<<zero<<endl;
}
void output_counts_from_file(ofstream& fo, int neg, int pos, int zero)  //создание потока вывода данных в файл
{
    fo.open("test.txt");    //создание файла
    fo<<neg<<endl;
    fo<<pos<<endl;
    fo<<zero<<endl;
    fo.close();             //закрытие потока
}
 
int menu()
{
    int select;                                            //создание меню программы
    cout<<endl<<endl<<Rus("Пожалуйста, выберите: ")<<endl;
    cout<<Rus("1. Ввод массива с клавиатуры")<<endl;
    cout<<Rus("2. Ввод массива из файла")<<endl;
    cout<<Rus("3. Показать количество отрицательных, положительных и нулевых элементов")<<endl;
    cout<<Rus("4. Вывести матрицу и результаты пункта 3 в файлы")<<endl;
    cout<<Rus("5. ВЫХОД")<<endl<<endl;
    cout<<Rus("Ваш выбор: ");
    cin>>select;
    return select;
}
 
int main()
{
    ofstream fu;
    ifstream fi;
    ofstream fo;
    double matrix[MROW][MCOL];
    int pos, neg, zero;
    while(true) {
        switch(menu()) {
        case 1:                                //результат нажатия клавишы "1"
            keyboard_input(matrix);
            system("cls");
            show_matrix(matrix);
            break;
        case 2:                                //результат нажатия клавишы "2"
            system("cls");
            random(fu, matrix);
            input_from_file(fi, matrix);
            show_matrix(matrix);
            break;
        case 3:                                 //результат нажатия клавишы "3"
            system("cls");
            pos = count_pos_el(matrix);
            neg = count_neg_el(matrix);
            zero = count_zero_el(matrix);
            show_results(neg, pos, zero);
            break;
        case 4:                                  //результат нажатия клавишы "4"
            system("cls");
            pos = count_pos_el(matrix);
            neg = count_neg_el(matrix);
            zero = count_zero_el(matrix);
            output_matrix_from_file(fo, matrix);
            output_counts_from_file(fo, neg, pos, zero);
            break;
        case 5:                                  //результат нажатия клавишы "5"
            return 0;
        default:
            system("cls");                        //очистка экрана консоли
            cout<<Rus("Неккоректный номер меню")<<endl;;
            break;
        }
    }
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2014, 01:59
Ответы с готовыми решениями:

Вывод из массива случайного элемента (программа тестирования)
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; using namespace std; //--------------масив...

Вывод случайного элемента массива
void __fastcall TForm1::Button1Click(TObject *Sender) { char a =...

Вывод случайного элемента массива
Есть массив чисел . Генерируется случайное число в диапазоне от 1 до 8. Нужер сделать так, чтобы из...

Вывод случайного элемента массива
В книгах ищу нету. представим у нас есть массив из некоторых слов.типа char s; s=&quot;asd&quot;;...

6
Freelance
Эксперт С++
2886 / 1821 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
09.05.2014, 02:05 2
17, 18 строки ничего не смущает?
0
0 / 0 / 0
Регистрация: 09.05.2014
Сообщений: 3
09.05.2014, 02:08  [ТС] 3
Не особо, что там не так?
0
618 / 216 / 51
Регистрация: 22.11.2010
Сообщений: 1,776
Записей в блоге: 3
09.05.2014, 02:11 4
попробуй передавать двумерные массивы по образцу (массив, строки, столбцы). Размерность передается отдельным параметром в многомерных массивах
C++
1
const тип (&имя)[n][m], const тип n, const тип m
0
Freelance
Эксперт С++
2886 / 1821 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
09.05.2014, 02:14 5
HockeyKnyaz, замени эти строки на
C++
1
2
for(int i=0; i<MROW; i++)
   for(int j=0; j<MCOL; j++)
0
0 / 0 / 0
Регистрация: 09.05.2014
Сообщений: 3
09.05.2014, 02:31  [ТС] 6
спасибо большое, работает, только в файл выводит "matrix[i][j]"

Добавлено через 11 минут
Как сделать, чтобы в файле MASSIV после выполнения программы остался массив, а не текст "matrix[i][j]"?
0
Freelance
Эксперт С++
2886 / 1821 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
09.05.2014, 02:48 7
HockeyKnyaz,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void random(ofstream& fu, double matrix[MROW][MCOL]){
    fu.open("massiv.txt");
    srand(time(0));
            for(int i=0; i<MROW; i++)
           {
                for(int j=0; j<MCOL; j++)
                {
                    matrix[i][j]=-10+rand()%50;
                    fu<<matrix[i][j] << ' ';   
                }
              fu << '\n';
           }
    fu<<endl;
    fu.close();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2014, 02:48
Помогаю со студенческими работами здесь

Вывод случайного ЭЛЕМЕНТА из массива
Т.е. не массива с рандомными числами, а именно одного-единственного случайного элемента, значения...

Вывод случайного числа из заданного массива
Всем здравствуйте! Нужна помощь, что-то ничего в голову не приходит. Есть массив из 6 элементов, в...

вывод на экран случайного одномерного массива,ввод с клавиатуры одномерного массива и вывод его на экран.и все это в одной проге.как это сделать?
надо чтобы при запуске прграммы в паскале сначала вывелся на кран одномерный случайный массив,потом...

Вывод случайного элемента в <div> из массива текстовых документов расположенных в одной папке
Всем привет! :) Ситуация следующая: имеется папка с множеством текстовых документов (1.txt,...


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

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

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