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

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

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

Восстановить пароль

Купить рекламу на форуме - 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