Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Массив структур. Ошибка - C++

24.12.2013, 12:58. Просмотров 198. Ответов 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
#include <iostream>
#include <cstring>
#include <conio.h>
 
using namespace std;
 
int N = 0;
string freq;
 
struct Towar{
    char name[20];
    char country[20];
    int year;
};
 
Towar *t = new Towar;
 
void zapol_tow(){
    char a;
    int i=0;
    while(true){
        cout<<"Добавит товар?(y/n)";
        cin>>a;
 
        if(a == 'n'){
            system("cls");
            return;
        }
        
        t[i];
 
        cout<<"Имя товара: ";
        cin>>t[i].name;
 
        cout<<"Страна производитель: ";
        cin>>t[i].country;
 
        cout<<"Год поставки: ";
        cin>>t[i].year;
        
        N++;
        i++;
 
        system("cls");
    }
}
 
void filter(){
 
    int n_cur=0;
    
    for(int i=0;i<N-1;i++){
        int cur=0;
        for(int k=0;k<N-1;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-1;i++){
        if(!strcmp(t[i].country,freq.c_str())){
                    
            if(t[i].year >= 2011 && t[i].year <= 2013){
                cout<<"Наименование тов. : "<<t[i].name<<'\n';
                cout<<"Страна: "<<t[i].country<<'\n';
                cout<<"Год поставки: "<<t[i].year<<'\n\n';
            }
        }
    }
}
 
int main(){
    setlocale(LC_ALL,"Russian");
    
    zapol_tow();
    filter();
    res();
 
    delete []t;
    _getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 12:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив структур. Ошибка (C++):

Массив структур(Ошибка!) - C++
Не могу разобраться в чем ошибка.... #include &lt;stdio.h&gt; #define N 2 struct AEROFLOT{ char *punkt; char *num;

Массив структур: в чем ошибка? - C++
Что не так в коде? struct bop { char fullname; char title; char bopname; int preference; }; bop bops; ...

Чтение из файла в массив структур (ошибка со string) - C++
Есть задача: считать из файла информацию в массив структур. Файл: Иван Иванов Иванович 18 1 2 8.6 Петр Петров Петрович 17 1 3...

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

Блочная сортировка структур (Отсортировать массив структур по фамилии) - C++
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив структур по фамилии.

Массив структур, сохранение начала каждой из структур - C++
Я создал такую структуру class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch * poczatek=NULL; cin &gt;&gt;...

6
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,025
24.12.2013, 13:10 #2
Цитата Сообщение от Тангенс Посмотреть сообщение
delete []t;
вы создаёте указатель, а пытаетесь удалить указатель на массив, мб в этом дело, не компилил - просто в глаза бросилось сразу
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
24.12.2013, 13:25 #3
какое то не понятное условие задания у вас, что дано непонятно.
И структуры обычно в майн функции объявляются.
В вашем случае если вы массив структур хотите то правильнее было бы так объявить
C++
1
2
3
4
int main(){
    setlocale(LC_ALL,"Russian");
Towar* t = new Towar[заранее известный размер];
//далее продолжение вашей майн функции
0
Тангенс
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 121
24.12.2013, 14:56  [ТС] #4
Цитата Сообщение от dzrkot Посмотреть сообщение
вы создаёте указатель, а пытаетесь удалить указатель на массив, мб в этом дело, не компилил - просто в глаза бросилось сразу
Оно и без delete []t не работает

Добавлено через 2 минуты
Цитата Сообщение от jurok_85 Посмотреть сообщение
какое то не понятное условие задания у вас, что дано непонятно.
И структуры обычно в майн функции объявляются.
В вашем случае если вы массив структур хотите то правильнее было бы так объявить
C++
1
2
3
4
int main(){
    setlocale(LC_ALL,"Russian");
Towar* t = new Towar[заранее известный размер];
//далее продолжение вашей майн функции
Задание: наиболее распространенную страну поставщика за 2011-2013 годы; через структуры

Оно и с определенным размером выдает ошибку
Обновленный код с выше указанными замечаниями:

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
#include <iostream>
#include <cstring>
#include <conio.h>
 
using namespace std;
 
int N = 0;
string freq;
 
struct Towar{
    char name[20];
    char country[20];
    int year;
};
 
Towar* t = new Towar[0];
 
void zapol_tow(){
    char a;
    int i=0;
    while(true){
        cout<<"Добавит товар?(y/n)";
        cin>>a;
 
        if(a == 'n'){
            system("cls");
            return;
        }
        
        t[i];
 
        cout<<"Имя товара: ";
        cin>>t[i].name;
 
        cout<<"Страна производитель: ";
        cin>>t[i].country;
 
        cout<<"Год поставки: ";
        cin>>t[i].year;
        
        N++;
        i++;
 
        system("cls");
    }
}
 
void filter(){
 
    int n_cur=0;
    
    for(int i=0;i<N-1;i++){
        int cur=0;
        for(int k=0;k<N-1;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-1;i++){
        if(!strcmp(t[i].country,freq.c_str())){
                    
            if(t[i].year >= 2011 && t[i].year <= 2013){
                cout<<"Наименование тов. : "<<t[i].name<<'\n';
                cout<<"Страна: "<<t[i].country<<'\n';
                cout<<"Год поставки: "<<t[i].year<<"\n\n";
            }
        }
    }
}
 
int main(){
    setlocale(LC_ALL,"Russian");
 
    zapol_tow();
    filter();
    res();
 
    _getch();
    return 0;
}
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,025
24.12.2013, 15:43 #5
у вас она криво написана очень нечитабельно для меня по крайней мере...
Цитата Сообщение от Тангенс Посмотреть сообщение
Towar* t = new Towar[0];
создаёте массив всего из 1ого элемента...

но тем не менее у меня она компилируется и даже выдаёт результат искомый результат
0
Тангенс
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 121
24.12.2013, 16:31  [ТС] #6
скиньте верный код пожалуйста
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,025
24.12.2013, 16:39 #7
так я ваш код и запускаю
0
24.12.2013, 16:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2013, 16:39
Привет! Вот еще темы с ответами:

Динамический массив структур - ошибка "попытка чтения или записи в защищенную память" - C++
не работает: class Students { struct list { string marka_mashini; string familiya_vladelca; int god_vipuska; ...

Как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю? - C++
Ребята подскажите как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю.

Массив структур в массиве структур - C++
Всем добрый день. Делаю менюшку для управления и терзаю Arduino IDE слегка подвис со следующей задачей. Я хочу определить две...

Ввести массив структур; рассортировать массив в алфавитном порядке - C++
Пришел из армии восстановился в универе и тут сразу курсавай. Помогите Исходные данные(описание структуры): Информация об...


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

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

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