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

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

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

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

16.05.2011, 15:20. Просмотров 1859. Ответов 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++):

Динамический массив из элементов структурного типа - C++
Сформируйте и выведите на печать динамический массив из элементов структурного типа. Выполните поиск элементов в массиве, удовлетворяющих...

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

Сформировать динамический массив из элементов структурного типа - C++
1.Сформировать динамический массив из элементов структурного типа. struct реrson { char*name; char *adres; int age; }; ...

Динамический массив элементов произвольного типа - C++
Доброго времени суток. Будьте так добры, если вас не затруднит, помочь &quot;понимающему дубу&quot; с одной назойливой программкой. С...

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

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

17
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 15:35 #2
Выделяете память под один tdate, а потом пишете в несколько?
0
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 16:15  [ТС] #3
а как правильно нужно сделать?
0
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
16.05.2011, 16:31 #4
Цитата Сообщение от ahamoth Посмотреть сообщение
а как правильно нужно сделать?
Использовать оператор new[]
1
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.05.2011, 16:37  [ТС] #5
ну , так в коде то что исправить? вот в этой строчке данный оператор использкется
tdate * pd=new tdate;
0
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];
1
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;
   }
компилятор ругается
0
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;
   }
компилятор ругается
Вы присваиваете статическому массиву константный указатель? Оператор "равно" выглядит так: ==

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

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

это мне где и что нужно дописать?
0
16.05.2011, 18:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 18:47
Привет! Вот еще темы с ответами:

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

Динамический массив типа void - C++
Объявлен двумерный массив в глобальных: void **buf; Размер как и тип определяются в рантайме.. Нужно чтоб это заработало: buf = new...

Ошибка в определении структурного типа - C++
В строке 40 выдает ошибку &quot;error C2440: 'initializing' : cannot convert from 'int' to 'char *'. Помогите, пожалуйста, исправить ее ...

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


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

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

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