Форум программистов, компьютерный форум CyberForum.ru

Выдает ошибку, как исправить её? - C++

Восстановить пароль Регистрация
 
Андрей1990
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 12
21.01.2011, 13:49     Выдает ошибку, как исправить её? #1
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
//Подсчитать количество строк заданной целочисленной матрицы NxN, являющихся перестановкой чисел 1,2...N
//( т.е. содержащих кадое из чисел 1,2...N ровно один раз)
 
 
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
 
int num();
void create(int** m, int r);//создает матрицу
void input(int** m, int r);//заполняет матрицу
void show(int** m, int r);//показывает матрицу
void del(int** m, int &r);//удаляет матрицу
void scan(int** m, int r);//определяет сколько строк удовлетворяют условию задания
void save(int** m, int r, char* filename);//сохраняет матрицу в файл
void load(int** m, int r, char* filename);//загружает из файла
 
int _tmain(int argc, _TCHAR* argv[])
{
    int** m = 0;//указатель на матрицу
    int r =0;//для размера матрицы
    char filename[200];//для имени файла
    int menu = 0;
    if (argc > 1)//проверяем командную строку
        load(m, r, argv[1]);//если параметр задан, загружаем матрицу
    while (1)
    {
        if (m)
            show(m, r);//если матрица есть выводим ее
        cout << "1.Sozdat matricu" << endl;//выводим меню
        cout << "2.Kollichestvo strok" << endl;
        cout << "3.Zagruzit" << endl;
        cout << "4.Sohranit" << endl;
        cout << "5.Vyhod" << endl;
        menu = num();//выбераем пункт меню
        switch (menu)
        {
            case 1: 
                {
                    if (m)  
                        del(m, r);//если матрица создана удаляем ее
                    cout << "Vvedite razmer N" << endl;
                    r = num();
                    if (r > 0)//если размер корректный
                    {
                        create(m, r);//создаем матрицу
                        input(m, r);//и заполняем ее
                    }
                    else cout << "Ne korrektnyj razmer" << endl;
                    break;
                }
            case 2:
                {
                    if (m) 
                        scan(m, r);//если создана, определяем колличество строк
                    else cout << endl << "Sozdayte matricu" << endl;//иначе выводим ошибку
                    break;
                }
            case 3:
                {
                    if (m)  
                        del(m, r);//если матрица создана удаляем ее
                    cout << "Vvedite imya faila" << endl;
                    cin.getline(filename, 99); 
                    load(m, r, filename);//загружаем из файла
                    break;
                }
            case 4:
                {
                    if (m)//если создана
                    {
                        cout << endl << "Vvedite imya faila" << endl;
                        cin.getline(filename, 99);
                        save(m, r, filename);//сохраняем в файл
                    }
                    else cout << endl << "Sozdayte matricu" << endl;
                    break;
                }
            case 5: return 0;
        }
    }
    return 0;
}
 
int num()
{
    int rez = 0;
    cin >> rez;//вводим число
    cin.sync();//отчищаем поток от ошибок
    cin.clear();
    return rez;//возврыщвем введеное число
}
 
void create(int** m, int r)
{
        m = new int*[r];//выделяем память под указатели на строки матрицы
        for (int  i = 0; i < r; i++)
            m[i] = new int[r];//выделяем память под элементы матрицы
}
 
void input(int** m, int r)
{
    for (int i = 0; i < r; i++)
        for (int j = 0; j < r; j++)
        {
            cout << "a(" << i << ", " << j << ") = ";
            m[i][j] = num();//вводим значеня элементов
        }
}
 
 
void show(int** m, int r)
{
    for (int i = 0; i < r; i++)
    {
        for (int j = 0; j < r; j++)
            cout << m[i][j] << ' ';//выводим элементы через пробел
        cout << endl;//переходим на следующую строку
    }
}
 
void del(int** m, int r)
{
    for (int i = 0; i < r; i++)
        delete [] m[i];//освобождаем память из под элементов матрицы
    delete [] m;//и из под указателей
    m = 0;
    r = 0;
}
 
void scan(int** m, int r)
{
    int rez = 0;
    int count;
    bool b;
    for (int i = 0; i < r; i++)//цикл для строк
    {
        b = true;
        for (int n = 1; n <= r; n++)//цикл для чисел от 1 до n
        {
            count = 0;
            for (int j = 0; j < r; j++)//цикл для элементов строки
            {
                if (m[i][j] == n)//считаем сколько раз текущее число встречается в строке
                    count++;
            }
            if (count != 1)//каждое число должно быть единственным в строке
            {//если условие не соблюдается
                b = false;
                break;//то перехлдим к следующей строке
            }
        }
        if (b)//если все числа от 1 до n встретились по 1 разу то увеличиваем результат на 1
            rez++;          
    }
    cout << "Kolichestvo strok: " << rez << endl;
}
 
void save(int** m, int r, char* filename)
{
    ofstream f;
    f.open(filename);//создаем файл
    if (f)
    {
        f << r << " ";//записываем размер
        for (int i = 0; i < r; i++)
            for (int j = 0; j < r; j++)
                f << m[i][j] << " ";//записываем элементы матрицы
    }
    else cout << endl << "Oshibka sohraneniya" << endl;
} 
 
void load(int** m, int r, char* filename)
{
    ifstream f;
    f.open(filename);//открываем файл
    char space = 0;
    if (f)
    {
        f >> r;//читаем размер
        if (r != 0)
        {
            create(m, r);//создаем матрицу
            for (int i = 0; i < r; i++)
                for (int j = 0; j < r; j++)
                {                                   
                    if (!f.eof())
                        f >> m[i][j];//читаем данные из файла в матрицу
                    else  m[i][j] = 0;//зануляем те элементы на которых не хватило данных
                }
        }
        else cout << endl << "Oshibka faila" << endl;
    }
    else cout << endl << "Oshibka zagruzki" << endl;
}
 Комментарий модератора 
Используйте теги форматирования кода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2011, 13:49     Выдает ошибку, как исправить её?
Посмотрите здесь:

нужно найти ошибки в задаче на языке C/ их в районе 10 как выдает компилятор но я не могу их исправить (не знаю как) C++
с++ шаблон функции, прога выдает 3 ошибки, как их исправить? C++
C++ Исправить легкую программу. Визуал 12 выдает ошибку :(
C++ Давно не писала ничего на Dev C++ выдает ошибки не могу понять как их исправить
C++ программа выдает ошибку, как ее поправить
Выдает ошибку( undefined symbol display() in module, как исправить? C++
C++ Как на C++ записать СТРОКИ в обратном порядке? Выдает ошибку
Почему выдает ошибку при работе с большим файлом, напишите как исправить ? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5342 / 1725 / 320
Регистрация: 10.12.2010
Сообщений: 5,107
Записей в блоге: 3
21.01.2011, 16:04     Выдает ошибку, как исправить её? #2
На будущее: чтобы людям было легче вам помочь указывайте по возможности какую ошибку и где выдает.

Добавлено через 6 минут
Компилируется в общем-то спокойно, прототипы функций вам тут не очень-то нужны. Выставьте реализацию перед главной подпрограммой если будут проблемы с линковщиком.
Yandex
Объявления
21.01.2011, 16:04     Выдает ошибку, как исправить её?
Ответ Создать тему
Опции темы

Текущее время: 05:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru