@admiralbub

Отсортировать данные о котировке акций по тикерам и по дате?

Добрый день товарищи
Нужна ваша помощь по задаче на с++.
Как сделать сортировку по дате (для одинаковых названий),при помощи структур данных
Вот сама задача
а) Даны файл, содержащий историю котировки акций: тикер (краткое название), дату и стоимость акций. Отсортировать данные в нем по тикером (в алфавитном порядке) и по дате (для одинаковых тикеров) тасформуваты второй файл. Предположить, что размер файла может быть достаточно большим для загрузки всех данных в память одновременно (до 10 Гб).

Код программы внизу
#include <iostream>
#include <fstream>
#include <windows.h>
#include <cstdlib> 
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
ifstream in("ticker.txt");
struct Ticker
{        
    //unsigned long mark;
    string name;
    char data[40];
    char price[40];
    void print();
};



void sort(Ticker *a, int n) 
{
    Ticker tmp;
    for (int i = 1, j; i<n; ++i)
    {
        tmp = a[i]; 
        for (j = i - 1; j >= 0 && a[j].name > tmp.name; --j)
            a[j + 1] = a[j];
            a[j + 1] = tmp;

    }






    ofstream z("sort.txt");
    for (int i = 0; i < n; i++){
         z << a[i].name << '\t' << a[i].data << '\t' << a[i].price << '\t' << endl;
    }
}
int main(int argc, char** argv) {

    int n = 0;
    Ticker a[20];
    Ticker ticker;
    while (in.peek() != EOF){
        in >> a[n].name >> a[n].data >> a[n].price;
        n++;
    }
    int selection;
    setlocale(LC_ALL, "rus");
    cout<<"Yess :-)\n";
    sort(a, n);
        system("pause");
      in.close();
    return 0;
}


Буду рад вашей помощи
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
А что в плюсах уже стандартный std::sort перестал работать?
Зачем вы пишете собственную сортировку пузырьком? Лучше чем в std вряд ли получится.
Но учитывая, что
Размер файла может быть достаточно большим для загрузки всех данных в память одновременно

Нужно файл делить на несколько частей, помещающихся в память, каждую часть сортировать отдельно тем же std:sort, результаты сохранять в промежуточный файл. Затем результаты объединять с помощью сортировки слиянием.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы