Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 57
1

Ошибка при инициализации массива

05.03.2015, 22:30. Просмотров 411. Ответов 3
Метки нет (Все метки)

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
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
 
using namespace std;
 
const int MEMORY = 10000;
 
class Base
{
public:
    int key;
    string pip;
    int number;
    char city[10];
    char coutry[10];
    char goods[10];
    float weight;
    string company;
    char destination[10];
    int date;
    int ch = 'a';
    int number1;
    char buff[MEMORY];
    ofstream file;
    void baseArray(Base[200][200], int, string, int, char[10], char[10], char[10], float, string, char[10], int);
};
 
int main()
{
    setlocale(LC_ALL, "Ukr");
    system("color 4");
    Base abse;
    Base array[200][200];
    while (abse.ch != 0)
    {
        cout << "1.Створення файлу бази даних" << endl
            << "2.Вивiд на екран бази даних" << endl
            << "3.Читання запису за вказаним ключем" << endl
            << "4.Пошук запису за вказаним полем" << endl
            << "5.Вставка запису" << endl
            << "6.Видалення запису" << endl
            << "7.Модифiкацiя запису" << endl
            << "0.Вихiд" << endl
            << "Ваш вибiр:";
        cin >> abse.ch;
        if (abse.ch == 1)
        {
            abse.file.open("base.txt");
            system("cls");
            cout << "Файл бази даних успiшно створений!" << endl << endl;
            abse.file.close();
        }
        else if (abse.ch == 2)
        {
            ifstream file("base.txt");
            system("cls");
            while (!file.eof())
            {
                file.getline(abse.buff, MEMORY);
                cout << abse.buff << endl;
            }
            file.close();
        }
        else if (abse.ch == 3)
        {
            cout << "Введiть номер строки:";
            cin >> abse.number1;
            ifstream file("base.txt");
        }
        else if (abse.ch == 4)
        {
            cout << "Введiть номер поля:";
            cin >> abse.number1;
            ifstream file("base.txt");
        }
        else if (abse.ch == 5)
        {
            system("cls");
            cout << "Введiть ключ:"; cin >> abse.key;
            cout << "Введiть П.I.П:"; cin >> abse.pip;
            cout << "Введiть номер мобiльного номера:"; cin >> abse.number;
            cout << "Введiть країну:"; cin >> abse.coutry[10];
            cout << "Введiть мiсто:"; cin >> abse.city[10];
            cout << "Введiть компанiю:"; cin >> abse.company[10];
            cout << "Введiть товар:"; cin >> abse.goods[10];
            cout << "Введiть вагу товара(кг):"; cin >> abse.weight;
            cout << "Введiть мiсце доставки:"; cin >> abse.destination[10];
            cout << "Введiть дату доставки:"; cin >> abse.date;
        }
    }
    getch();
    return 0;
}
 
void Base::baseArray(Base array[200][200], int key, string pip, int number, char country[10], char city[10], char[10], float, string, char[10], int)
{
 
}
Ошибка на 35 строке, если удаляю инициализацию массива, то программа работает, не подскажите почему так ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2015, 22:30
Ответы с готовыми решениями:

Ошибка при инициализации массива
В примере есть массив: sf::String TileMap = { &quot; &quot;, &quot; ...

Ошибка при инициализации массива
Не понимаю, почему не работает. Массив создается после введения количества его элементов, но все...

Ошибка при инициализации массива
Что делать? Так как я понимаю, точку с запятой вообще в помине не должно здесь быть!о_О

Ошибка при инициализации двумерного массива
Доброго времени суток. В процессе создания программы для перевода числа из С/С = в 10чную, но...

3
2532 / 1192 / 357
Регистрация: 30.11.2013
Сообщений: 3,817
05.03.2015, 22:36 2
где гарантии что памяти хватит?)
0
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 57
05.03.2015, 23:53  [ТС] 3
где гарантии что памяти хватит?)
А как эту гарантию тогда дать ?) чтобы инициализировать массив. Мне нужен этот массив чтобы потом его использовать как аргумент при вызове метода, который объявлен в классе.

Добавлено через 1 час 4 минуты
Убрал метод, но при объявление массива типа класс, опять появляется ошибка Необработанное исключение по адресу 0x0100C617 в Trying.exe: 0xC00000FD: Stack overflow (параметры: 0x00000000, 0x00132000).
Почему?! Объясните пожалуйста как с этим бороться
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
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
 
using namespace std;
 
const int MEMORY = 10000;
 
class Base
{
public:
    int key;
    string pip;
    int number;
    char city[10];
    char coutry[10];
    char goods[10];
    float weight;
    string company;
    char destination[10];
    int date;
    int ch = 'a';
    int number1;
    char buff[MEMORY];
    ofstream file;
};
 
int main()
{
    setlocale(LC_ALL, "Ukr");
    system("color 4");
    Base abse;
    Base array[50][9];
    while (abse.ch != 0)
    {
        cout << "1.Створення файлу бази даних" << endl
            << "2.Вивiд на екран бази даних" << endl
            << "3.Читання запису за вказаним ключем" << endl
            << "4.Пошук запису за вказаним полем" << endl
            << "5.Вставка запису" << endl
            << "6.Видалення запису" << endl
            << "7.Модифiкацiя запису" << endl
            << "0.Вихiд" << endl
            << "Ваш вибiр:";
        cin >> abse.ch;
        if (abse.ch == 1)
        {
            abse.file.open("base.txt");
            system("cls");
            cout << "Файл бази даних успiшно створений!" << endl << endl;
            abse.file.close();
        }
        else if (abse.ch == 2)
        {
            ifstream file("base.txt");
            system("cls");
            while (!file.eof())
            {
                file.getline(abse.buff, MEMORY);
                cout << abse.buff << endl;
            }
            file.close();
        }
        else if (abse.ch == 3)
        {
            cout << "Введiть номер строки:";
            cin >> abse.number1;
            ifstream file("base.txt");
        }
        else if (abse.ch == 4)
        {
            cout << "Введiть номер поля:";
            cin >> abse.number1;
            ifstream file("base.txt");
        }
        else if (abse.ch == 5)
        {
            system("cls");
            cout << "Введiть рядок в який будете записувати данi:"; cin >> abse.number1;
            cout << "Введiть ключ:"; cin >> abse.key; array[abse.number1][0].key = abse.key; cout << array[abse.number1][0].key;
            cout << "Введiть П.I.П:"; getline(cin, abse.pip);
            cout << "Введiть номер мобiльного номера:"; cin >> abse.number;
            cout << "Введiть країну:"; cin >> abse.coutry[10];
            cout << "Введiть мiсто:"; cin >> abse.city[10];
            cout << "Введiть компанiю:"; cin >> abse.company[10];
            cout << "Введiть товар:"; cin >> abse.goods[10];
            cout << "Введiть вагу товара(кг):"; cin >> abse.weight;
            cout << "Введiть мiсце доставки:"; cin >> abse.destination[10];
            cout << "Введiть дату доставки:"; cin >> abse.date;
        }
    }
    getch();
    return 0;
}
0
Модератор
Эксперт С++
9632 / 8248 / 5032
Регистрация: 18.12.2011
Сообщений: 22,031
06.03.2015, 11:59 4
Цитата Сообщение от QDAS Посмотреть сообщение
cout << "Введiть країну:"; cin >> abse.coutry[10];
Везде в таких строках Вы вводите ОДИН символ за пределами строки.
Надо
C++
1
cout << "Введiть країну:"; cin >> abse.coutry;
А лучше
C++
1
cout << "Введiть країну:";cin.getline(abse.coutry,10);
Тогда можно будет вводить название с пробелами.
Кстати, 10 - маловато для какой-нибудь "Корейская народно демократическая республика"
А еще лучше переделайте ВСЕ символьные массивы на string
Тем более, что
Цитата Сообщение от QDAS Посмотреть сообщение
string pip;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2015, 11:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка нарушения прав доступа при чтении по адресу, возникающая при инициализации трехмерного массива
Очень нужна ваша помощь! Я уже не знаю что тут можно сделать. Код части программы, где вылазит...

Непонятная ошибка при инициализации дин. массива
Вылетает на memset'е с ошибкой записи. Что неправильно? int i = 0; int j = 0; int k = 0; ...

Ошибка при создании шаблонной функции:"error C2075: temp: для инициализации массива требуются фигурные скобки"
template &lt;typename T&gt; int GnomeSort(T* p, int length) { int i, count; i = 0; count = 0; ...

Ошибка инициализации двумерного массива
//Нужен массив 3х3; enum colorMap {null = 0, yellow, green, blue, violet, red }; class Foo {...


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

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

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