Форум программистов, компьютерный форум CyberForum.ru

Stl отсортировать структуру - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить код функции вычесления среднего значения для нечетных элементов массива А http://www.cyberforum.ru/cpp-beginners/thread1109731.html
Помогите! Составить код функции вычесления среднего значения для нечетных элементов массива А С меня плюшки))
C++ Найти функцию нахождения наименьших из 3-х чисел Помогите набрать программу! Найти функцию нахождения наименьших из 3-х чисел. Добавлено через 7 минут Помогите написать функцию нахождения наименьших из 3-х чисел. http://www.cyberforum.ru/cpp-beginners/thread1109717.html
C++ Глючит деструктор динамическогом массива
Деструктор: template <typename TBase> TArray <TBase>:: ~TArray ( ) { TBase *p; size_t Count; if (Data!=NULL) { for (p=Data+Count-1; p>=Data; --p) { p->~TBase();
C++ Двунаправленный линейный список
Всем доброго утра:) Ребят,может кто помочь,дали код сказали разобраться со списком...но я путем не понимаю что в нем происходит:(Может кто прокомментировать,пожалуйста!:( void container::In(ifstream &ifst) { shape *New; node *q, *t; t = new node; first = t; New = shape::In(ifst); t->elem = New;
C++ Хорошо ли использовать библиотеку fstream? http://www.cyberforum.ru/cpp-beginners/thread1109686.html
Хорошо ли использовать библиотеку fstream?
C++ Как добавить в код библиотеку <time.h> Привет всем! есть код для задания в справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отбытия и прибытия. Вывести информацию об рейсах которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени.Пункт назначения и время вводятся с клавиатуры. как добавить библиотеку <time.h> ... подробнее

Показать сообщение отдельно
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995

Stl отсортировать структуру - C++

03.03.2014, 10:12. Просмотров 892. Ответов 27
Метки (Все метки)

вообщем есть задача:
Написать функцию, которая читает данные о ноутбуках из файла note.txt в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта - целое число записей в файле, далее записи в формате структуры NOTEBOOK.
Написать программу, в которой на основе разработанных функций осуществляется запись в двоичный файл данных о ноутбуках, отсортированных в порядке уменьшения тактовой частоты процессора.
я закрыл глаза на то, что в задачи про видеопамять нигде не упоминается, это опускаем.

вообщем как сделать сортировку по частоте при помощи STL? Не хочу делать топорно, всётаки STL пытаюсь освоить, и что касается записи в бинарный файл, тоже как это сделать через write? ну или другие варианты

за обилие комментариев прошу прощение - делаю для человека, который 0 в программировании

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
#include <iostream>
#include <vector>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
 
struct NOTEBOOK{
    struct disp_res{
    int x;              // разрешение экрана
    int y;              //
    };
disp_res disp;
int f;          // частота
float d;        // диагональ
int price;      // цена
char model[21]; // название
};
 
// функция которой мы считываем файл в массив структур NOTE
void readNote(vector<NOTEBOOK> &a, ifstream& in)
{
string str;                 // буфер для хранения считываемой информации
NOTEBOOK n;                 // структура, в которую мы считываем данные из потока in
 
    while (!in.eof())
    {
    in>>str;                        // считываем до первого пробела в str
    n.disp.x=atoi(str.c_str());     // преобразуем тип string в тип int с помощью функции atoi и записываем в n.disp.x
 
    in>>str;
    n.disp.y=atoi(str.c_str());     // аналогично
 
    in>>str;
    n.f=atoi(str.c_str());          // всё тоже самое
 
    in>>str;
    n.d=float(atof(str.c_str()));   // преобразуем функцией atof стринг в double, а затем в float и записываем в
 
    in>>str;
    n.price=atoi(str.c_str());      // аналогично с 1ыми
 
    in>>str;
    strcpy(n.model,str.c_str());    // здесь мы тип string приводим к типу char* методом c_str()(т.к. функции strpy принимает только char* - указатель на char) а затем вызываем функцию strcpy
                                    // которая копирует str в массив символов model[21]
 
    a.push_back(n);              // добавляем в наш контейнер структуру n - метод push_back добавляет структуру в конецочереди, т.е. это аналогиятого
                                 // как мы кладём вещи в коробку - первая вещь будет снизу, т.е. 0, вторая будет над ней, т.е. 1 и т.д.
    }
}
 
// функция для простмотра вектора с структурами
void show(vector<NOTEBOOK> &a)
{
vector<NOTEBOOK>::iterator iter_a;      // создаем итератор для прохода по вектору со структурами, итератор - это своеобразный указатель, используемый для STL контекнеров, советую почитать, там всё просто
int i=0;        // просто счетчик для отображения номера структуры
    for(iter_a=a.begin();iter_a!=a.end();iter_a++)  // цикл - начинается с указателя a.begin() - начала ветора, и продолжается до a.end()... вообщем почти тоже самое что и обычный цикл
    {
    cout<<"Разрешение экрана : "<<a[i].disp.x<<" x "<<a[i].disp.y<<endl<<"Частота ГГц : "<<a[i].f<<endl<<"Диагональ экрана : "<<a[i].d<<endl<<"Цена : "<<a[i].price<<endl<<"Модель : "<<a[i].model<<endl<<endl;
    i++;    // итерируем счетчик
    }
}
 
int main()
{
setlocale(LC_ALL, "Russian");
ifstream in("note.txt");
vector <NOTEBOOK> a;
 
readNote(a,in);     // считываем в а данные из note.txt
show(a);            // выводим записанные данные
 
return 0;
}
Вложения
Тип файла: rar AleksandraVasil_2_free.rar (259.5 Кб, 3 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru