Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
#1

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

16.05.2011, 15:20. Просмотров 2113. Ответов 17
Метки нет (Все метки)

Помогите пожалуйста выполнить следующее задание:

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 ;  
       }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 15:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамический массив из элементов структурного типа (C++):

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

Сформировать динамический массив из элементов структурного типа
struct student { char*name; int kurs; float rating };

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

Динамический массив элементов произвольного типа
Доброго времени суток. Будьте так добры, если вас не затруднит, помочь...

Считать массив данних структурного типа и вывести их в файл с использованием stdio.h
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; struct Date...

Запись элементов массива структурного типа.Из старого массива- в новый
Здравствуйте.Возможно, в названии темы не совсем понятно &quot;чего я хочу&quot;, поэтому...

17
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 15:35 #2
Выделяете память под один tdate, а потом пишете в несколько?
0
ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 16:15  [ТС] #3
а как правильно нужно сделать?
0
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 16:31 #4
Цитата Сообщение от ahamoth Посмотреть сообщение
а как правильно нужно сделать?
Использовать оператор new[]
1
ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 16:37  [ТС] #5
ну , так в коде то что исправить? вот в этой строчке данный оператор использкется
tdate * pd=new tdate;
0
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 16:39 #6
Цитата Сообщение от ahamoth Посмотреть сообщение
ну , так в коде то что исправить? вот в этой строчке данный оператор использкется
tdate * pd=new tdate;
new[], а не new.

C++
1
type * var = new type[length];
1
ahamoth
0 / 0 / 1
Регистрация: 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;
   }
компилятор ругается
0
Jtalk
95 / 81 / 3
Регистрация: 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;
   }
компилятор ругается
Вы присваиваете статическому массиву константный указатель? Оператор "равно" выглядит так: ==

А зачем второй цикл внутри?
1
ahamoth
0 / 0 / 1
Регистрация: 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];
компилятор ругается
0
Jtalk
95 / 81 / 3
Регистрация: 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.
0
ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 17:46  [ТС] #11
у меня в задании работа с динамическим массивом, выможете ошибку в коде (для удаления записи) исправить?
0
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 17:54 #12
Цитата Сообщение от ahamoth Посмотреть сообщение
у меня в задании работа с динамическим массивом, выможете ошибку в коде (для удаления записи) исправить?
Нельзя удалять записи, выделенные new[] по частям - иначе потом возможны неприятности при использовании delete[]. Если край надо удалить элемент - только перевыделение памяти с последующим копированием. Ну либо поменять местами элемент для удаления и последний и уменьшить на единицу счетчик длины массива.
0
ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 18:14  [ТС] #13
а вы не могли бы ваш последний вариант в коде описать? (поменять местами)
0
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 18:39 #14
Цитата Сообщение от ahamoth Посмотреть сообщение
а вы не могли бы ваш последний вариант в коде описать? (поменять местами)
std::swap<tdate>(pb[p],pb[length-1]);

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

это мне где и что нужно дописать?
0
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 19:01 #16
Цитата Сообщение от ahamoth Посмотреть сообщение
где
В tdate

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

Функция структурного типа
Работа программы состоит в том что вводится два времени они переводятся в...

Динамический массив типа void
Объявлен двумерный массив в глобальных: void **buf; Размер как и тип...

Ошибка в определении структурного типа
В строке 40 выдает ошибку &quot;error C2440: 'initializing' : cannot convert from...

Сравнение переменных структурного типа
Всем доброго времени суток, объяснить пожалуйста, как можно сравнить переменную...


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

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

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