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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2015, 14:36   #1
Тимох
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 32
По умолчанию Попробовал написать программу с динамическим массивом структур данных. Программа компилируется и работает. Хотелось бы что бы более опытные товарищи оценили насколько оптимально

Изучаю сейчас структуры данных. Попробовал написать программу с динамическим массивом структур данных. Программа компилируется и работает. Хотелось бы что бы более опытные товарищи оценили насколько оптимально написана программа и нет ли утечки памяти(высвобождение памяти от динамического массива). Вот исходный код программы:

/*
Задача
Создай коллекцию автомобилей через структуру данных
*/
Код:
#include <iostream>
#include <conio.h>

using namespace std;

//создаю структуру(данные об автомобиле)
struct mashina
{
	char *marka;
	char *model;
	int god_vypuska;
};

void zapolnenie(mashina &a);
void vyvod(const mashina *a);

int main()
{
	setlocale(LC_ALL,"RUS");

	cout<<"\t\t КОЛЛЕКЦИЯ АВТОМОБИЛЕЙ \n\n";
	int a=0;
	cout<<"Введи количество автомобилей: ";
	cin>>a;
	cout<<endl;
	//создаю динамический массив структур
	mashina *kollekcijа = new mashina[a];
	//заполняю динамический массив структур
	for(int i=0; i<a; i++)
	{
		zapolnenie(kollekcijа[i]);
		cout<<endl;
	}
	system("cls");
	cout<<"\t\t КОЛЛЕКЦИЯ АВТОМОБИЛЕЙ \n\n";
	//вывожу данные из массива структур
	for(int i=0; i<a; i++)
	{
		cout<<"Автомобиль "<<(i+1)<<endl;
		vyvod(&kollekcijа[i]);
		cout<<endl;
	}
	for(int i=0; i<a; i++)
	{
		delete [] kollekcijа[i].marka;
		delete [] kollekcijа[i].model;
	}
	//освобождаю динамический массив структур
	delete [] kollekcijа;
	cout<<endl;
	cout<<"Нажми Enter для завершения программы";
	_getch();
	return 0;
}

//функция заполнения данными структуры
void zapolnenie(mashina &a)
{
	a.marka = new char[10];
	a.model = new char[10];
	cout<<"Введи марку автомобиля: ";
	cin>>a.marka;
	cout<<"Введи модель автомобиля: ";
	cin>>a.model;
	cout<<"Введи год выпуска автомобиля: ";
	cin>>a.god_vypuska;
}
void vyvod(const mashina *a)
{
	cout<<a->marka<<a->model<<endl;
	cout<<"Год выпуска: "<<a->god_vypuska<<endl;
}

Последний раз редактировалось Stilet; 02.10.2015 в 14:52.
Тимох вне форума Ответить с цитированием
Старый 02.10.2015, 14:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
насколько оптимально написана программа
Я бы описал класс с приватным полем типа vector для коллекции.
Ну а если говорить о твоем коде - циклы ввода вывода в отдельную процедуру.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
становил программу Jet Boost так как хотелось разогнать комп, но получил зависание что делать? Алекс131 Софт 17 02.04.2016 10:19
написать программу на обработку структур в файле (С++) Katrin5 Помощь студентам 1 23.12.2012 13:19
листинг программы с динамическим массивом структур (и создание файлов). nata_lu Помощь студентам 2 19.12.2012 12:22
ПРограмма компилируется, но не работает, в чем ошибка. Dalokoshka Помощь студентам 16 18.10.2010 20:29
Программа компилируется, но не работает maziLa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 17.07.2009 11:24