Форум программистов, компьютерный форум, киберфорум
Наши страницы

Считывание с текстового файла. Сортировка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не меняется значение указателя http://www.cyberforum.ru/cpp-beginners/thread774661.html
Написал функцию для подсчёта количества подстрок. При вызове на строках, которые в main вместо 3 выдаёт ответ 4. На остальных строках ответ верный. Это связано с тем, что в цикле while в функции...
C++ Нужна функция для суммирования матриц нужна функция для сложения матриц, естественно что складывать можно только равные матрицы, то по этому должно быть сообщение об ошибке что матрицы не равны #include "stdafx.h" #include <iostream>... http://www.cyberforum.ru/cpp-beginners/thread774656.html
Отличия typedef от объявлений C++
Собственно в чем отличия между : typedef struct { double x, y; bool worldDestroyed; int witcherCount; } everythingStruct; // от
C++ Динамический двухмерный массив
ИМХО директива include предназначена для включения документа в тело JSP НА ЭТАПЕ ТРАНСЛЯЦИИ JSP В СЕРВЛЕТ , а не во время выполнения , соответственно значение аттрибута file должно содержать...
C++ Входит ли точка в заштрихованную область? http://www.cyberforum.ru/cpp-beginners/thread774600.html
Добрый вечер! Собственно дан график: Нужно создать программу, которая будет проверять, входит ли точка (вводит пользователь) в этот график (заштрихованная область). Вопросов несколько: Самый...
C++ Нахождение площадей пересечения случайных прямоугольников Предположим у меня есть некоторое количество прямоугольников (точек x;y которые образуют прямоугольники, а так же точки пересечения прямоугольников) расположенных случайно в декартовой системе... подробнее

Показать сообщение отдельно
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
30.01.2013, 19:25
если устроит такое решение, то вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <algorithm>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <vector>
 
// ------------------------------------------------------------------------------------
 
class Data
{
public:
    std::string author; //Автор
    std::string title; // Название
    std::string year; // Год издания
    std::string numOfPages; // Количество страниц
    std::string cost; // Цена
 
public:
    Data(std::string _author = "", std::string _title = "", std::string _year = 0, 
        std::string _numOfPages = 0, std::string _cost = 0) :
    author(_author), title(_title), year(_year), numOfPages(_numOfPages), cost(_cost) { }
    
    ~Data() { } // ...
    
    void Print(); // Вывод данных
    
    bool operator< (const Data&); // Перегрузка оператора (для сортировки)
};
 
bool Data::operator< (const Data& rhs)
{
    return this->year < rhs.year;
}
 
void Data::Print()
{
    std::cout << std::setw(1)  << author << std::setw((20-author.size())+10) << title 
        << std::setw(10) << year << std::setw(10) << numOfPages
        << std::setw(10)  << cost << std::endl;
}
 
// ------------------------------------------------------------------------------------
 
int main()
{
    std::ifstream ifs("1.txt"); // Поток работы с файлом
    std::string s; // В эту строку будет считыватся
 
    std::vector<Data> DV; // Вектор обьектов 
 
    if (!ifs.is_open()) { 
        std::cerr << "File cannot opened.\n"; // Проверка доступен ли файл
        exit(EXIT_FAILURE);
    }
 
    std::string tStrArr[5]; // Доп. массив строк, для разбивания строк
 
 
    while (std::getline(ifs, s)) // Работает, пока не будет достигнут конец файла
    {
        for (int i = 0, idx = 0; i < s.size(); i++)
        {
            if (s[i] == '.') { idx++; continue; }
            tStrArr[idx] += s[i];
        }
 
        DV.push_back(Data(tStrArr[0], tStrArr[1], tStrArr[2], tStrArr[3], tStrArr[4]));
        tStrArr[0] = tStrArr[1] = tStrArr[2] = tStrArr[3] = tStrArr[4] = "";
    }
 
    std::sort(DV.begin(), DV.end()); // Сортировка
 
    //-----------------------------------
    std::cout << "AUTHOR" << std::setw(24) 
              << "TITLE"  << std::setw(10) 
              << "YEAR"   << std::setw(10) 
              << "PAGES"  << std::setw(10) 
              << "COST";
    //-----------------------------------
    std::cout << std::endl << std::endl;
    //-----------------------------------
    for (auto i : DV)
        i.Print(); // Вывод
    //-----------------------------------
 
    system("PAUSE");
    return 0;
}
Файл выглядит так:

Код
Walter Isaacson.Stiv.2012.688.182.
Lina Kostenko.Solovey.2009.16.3.
Taras Shevchenko.Kobzar.2009.720.60.
John Tolkinoo.Gobit.2012.385.59.
Devid Mitchello.Hmarny.2012.800.100.
Uilyam Paul Yango.Khizha.2011.288.80.
Добавлено через 2 минуты
Цитата Сообщение от TheVlad Посмотреть сообщение
Определить три книги с
наименьшим количеством страниц ..
- забыл... Сам попробуешь сделать. Если не выйдет, пиши.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru