Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2009, 20:46   #1
korel
 
Аватар для korel
 
Регистрация: 07.05.2009
Сообщений: 4
По умолчанию Добавление записей в массив структур

Здравствуйте!
Столкнулся со следующей проблемой - при добавлении записей в массив структур прога не отрабатывает , думаю вся причина в функции Add.
Может быть я чего то не вижу((, подскажите пожалуйста в чем здесь может быть ошибка.
Заранее благодарен.
Вложения
Тип файла: txt VideoShopNew1.txt (2.2 Кб, 128 просмотров)
Цитата:
-----------------------------------------------------------------------------
Стремитесь к простоте настолько, насколько это возможно, но не более того.

Последний раз редактировалось korel; 07.05.2009 в 20:50.
korel вне форума Ответить с цитированием
Старый 07.05.2009, 21:18   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Вот немного поправил
Код:
#include<iostream>
using namespace std;


const int StrLength=20;

struct VideoShop
{
	char *MovieName;
	char *Director;
	char *Genre;
	int PopularityRating;
	double DiscPrice;
}*Movies;

void InPut(VideoShop &obj)
{
	obj.MovieName=new char[StrLength];
	cout<<"Movie name: ";
	//obj.MovieName[StrLength-1]='\0';
	cin>>obj.MovieName;

	obj.Director=new char[StrLength];
	cout<<"Director: ";
	//obj.Director[StrLength-1]='\0';
	cin>>obj.Director;

	obj.Genre=new char[StrLength];
	cout<<"Genre: ";
	//obj.Genre[StrLength-1]='\0';
	cin>>obj.Genre;

	cout<<"Rating: ";
	cin>>obj.PopularityRating;

	cout<<"Price: ";
	cin>>obj.DiscPrice;
}

void DeleteStructField(VideoShop &obj)
{
	delete [] obj.MovieName;
	delete [] obj.Director;
	delete [] obj.Genre;
}

void Show(const VideoShop &obj)
{
	cout<<"--------------------------------\n"
		<<"Movie:    "<<obj.MovieName<<"\n"
		<<"Director: "<<obj.Director<<"\n"
		<<"Genre:    "<<obj.Genre<<"\n"
		<<"Rating:   "<<obj.PopularityRating<<"\n"
		<<"Price:    "<<obj.DiscPrice<<"\n";
}

void Add(VideoShop *&MyMovies, int &Quontity)
{
	VideoShop *NewMovies = new VideoShop[++Quontity];
	for(int i=0;i<Quontity-1;i++)
		//NewMovies[i]=MyMovies[i]; оператор копирования явно не определён
	{
		NewMovies[i].PopularityRating = MyMovies[i].PopularityRating;
		NewMovies[i].DiscPrice = MyMovies[i].DiscPrice;
		NewMovies[i].Director = new char[StrLength];
		NewMovies[i].Genre = new char[StrLength];
		NewMovies[i].MovieName = new char[StrLength];
		strcpy(NewMovies[i].Director,MyMovies[i].Director);
		strcpy(NewMovies[i].Genre,MyMovies[i].Genre);
		strcpy(NewMovies[i].MovieName,MyMovies[i].MovieName);
	}

	InPut(NewMovies[Quontity-1]);

	for(int i=0;i<Quontity-1;i++)
		DeleteStructField(MyMovies[i]);
	delete [] MyMovies;
	MyMovies=new VideoShop[Quontity];
	for(int i=0;i<Quontity;i++)
		//MyMovies[i]=NewMovies[i]; оператор копирования явно не определён
	{
		MyMovies[i].PopularityRating = NewMovies[i].PopularityRating;
		MyMovies[i].DiscPrice = NewMovies[i].DiscPrice;
		MyMovies[i].Director = new char[StrLength];
		MyMovies[i].Genre = new char[StrLength];
		MyMovies[i].MovieName = new char[StrLength];
		strcpy(MyMovies[i].Director,NewMovies[i].Director);
		strcpy(MyMovies[i].Genre,NewMovies[i].Genre);
		strcpy(MyMovies[i].MovieName,NewMovies[i].MovieName);
	}
	for(int i=0;i < Quontity;i++)
		DeleteStructField(NewMovies[i]);
	delete []NewMovies;
}
int main(int argc, char* argv[])
{
	int MovieQuontity=2;
	Movies=new VideoShop[MovieQuontity];
	for(int i=0;i<MovieQuontity;i++)
	{
		cout<<"\n"<<i+1<<". Movie------\n\n"; 
		InPut(Movies[i]);
	}
	for(int i=0;i<MovieQuontity;i++)
	{
		cout<<"\n"<<i+1<<". Movie------\n\n"; 
		Show(Movies[i]);
	}
	Add(Movies,MovieQuontity);
	for(int i=0;i<MovieQuontity;i++)
	{
		cout<<"\n"<<i+1<<". Movie------\n\n"; 
		Show(Movies[i]);
	}
	for(int i=0;i<MovieQuontity;i++)
		DeleteStructField(Movies[i]);
	delete [] Movies;
	return 0;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 07.05.2009, 23:59   #3
korel
 
Аватар для korel
 
Регистрация: 07.05.2009
Сообщений: 4
По умолчанию Вопросик для ISergeyN по коду.

void Add(VideoShop *&MyMovies, int &Quontity) - немножко не понял одновременное использование указателя и ссылки при передаче параметра в функцию. Буду благодарен за ответ.
Цитата:
-----------------------------------------------------------------------------
Стремитесь к простоте настолько, насколько это возможно, но не более того.
korel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив структур velvetdust Общие вопросы C/C++ 0 21.03.2009 13:18
Добавление записей в таблицы Fishb1 Microsoft Office Access 2 26.02.2009 21:45
Добавление записей Liones БД в Delphi 3 25.12.2008 10:08
Добавление и удаление записей в Listview Scorpeon Компоненты Delphi 0 08.06.2007 23:09
добавление записей в таблицу strannik БД в Delphi 5 10.05.2007 08:12