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

Динамический массив из элементов структурного типа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 15:20     Динамический массив из элементов структурного типа #1
Помогите пожалуйста выполнить следующее задание:

1.Сформировать динамический массив из элементов структурного типа.
стуктура :

struct date
{
int day;
char*month;
int year;
};

2. найти и вывести на экран даты, содержащие названия летних месяцев
3. удалить строку с заданным номером

Добавлено через 18 часов 10 минут
программа вылетает после запуска, что я не правильно делаю?
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
struct tdate
{
  int day;
  char month[8];
  int year;
  
};
 
 
 
int main(int argc, char *argv[])
{ int n, i;
 setlocale(LC_ALL,"Russian");
 //tdate  a[n];
  tdate * pd=new tdate;
  cout<<"ââåäèòå ÷èñëî Г§Г*ГЇГЁГ±ГҐГ©\n";
  cin>>n;
  for ( i=0; i<n; i++) 
  {cout<< "ââåäèòå äåГ*Гј\n";
   cin>>pd[i].day;
   cout<< "ââåäèòå ìåñÿö\n";
   cin>>pd[i].month;
   cout<< "ââåäèòå ãîä\n";
   cin>>pd[i].year;}
   
   for (int i=0; i<n; i++)
   {cout<<pd[i].day<<endl;
    cout<<pd[i].month<<endl;
    cout<<pd[i].year<<endl ;  
       }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 15:35     Динамический массив из элементов структурного типа #2
Выделяете память под один tdate, а потом пишете в несколько?
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 16:15  [ТС]     Динамический массив из элементов структурного типа #3
а как правильно нужно сделать?
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 16:31     Динамический массив из элементов структурного типа #4
Цитата Сообщение от ahamoth Посмотреть сообщение
а как правильно нужно сделать?
Использовать оператор new[]
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 16:37  [ТС]     Динамический массив из элементов структурного типа #5
ну , так в коде то что исправить? вот в этой строчке данный оператор использкется
tdate * pd=new tdate;
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 16:39     Динамический массив из элементов структурного типа #6
Цитата Сообщение от ahamoth Посмотреть сообщение
ну , так в коде то что исправить? вот в этой строчке данный оператор использкется
tdate * pd=new tdate;
new[], а не new.

C++
1
type * var = new type[length];
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 17:08  [ТС]     Динамический массив из элементов структурного типа #7
а как сделать чтобы если если месяц = "октябрь" , то выводить записи содержащие месяц с данным названием ? я делаю так:
C++
1
2
3
4
5
6
 for ( i=0; i<n; i++) 
  if  (pd[i].month ="oct")
  {
  for ( i=0; i<n; i++)
  cout<<pd[i].month<<endl;
   }
компилятор ругается
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 17:13     Динамический массив из элементов структурного типа #8
Цитата Сообщение от ahamoth Посмотреть сообщение
а как сделать чтобы если если месяц = "октябрь" , то выводить записи содержащие месяц с данным названием ? я делаю так:
C++
1
2
3
4
5
6
 for ( i=0; i<n; i++) 
  if  (pd[i].month ="oct")
  {
  for ( i=0; i<n; i++)
  cout<<pd[i].month<<endl;
   }
компилятор ругается
Вы присваиваете статическому массиву константный указатель? Оператор "равно" выглядит так: ==

А зачем второй цикл внутри?
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 17:29  [ТС]     Динамический массив из элементов структурного типа #9
ок , исправил
еще такой вопрос

1) cout<<pd[i].month<<endl;
в этой строчке команда чтобы выводить в соответствии с условием месяц
вопрос: почему выводится вся структура (day, month, year)
2) как сделать чтобы можно было удалять нужную мне запись?
я делаю так :
C++
1
2
3
4
5
cout<< "введите номер удаляемой записи"
cin>>p;
 
for ( i=0; i<n; i++)
delete []pd[p];
компилятор ругается
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 17:39     Динамический массив из элементов структурного типа #10
Цитата Сообщение от ahamoth Посмотреть сообщение
ок , исправил
еще такой вопрос

1) cout<<pd[i].month<<endl;
в этой строчке команда чтобы выводить в соответствии с условием месяц
вопрос: почему выводится вся структура (day, month, year)
2) как сделать чтобы можно было удалять нужную мне запись?
я делаю так :
C++
1
2
3
4
5
cout<< "введите номер удаляемой записи"
cin>>p;
 
for ( i=0; i<n; i++)
delete []pd[p];
компилятор ругается
1) Потому что последнее предложение моего предыдущего ответа.
2) Если нужно часто удалять, то лучше воспользоваться списком. std::list.
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 17:46  [ТС]     Динамический массив из элементов структурного типа #11
у меня в задании работа с динамическим массивом, выможете ошибку в коде (для удаления записи) исправить?
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 17:54     Динамический массив из элементов структурного типа #12
Цитата Сообщение от ahamoth Посмотреть сообщение
у меня в задании работа с динамическим массивом, выможете ошибку в коде (для удаления записи) исправить?
Нельзя удалять записи, выделенные new[] по частям - иначе потом возможны неприятности при использовании delete[]. Если край надо удалить элемент - только перевыделение памяти с последующим копированием. Ну либо поменять местами элемент для удаления и последний и уменьшить на единицу счетчик длины массива.
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 18:14  [ТС]     Динамический массив из элементов структурного типа #13
а вы не могли бы ваш последний вариант в коде описать? (поменять местами)
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 18:39     Динамический массив из элементов структурного типа #14
Цитата Сообщение от ahamoth Посмотреть сообщение
а вы не могли бы ваш последний вариант в коде описать? (поменять местами)
std::swap<tdate>(pb[p],pb[length-1]);

Для tdate должен быть определен конструктор копирования.
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 18:47  [ТС]     Динамический массив из элементов структурного типа #15
Для tdate должен быть определен конструктор копирования.

это мне где и что нужно дописать?
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 19:01     Динамический массив из элементов структурного типа #16
Цитата Сообщение от ahamoth Посмотреть сообщение
где
В tdate

Цитата Сообщение от ahamoth Посмотреть сообщение
и что
Конструктор копирования
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 19:11  [ТС]     Динамический массив из элементов структурного типа #17
я не знаю как это сделать , можешь код готовый написать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 19:16     Динамический массив из элементов структурного типа
Еще ссылки по теме:

Функция структурного типа C++
C++ Ошибка в определении структурного типа
Динамический массив типа void C++

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

Или воспользуйтесь поиском по форуму:
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 19:16     Динамический массив из элементов структурного типа #18
Нет
Yandex
Объявления
16.05.2011, 19:16     Динамический массив из элементов структурного типа
Ответ Создать тему
Опции темы

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