Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для Star_BAby
0 / 0 / 0
Регистрация: 04.04.2011
Сообщений: 12

Динамический массив структур

13.11.2011, 18:08. Показов 4072. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с заданием
Создать динамический массив структур (не менее 10 записей) со следующими полями:
-шифр поезда
-пункт отправления
-пункт назначения
-время пути
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2011, 18:08
Ответы с готовыми решениями:

Динамический массив структур в другом массиве структур
Можно ли реализовать динамический (или статический) массив структур в другом массиве структур? Пример, пожалуйста.

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

Динамический массив структур
Нужно создать базу данных библиотеки состоящую из структур: книга, автор, количество читателей взявших эту книгу. Реализовать функции:...

20
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
13.11.2011, 19:05
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
#include <iostream>
#include "stdlib.h"
#include "windows.h"
#include <string>
using namespace std;
struct ST
{
  int number;
  char put_naz[20];
  char put_otp[20];
  int time;
  ST(int number ,int time,const char*,const char* );
};
  ST::ST(int number,int time,const char* s1,const char* s2)
  {
    strcpy(this->put_naz,s1);
    strcpy(this->put_otp,s2);
  }
 
int main()
{
  ST *st[10];
  int number;
  char put_naz[20];
  char put_otp[20];
  int time;
  int size=0;
  cin >>size;  
    for(int i=0;i<size;i++)
    {
        cin >>number;  
        cin >>time;
        cin >>put_naz;
        cin >>put_otp;
        st[i]=new ST(number,time,put_naz,put_otp);
    
    }
    system("pause");
    return 0;
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.11.2011, 19:09
Цитата Сообщение от Van111 Посмотреть сообщение
C++
1
2
3
4
5
ST::ST(int number,int time,const char* s1,const char* s2)
 {
 strcpy(this->put_naz,s1);
 strcpy(this->put_otp,s2);
 }
Цитата Сообщение от Van111 Посмотреть сообщение
C++
1
2
3
4
int number;
 char put_naz[20];
 char put_otp[20];
 int time;
Van111, time и number кто будет инициализировать?
0
 Аватар для Star_BAby
0 / 0 / 0
Регистрация: 04.04.2011
Сообщений: 12
13.11.2011, 19:25  [ТС]
вы не могли бы упростить?
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
13.11.2011, 19:36
Цитата Сообщение от Jupiter Посмотреть сообщение
Van111, time и number кто будет инициализировать?
оператор cin

Добавлено через 1 минуту
Цитата Сообщение от Star_BAby Посмотреть сообщение
вы не могли бы упростить?
не для меня код идеален(знаю что можно найти кучу других путей но для меня он лучший)
Star_BAby, напишите какие ошибки вы получили в результате компиляции
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.11.2011, 19:37
Цитата Сообщение от Van111 Посмотреть сообщение
оператор cin
уверен? еще раз внимательно посмотри на свой конструктор

Не по теме:

cin не оператор, а объект:)

0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
13.11.2011, 20:01
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
#include <iostream>
#include "stdlib.h"
#include "windows.h"
#include <string>
using namespace std;
struct ST
{
  int number;
  char put_naz[20];
  char put_otp[20];
  int time;
  ST(int number ,int time,const char*,const char* );
};
  ST::ST(int number,int time,const char* s1,const char* s2)//время и номер записываются сразу  а станции записываются
  {
    strcpy(this->put_naz,s1);
    strcpy(this->put_otp,s2);
  }
 
int main()
{
  int number;
  char put_naz[20];
  char put_otp[20];
  int time;
  int size=0;
  cin >>size;  //размер масива
  ST *st[size];
     for(int i=0;i<size;i++)
    {
        cin >>number;  
        cin >>time;
        cin >>put_naz;
        cin >>put_otp;//забиваем значения , прога будет всегда вылетать когда вместо цифры будете ставить букву
        st[i]=new ST(number,time,put_naz,put_otp);//записываем
    
    }
    system("pause");
    return 0;
}
Добавлено через 16 минут
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
#include <iostream>
#include "stdlib.h"
#include "windows.h"
#include <string>
using namespace std;
struct ST
{
  int number;
  char put_naz[20];
  char put_otp[20];
  int time;
  ST(int ,int ,const char*,const char* );
};
  ST::ST(int number,int time,const char* s1,const char* s2)//âðåìÿ è íîìåð çàïèñûâàþòñÿ ñðàçó  à ñòàíöèè çàïèñûâàþòñÿ
  {
    this->number=number;
    this->time=time;
    strcpy(this->put_naz,s1);
    strcpy(this->put_otp,s2);
  }
 
int main()
{
  int number;
  char put_naz[20];
  char put_otp[20];
  int time;
  int size=0;
  cin >>size;  //ðàçìåð ìàñèâà
  ST *st[size];
     for(int i=0;i<size;i++)
    {
        cin >>number;  
        cin >>time;
        cin >>put_naz;
        cin >>put_otp;//çàáèâàåì çíà÷åíèÿ , ïðîãà áóäåò âñåãäà âûëåòàòü êîãäà âìåñòî öèôðû áóäåòå ñòàâèòü áóêâó
        st[i]=new ST(number,time,put_naz,put_otp);//çàïèñûâàåì
        
   
        
       
    }
    system("pause");
    return 0;
}
Добавлено через 4 минуты
Jupiter, а можно сделать так чтоб номер и время сразу загружались то есть обойтись без this->number=number;

Добавлено через 16 секунд
Jupiter, а можно сделать так чтоб номер и время сразу загружались то есть обойтись без this->number=number;
0
 Аватар для Star_BAby
0 / 0 / 0
Регистрация: 04.04.2011
Сообщений: 12
13.11.2011, 20:03  [ТС]
Van111, а можете чтобы результаты через пробел выводились ?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.11.2011, 20:04
Van111,
C++
1
2
3
4
5
ST::ST(int number_, int time_, const char* s1, const char* s2) : number(number_), time(time_)
{
    strcpy(this->put_naz,s1);
    strcpy(this->put_otp,s2);
}
1
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
13.11.2011, 20:11
вот окончательный хороший код
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
#include <iostream>
#include <string>
using namespace std;
struct ST
{
  int number;
  char put_naz[20];
  char put_otp[20];
  int time;
  ST(int ,int ,const char*,const char* );
 
};
  ST::ST(int number_,int time_,const char* s1,const char* s2) : number(number_),time(time_)//прога всегда будет вылетать когда вместо цифры будет буква
  {
       strcpy(this->put_naz,s1);
    strcpy(this->put_otp,s2);
  }
 
int main()
{
  int number;
  char put_naz[20];
  char put_otp[20];
  int time;
  int size=0;
  cin >>size;  //ðàçìåð ìàñèâà
  ST *st[size];
     for(int i=0;i<size;i++)
    {
        cin >>number;  
        cin >>time;
        cin >>put_naz;
        cin >>put_otp;//çàáèâàåì çíà÷åíèÿ , ïðîãà áóäåò âñåãäà âûëåòàòü êîãäà âìåñòî öèôðû áóäåòå ñòàâèòü áóêâó
        st[i]=new ST(number,time,put_naz,put_otp);//çàïèñûâàåì
        cout  <<st[i]->number <<" ";  
        cout <<st[i]->time <<" ";
        cout <<st[i]->put_naz <<" ";
        cout <<st[i]->put_otp <<" " <<endl;
        
       
    }
    system("pause");
    return 0;
}
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
13.11.2011, 20:13
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct time__
{
    char hh;
    char mm;
};
 
typedef struct train
{
    char wpa[24]; //шифр поезда
    char start[24];
    char stop[24];
    struct time__ train_time;
};
 
int main()
{
    struct train *list;
    list = malloc(10 * sizeof(struct train));
    if ( !list )
        exit ( -1 );
    ///заполнение первого элемента
    scanf
    (
        "%s%s%s%d%d",
        &list[0].wpa,
        &list[0].start,
        &list[0].stop,
        &list[0].train_time.hh,
        &list[0].train_time.mm
    );
    
    ///вывод первого элемента
    printf
    (
        "%s\n%s\n%s\n%d\n%d\n",
        list[0].wpa,
        list[0].start,
        list[0].stop,
        list[0].train_time.hh,
        list[0].train_time.mm
    );
 
    free(list);
    return 0;
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.11.2011, 20:17
alkagolik, компилится?
воть
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct //сначала объявляем анонимную структуру
{
    char hh;
    char mm;
} time__; //а потом задаем псевдоним
 
typedef struct 
{
    char wpa[24]; //шифр поезда
    char start[24];
    char stop[24];
    time__ train_time;
} train;
 
int main(void)
{
    train *list;
    list = (train*)malloc(10 * sizeof(train));  
    if ( !list )
        exit ( -1 );
    ///заполнение первого элемента
    scanf
    (
        "%s%s%s%d%d",
        &list[0].wpa,
        &list[0].start,
        &list[0].stop,
        &list[0].train_time.hh,
        &list[0].train_time.mm
    );
    
    ///вывод первого элемента
    printf
    (
        "%s\n%s\n%s\n%d\n%d\n",
        list[0].wpa,
        list[0].start,
        list[0].stop,
        list[0].train_time.hh,
        list[0].train_time.mm
    );
 
    free(list);
    return 0;
}
1
 Аватар для Star_BAby
0 / 0 / 0
Регистрация: 04.04.2011
Сообщений: 12
13.11.2011, 20:19  [ТС]
alkagolik, не запускается в строке
list = malloc(10 * sizeof(struct train)); ошибка((

Добавлено через 2 минуты
Jupiter, что это вообще? черный экран и цифры ввожу и потом закрывается(
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.11.2011, 20:21
Цитата Сообщение от Star_BAby Посмотреть сообщение
Jupiter, что это вообще? черный экран и цифры ввожу и потом закрывается(
это исправленый вариант alkagolik
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
13.11.2011, 20:29
вот код где шифр содержит буквы
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
    
#include <iostream>
#include <string>
using namespace std;
struct ST
{
  char number[20];//øèôð
  char put_naz[20];
  char put_otp[20];
  int time;
  ST(const char* ,int ,const char*,const char* );
 
};
  ST::ST(const char* number,int time_,const char* s1,const char* s2) : time(time_)//i"?i^a~a` a^n~a*a~a"a` a'o'a"a*o` a^u^e"a*o`a`o`u" e^i^a~a"a` a^i`a*n~o`i^ o"e`o^?u^ a'o'a"a*o` a'o'e^a^a`
  {
    strcpy(this->put_naz,s1);
    strcpy(this->put_otp,s2);
    strcpy(this->number,number);
  
}
 
int main()
{
  char number[20];
  char put_naz[20];
  char put_otp[20];
  int time;
  int size=0;
  cin >>size;  //?a`c,i`a*? i`a`n~e`a^a`
  ST *st[size];
     for(int i=0;i<size;i++)
    {
        cin >>number;  
        cin >>time;
        cin >>put_naz;
        cin >>put_otp;//c,a`a'e`a^a`a*i` c,i'a`?a*i'e`y" , i"?i^a~a` a'o'a"a*o` a^n~a*a~a"a` a^u^e"a*o`a`o`u" e^i^a~a"a` a^i`a*n~o`i^ o"e`o^?u^ a'o'a"a*o`a* n~o`a`a^e`o`u" a'o'e^a^o'
        st[i]=new ST(number,time,put_naz,put_otp);//c,a`i"e`n~u^a^a`a*i`
        cout  <<st[i]->number <<" ";  
        cout <<st[i]->time <<" ";
        cout <<st[i]->put_naz <<" ";
        cout <<st[i]->put_otp <<" " <<endl;
        
       
    }
    system("pause");
    return 0;
}
Jupiter, у кого код быстрее работает у меня или у alkagolik,
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
13.11.2011, 21:00
Цитата Сообщение от Jupiter Посмотреть сообщение
alkagolik, компилится?
да, там по этому поводу 2 варнинга было, но я их игнорировал, но в принципы все рабтает, на выделение\освобождение памяти протестил, все в норме.

Добавлено через 1 минуту
Цитата Сообщение от Star_BAby Посмотреть сообщение
черный экран и цифры ввожу и потом закрывается(
установите себе консоль и запускайте из нее. или добавьте в конце паузу.

Добавлено через 3 минуты
Jupiter, а вот
это
C
1
2
3
4
5
6
7
8
9
10
11
12
13
typedef struct //сначала объявляем анонимную структуру
{
    char hh;
    char mm;
} time__; //а потом задаем псевдоним
 
typedef struct 
{
    char wpa[24]; //шифр поезда
    char start[24];
    char stop[24];
    time__ train_time;
} train;
уже не компилится...
что в принципе логично. В моем варианте объявляется структурный тип, а в вашем - структурная область памяти с идентификатором, так что стоит оставить первоначальный вариант. Хотя решать девочке, все рабочее в нормальном состоянии...
Цитата Сообщение от Van111 Посмотреть сообщение
у кого код быстрее работает у меня или у alkagolik,
не корректный вопрос. нет алгоритмов.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.11.2011, 21:01
alkagolik, что у тебя за компиль? я проверял у себя в студии и [URL="http://codepad.org/3FycOxyG"]вот на gcc, все работает. Ни в с тудии ни в gcc твой код не работает
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
13.11.2011, 21:09
gcc 4.6.2
все в норме...
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
deadman@gnomik:~/documents/projects/prosto$ gcc main.c -o main
main.c:8:1: предупреждение: бесполезный спецификатор класса хранения в пустой декларации [по умолчанию включена]
main.c:16:1: предупреждение: бесполезный спецификатор класса хранения в пустой декларации [по умолчанию включена]
deadman@gnomik:~/documents/projects/prosto$ ./main 
242-H
restoran_"Kiev"
Magadan
12
55
242-H
restoran_"Kiev"
Magadan
12
55

почитаем ошибки...
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.11.2011, 21:15
alkagolik, на codepad gcc старый, проверил у себя на MinGW 4.6.1 и все работает, странно, но вообще смысл такой конструкции непонятен
C
1
2
3
4
5
typedef struct time__
{
    char hh;
    char mm;
};
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
13.11.2011, 21:18
в таком виде онлайн компилер говорит что ошибок нет

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
но вообще смысл такой конструкции непонятен
так тут все просто. Мы объявляем свой структурный тип и даем ему имя, а после используем его так же как int, char, ... и т.д. но с учетом того что эт структура
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.11.2011, 21:18
Помогаю со студенческими работами здесь

Динамический массив структур
Нужно создать базу данных библиотеки состоящую из структур: книга, автор, количество читателей взявших эту книгу. Реализовать функции:...

Динамический массив структур
Структура «Сотрудник» хранит имя, должность и возраст сотрудника. Структура «Компания» хранит название и массив сотрудников. Программа...

Динамический массив структур
Здравствуйте. Нужна помощь. Не получается записать данные в массив структур. По логике вроде все правильно. 1. Создаем динамический...

Динамический массив структур С++
Мне нужно сделать добавление экземпляра структуры в массив. Для этого нужно расширить динамический массив, я нашел для этого метод...

Динамический массив структур
Создаю структуру, выделяю память под указатель на массив таких структур, размер задается при вводе. #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru