Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20

Упорядочить список по возрастанию (для решения задачи использовать STL)

16.11.2016, 21:29. Показов 2478. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Во входном файле в первой строке три слова и число (13 12 65) в последующих тоже самое.
Проверьте код, пожалуйста, выводит непонятные символы, хотя построение успешно

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
#include <iostream>
#include <list> // подключаем заголовок списка
#include <iterator> // заголовок итераторов
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
 
    setlocale(LC_ALL, "RUS");
 
    list<string> myList; // Объявляем пустой список
    ifstream file; // создать поточный объект file
    file.open("input.txt"); // открыть файл на чтение
 
    char Fam[25]; // Фамилия
    char Name[25]; // Имя
    char Surname[25]; // Отчество
    char Dt[3]; // Дата рождения
 
    // Считывать и отображать строки в цикле, пока не eof
    do
    {
 
        file.get(*Fam); //Считываем из файла первое слово до пробела
        file.get(*Name);
        file.get(*Surname);
        file.get(*Dt);
        myList.push_back(Fam); //Записываем в конец листа
        myList.push_back(Name);
        myList.push_back(Surname);
        myList.push_back(Dt);
        // file.close("input.txt");
 
    } while (!file.eof());
 
    cout << "Список: ";
    copy(myList.begin(), myList.end(), ostream_iterator<string>(cout, " ")); //Выводим список
 
    myList.sort(); // отсортировали список по возрастанию
    cout << "\nОтсортированный список: ";
    copy(myList.begin(), myList.end(), ostream_iterator<string>(cout, " ")); //Сортировка списка
 
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2016, 21:29
Ответы с готовыми решениями:

Вычислить сумму ряда по формуле (для решения задачи использовать вложенные циклы)
Задано натуральное n. Вычислить сумму. Нужна ваша помощь, прошу, если не сложно

Найти сумму ряда по заданной формуле (для решения задачи использовать массивы)
Найти сумму ряда по формуле: -\frac{{a}_{1}}{1!}\, +\, \frac{{a}_{2}}{2!}\, -\, \frac{{a}_{3}}{3!}\, +\, ...\, -\, \frac{{a}_{n}}{n!} ...

В заданной последовательности найти сумму всех целых чисел кратных 5 (для решения задачи использовать while)
Введена последовательность n, найти сумму всех целых чисел этой последовательности кратных 5

34
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
16.11.2016, 21:35
Лучший ответ Сообщение было отмечено programmmistka как решение

Решение

Цитата Сообщение от programmmistka Посмотреть сообщение
C++
1
2
3
4
file.get(*Fam); //Считываем из файла первое слово до пробела
file.get(*Name);
file.get(*Surname);
file.get(*Dt);
Функция get считывает 1 символ.
Для считывания строки используйте file >> variable. Или file.getline( variable, size_buffer ).
Но file.getline считывает не до пробела, а size_buffer символов.
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
16.11.2016, 21:37
Цитата Сообщение от programmmistka Посмотреть сообщение
три слова и число (13 12 65)
Я вижу здесь три числа и никаких строк.

Ты хоть понимаешь, что хочешь получить? Почему разные по смыслу поля в один вектор помещаются?
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
16.11.2016, 21:42  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Я вижу здесь три числа и никаких строк.
Ты хоть понимаешь, что хочешь получить? Почему разные по смыслу поля в один вектор помещаются?
Содержание входного файла : Иванов Иван Иванович 12.10.16
Петров Петр Петрович 14.10.78
что значит разные по смыслу поля?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
16.11.2016, 21:45
Цитата Сообщение от programmmistka Посмотреть сообщение
что значит разные по смыслу поля?
То и значит. Всё в кучу. Когда ты это отсортируешь, они все смешаются.
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
16.11.2016, 21:49  [ТС]
Цитата Сообщение от GbaLog- Посмотреть сообщение
Функция get считывает 1 символ.
Для считывания строки используйте file >> variable. Или file.getline( variable, size_buffer ).
Но file.getline считывает не до пробела, а size_buffer символов.
Спасибо) А как что бы до пробела считывало?

Добавлено через 2 минуты
Цитата Сообщение от nmcf Посмотреть сообщение
То и значит. Всё в кучу. Когда ты это отсортируешь, они все смешаются.
Подскажите, пожалуйста, как сделать так, что бы не смешались?
Первый раз работаю с этой библиотекой.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
16.11.2016, 21:51
Цитата Сообщение от programmmistka Посмотреть сообщение
А как что бы до пробела считывало?
Цитата Сообщение от GbaLog- Посмотреть сообщение
используйте file >> variable.
Так.
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
16.11.2016, 21:55  [ТС]
Цитата Сообщение от GbaLog- Посмотреть сообщение
Так.
file >> Fam; //Считываем из файла первое слово до пробела
file >> Name;
file >> Surname;
file >> Dt;
Так? Или что тогда такое variable?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
16.11.2016, 21:55
Цитата Сообщение от programmmistka Посмотреть сообщение
Так?
Да.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
16.11.2016, 21:55
programmmistka, создай структуру или класс, скажем, Person. Потом создай массив объектов типа Person. В качестве массива используй std::list. Потом сортируй свой список по заданному полю (имя - это поле; фамилия - ещё одно поле; отчество - тоже поле1).


_________________________________
1Термин поле заимствован из языка программирования Java. В C++ для этого явления имеется свой термин - данные-члены (data members).
2
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
16.11.2016, 21:58  [ТС]
Цитата Сообщение от gru74ik Посмотреть сообщение
programmmistka, создай структуру или класс, скажем, Person. Потом создай массив объектов типа Person. В качестве массива используй std::list. Потом сортируй свой список по заданному полю (имя - это поле; фамилия - ещё одно поле; отчество - тоже поле1).
Спасибо, попробую
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
16.11.2016, 21:58
Цитата Сообщение от programmmistka Посмотреть сообщение
как сделать так, что бы не смешались?
Делай как gru74ik говорит.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.11.2016, 23:58
Цитата Сообщение от gru74ik Посмотреть сообщение
Термин поле заимствован из языка программирования Java
Я слышал другую байку.
Когда-то структуры, (а они были ещё в С) назывались записями. Соответственно, элементы назывались полями.
Если написать функцию вставки, которая вставляет пробегая и сравнивая по переданному предикату, то list имеет смысл. А если сначала накидать, а потом отсортировать, то вектор должен быть лучше. Или нет?
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
17.11.2016, 22:28  [ТС]
Можно ли запросить переменные из файла в класс?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.11.2016, 22:45
Очевидно - да.
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 20:14  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Очевидно - да.
Подскажите, пожалуйста, что не так? Считывает только одну строку, а у меня во входном файле больше.

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
class FIO
{
public:
    
    char F[20]; //Фамилия
    char I[20]; //Имя
    char O[20]; //Отчество
    unsigned short int Dt[3]; //Дата рождения
 
    void getfio() { //Функция считывания данных о людях
        ifstream in; // Объявили файл
        in.open("input.txt");
        
        in >> F; 
        cout << F << " "; 
        in >> I;
        cout << I << " "; 
        in >> O;
        cout << O << " "; 
        for (int j = 0; j<3; j++)
            in >> Dt[j];
        cout << Dt[0] << " " << Dt[1] << " " << Dt[2] << endl; 
        in.close(); 
        //Закрыли файл
    
    }
};
0
19.11.2016, 20:21

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Я слышал другую байку.
Когда-то структуры, (а они были ещё в С) назывались записями. Соответственно, элементы назывались полями.
Аналогично. Во всяком в случае в Erlang дело обстоит именно так. Так что думаю не стоит приписывать первенство Java.

0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 20:26  [ТС]
Вызывается в цикле
C++
1
2
3
4
5
for (int i = 0; i < 2; i++) {
        group.getfio(); //Вызвываем функцию
        myList.push_back(group); //Данные вносим в конец списка 
    }
    //Вывод
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 20:42
Потому что файл открывается каждый раз заново, и считывается первая запись.
Файл должен быть вне функции. Передавай его по ссылке.
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 20:53  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Передавай его по ссылке.
То есть как?)
Это в основном файле нужно его отметить или как? Не понимаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2016, 20:53
Помогаю со студенческими работами здесь

Сформировать список из вещественных чисел. Упорядочить список по возрастанию.
решить через односвязные списки..=( Сформировать список из вещественных чисел. Упорядочить список по возрастанию.

Можно ли использовать Python для решения этой задачи ?
постановка задачи(минимум) - Каждый ученик/его родители (2000 учеников в школе) может, взависемости от login , password (в любое время)...

Использовать вспомогательную подпрограмму-процедуру для решения задачи
3 и 5 задание

Какую лучше использовать БД для решения поставленной задачи
Добрый день, необходимо выбрать наиболее подходящую БД для реализации приложения для расчетов. Был небольшой опыт работы с SQL Server, и...

Использовать симплекс-метод для решения следующей задачи
F=4x1+6x2-&gt;max 2x1+x2&lt;=64 x1+3x2&lt;=72 x1+x2&lt;=20 x1=&gt;0, x2=&gt;0.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru