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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2014, 10:12   #1
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию Работа с файлами Borland C++

Учусь на заочке. Самому стыдно, но... я совершенно не знаю C++. И сейчас нет времени учить. Надо сделать одно задание. 2 как-то раскопал сам, а еще 1 неосилятор. Кому нечего делать, не могли бы помочь? По-моему, в лабораториях стоит Borland C++ 5, поэтому надо код, который там заведется.
Задание: "Дан массив записей, который содержит сведения о музыкальном товаре: носитель (грампласинка, аудиокасета, лазерный диск), порядковый номер в каталоге, название,исполнитель (фамилия, имя), время звучания, количество произведений, цена по каталогу. Определить перечень дисков для покупки заказчиком, общая стоимость которых не превышает указанного лимита."
То есть, надо 2 небольших модуля: один должен редактировать файл, второй его читать и работать с подбором.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут
Izobara вне форума Ответить с цитированием
Старый 03.12.2014, 11:21   #2
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

В общем, накатал сам такое полотно:
Код:
#define FILENAME "catalogue.dat"

#include <cstdio>
#include <time.h>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using namespace std;

struct Album
{
	unsigned int position;
	string media;
	string title;
	string singer_name;
	unsigned int duration; //in seconds
	unsigned int count_of_songs;
	float price; //in dollars
};

const int catalogue_size = 10;

const vector<string> media_types{ "7 picture disc", "audiocassette", "CD" };

const vector<string> singers{ "Steven Tyler", "Joe Cocker", "B.B. King",
"John Lee Hooker", "Elvis Presley", "Al Green",
"Bob Dylan", "Otis Redding", "Tina Turner", "Freddie Mercury"
};

const vector<string> albums({ "Ankit", "Bohra", "Xyz", "Cheese",
	"Pepperoni", "Black Olives", "foo",
	"bar", "bletch", "one", "two", "three"
});

float random_float(float min, float max)
{
	if (max < min) return min;
	float random = ((float)rand()) / (float)RAND_MAX;

	float range = max - min;
	return (random * range) + min;
}

int generate_catalogue()
{
	srand(time(NULL));
	//const char *FName = FILENAME;
	FILE *file;
	if ((file = fopen(FILENAME, "w")) == NULL)
	{
		perror(FILENAME);
		return 1;
	}

	std::ofstream out;

	for (int n = 0; n < catalogue_size; n++)
	{
		Album temp;
		memset(&temp, 0, sizeof temp);
		temp.position = n + 1;
		temp.media = media_types.at(rand() % media_types.size());
		temp.count_of_songs = rand() % 15 + 1;
		temp.duration = rand() % 200 + 150;
		temp.singer_name = singers.at(rand() % singers.size());
		temp.price = random_float(10.0, 200.0);
		temp.title = albums.at(rand() % albums.size());

		ofstream f(FILENAME, ios::binary | ios::out | ios::app);
		f.write((char *)&temp, sizeof temp);
		f.close();
	}

	return 0;
}

int main()
{
	if (generate_catalogue() != 0) return 1;

	Album *cp = new Album[10];
	ifstream in(FILENAME, ios::binary | ios::in);
	for (int i = 0; i < catalogue_size; i++)
	{
		in.read((char *)&cp[i], sizeof cp[i]);
	}

	for (int i = 0; i < catalogue_size; i++)
	{
		cout << cp[i].position << " " << cp[i].singer_name << " " << cp[i].title << " " << cp[i].price << endl;
	}

	cout << "Get you budget: ";
	float budget = 0;
	cin >> budget;

	vector<string> albums_for_buying;
	int price = 0;
	for (int i = 0; i < catalogue_size; i++)
	{
		int current_price = cp[i].price;
		if (price + current_price > budget) break;
		price += current_price;
		albums_for_buying.push_back(cp[i].title);
	}
	cout << "There is a list of albums for buying: ";
	std::copy(albums_for_buying.begin(), albums_for_buying.end(), std::ostream_iterator<string>(std::cout, ", "));
	cout << "\nTotal price is " << price << endl;
	system("pause");

	return 0;
}
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут

Последний раз редактировалось Izobara; 03.12.2014 в 12:06.
Izobara вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Команды работы с файлами. Язык Borland C++ 3.1 Демик Помощь студентам 16 31.01.2011 16:44
работа с файлами в Borland C++ Pavel1992 Помощь студентам 3 14.10.2010 20:12
Borland C++ 3.1 Работа с файлами. ardor Помощь студентам 0 29.05.2010 18:49
borland C++ 3.1 работа с файлами Infa-Red Общие вопросы C/C++ 2 10.05.2010 22:37
Строки и работа с файлами на Borland C++ 3.1 CePryH Помощь студентам 6 16.06.2009 16:37