2013-05-29 3 views
-4

Как вы могли бы понять из названия, я действительно новичок в этой среде программирования. Я хотел бы попросить вас о помощи: мне нужно прочитать файл как:Прочтите текстовый файл, сохраните его и отсортируйте по убыванию

11:02,11:06 
15:45,16:05 
... 

Эти данные один выше другого. Таким образом, у нас есть 11 столбцов (11 символов плюс новая строка) и 239 строк. В исходном файле все они отсортированы случайным образом. Я должен сортировать их в порядке возрастания. В конце было бы неплохо визуализировать вывод. До сих пор я сделал первый шаг, я читаю файл «char by char». Но я не могу идти дальше; мои знания не позволяют мне этого. Я был бы очень рад, если бы кто-то мог мне помочь. Мне действительно нужно это.

+1

Что такое «серповидный орден»? – Rollie

+0

Просто подходите к нему шаг за шагом - сначала прочитайте csv line by line https://www.google.com.au/#output=search&sclient=psy-ab&q=read+csv+line+by+line+c%2B%2B&oq = чтение + + CSV линии + на + линии + с% 2B% 2B & gs_l = hp.3..0i22i30.284.5223.0.5471.25.15.0.10.10.0.245.2936.0j12j3.15.0 ... 0,0 ... 1c.1.14. psy-ab.Tj-9OGnIXVc & pbx = 1 & bav = on.2, or.r_cp.r_qf. & bvm = bv.47008514, d.aGc & fp = 5741f610caf3269 & biw = 952 & bih = 999 и сохранить его в векторе. Сортировка очень хорошо освещена в любом учебнике, которое вы найдете, поэтому не должно быть проблемой. – sashkello

+0

Мне очень жаль, я имел в виду восходящий порядок. Является txt-файлом, что-то меняет? – shinoda898

ответ

0

Вот сценарий генератора данных в Perl; она генерирует 2 раза в каждой строке, а второй всегда позже, чем первый:

#!/usr/bin/env perl 
use strict; 
use warnings; 

foreach my $i (1..239) 
{ 
    my $h1 = 10 + rand 8; 
    my $h2 = $h1 + 1; 
    my $m1 = rand 60; 
    my $m2 = rand 60; 
    printf "%.2d:%.2d,%.2d:%.2d\n", $h1, $m1, $h2, $m2; 
} 

А вот скромно многословный C++ программа, которая сортирует Perl-сгенерированные данные файл таким же образом, что программа Unix sort делает.

#include <string> 
#include <iostream> 
#include <vector> 
#include <algorithm> 

int main() 
{ 
    std::vector<std::string> input; 
    std::string line; 

    while (std::getline(std::cin, line)) 
     input.push_back(line); 

    std::sort(input.begin(), input.end()); 

    //C++03 
    //for (std::vector<std::string>::iterator it = input.begin(); it != input.end(); ++it) 
    // std::cout << *it << std::endl; 

    //C++11 
    for (auto &it : input) 
     std::cout << it << std::endl; 
} 

Там могут быть способы сжатия C++, но это работает для меня (G ++ 4.7.1 на Mac OS X 10.8.3):

g++ -O3 -g -std=c++11 -Wall -Wextra rs.cpp -o rs 

Есть определенно способы сжимают Perl код.

Смежные вопросы