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

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

Войти
Регистрация
Восстановить пароль
 
Тангенс
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 121
#1

Структуры. Ошибка заполнения - C++

26.12.2013, 19:43. Просмотров 217. Ответов 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>
#include <cstring>
#include <conio.h>
 
using namespace std;
 
string freq;
int N = 0;
 
struct Towar{
    char name[20];
    char country[20];
    int year;
};
 
Towar *t = new Towar[N];
 
void zapol_tow(){
    char a;
    int i=0;
    while(true){
        cout<<"Добавит товар?(y/n)";
        cin>>a;
 
        if(a == 'n'){
            system("cls");
            return;
        }
 
        cout<<"Имя товара: ";
        cin.getline(t[i].name,20);
        cin.ignore();
 
        cout<<"Страна производитель: ";
        cin.getline(t[i].country,20);
        cin.ignore();
 
        cout<<"Год поставки: ";
        cin>>t[i].year;
        cin.ignore();
        
        N++;
        i++;
 
        system("cls");
    }
}
 
void filter(){
 
    int n_cur=0;
    
    for(int i=0;i<N;i++){
        int cur=0;
        for(int k=0;k<N;k++){
 
            if(!strcmp(t[i].country,t[k].country)){
                    cur++;
            }
        }
        if(cur>n_cur){
            n_cur = cur;
            freq = t[i].country;
        }
    }
}
 
void res(){
    for(int i=0;i<N;i++){
        if(!strcmp(t[i].country,freq.c_str())){
                    
            if(t[i].year == 2011 || t[i].year == 2012 || t[i].year == 2013){
                cout<<"Наименование тов. : "<<t[i].name<<'\n';
                cout<<"Страна: "<<t[i].country<<'\n';
                cout<<"Год поставки: "<<t[i].year<<'\n';
                cout<<'\n';
            }
       }
    }
}
 
int main(){
    setlocale(LC_ALL,"Russian");
 
    zapol_tow();
    filter();
    res();
 
    _getch();
    return 0;
}
Выдает ошибку при выводе
Windows has triggered a breakpoint in struct.exe.

This may be due to a corruption of the heap, which indicates a bug in struct.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while struct.exe has focus.

The output window may have more diagnostic information.


Как исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2013, 19:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структуры. Ошибка заполнения (C++):

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

Обработка ошибок неправильного заполнения структуры tm? - C++
Это простой вопрос. Допустим такой код: void main(){ int day=31, mon=5,year=82; time_t seconds = time(NULL); tm* timeinfo =...

Функция для диалогового заполнения данных структуры - C++
имеется вот такая структура #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; struct auto { int code; ...

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

Написать программу заполнения двумерного массива A по схеме, результаты заполнения выдать на экран и в файл - C++
помогите, пожалуйста, написать программу заполнения двумерного массива A по схеме. Результаты заполнения выдать на экран и в файл. ...

Ошибка заполнения динамического двумерного массива - C++
При заполнении массива mas происходит выход за границы массива. По ходу исполнения программы данные записываются в ячейки и т.д. Судя по...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.12.2013, 19:58 #2
Цитата Сообщение от Тангенс Посмотреть сообщение
int N = 0;
Цитата Сообщение от Тангенс Посмотреть сообщение
Towar *t = new Towar[N];
Создаёте массив нулевого размера. Потом туда читаете:
C++
1
2
3
4
5
6
7
8
9
10
11
        cout<<"Имя товара: ";
        cin.getline(t[i].name,20);
        cin.ignore();
 
        cout<<"Страна производитель: ";
        cin.getline(t[i].country,20);
        cin.ignore();
 
        cout<<"Год поставки: ";
        cin>>t[i].year;
        cin.ignore();
От того, что вы делаете после этого ++N, размер массива не меняется.
zss
Модератор
Эксперт С++
6358 / 5922 / 1920
Регистрация: 18.12.2011
Сообщений: 15,220
Завершенные тесты: 1
26.12.2013, 19:59 #3
C++
1
2
int N = 0;
 Towar *t = new Towar[N];
массив получается нулевой длины.
а Вы в него пытаетесь писать.
Тангенс
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 121
26.12.2013, 20:08  [ТС] #4
изменил на
C++
1
int N = 1;
как сделать так, то бы размер массива структур менялся в процессе?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.12.2013, 20:13 #5
Цитата Сообщение от Тангенс Посмотреть сообщение
как сделать так, то бы размер массива структур менялся в процессе?
Создавать новый (большего размера), копировать в него старый.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 20:13
Привет! Вот еще темы с ответами:

Ошибка заполнения вектора строк в классе - C++
Никак не могу разобраться. Пробовал по-разному и всегда выскакивали ошибки Вот есть класс resourse class resourse { private: ...

Странная ошибка в алгоритме заполнения массива из файла - C++
Алгоритм приведенный ниже, на самом деле является частью функции, которая работает некорректно. По этому я решил переделать алгоритм в...

Работа с файлами. Ошибка в массиве для заполнения - C++
#include &lt;string.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include...

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.12.2013, 20:13
Ответ Создать тему
Опции темы

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