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

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

16.11.2016, 21:29. Показов 2645. Ответов 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
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 20:55
Лучший ответ Сообщение было отмечено programmmistka как решение

Решение

Студворк — интернет-сервис помощи студентам
Перед циклом открываешь и передаёшь в функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
void getfio(ifstream &in)
{
        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; 
}
2
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 21:01  [ТС]
Цитата Сообщение от programmmistka Посмотреть сообщение
Передавай его по ссылке.
(ofstream &f) так?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 21:03
C++
1
getfio(f)
Ну как любой другой параметр.
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 21:05  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Перед циклом открываешь и передаёшь в функцию
Не строит, я сделала вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        ifstream in; // Объявили файл
        in.open("input.txt");
    void getfio(ifstream *in) 
    { //Функция считывания данных о людях
        
        in >> F; 
        in >> I;
        in >> O;
        for (int j = 0; j<3; j++)
            in >> Dt[j];
        in.close(); //Закрыли файл
        
    
    }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 21:08
Не указатель, а ссылка. Вызов покажи.
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 21:15  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Не указатель, а ссылка. Вызов покажи.
Не изменилось(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        ifstream in; // Объявили файл
        in.open("input.txt");
    void getfio(ifstream &in) 
    { //Функция считывания данных о людях
        
        in >> F; 
        in >> I;
        in >> O;
        for (int j = 0; j<3; j++)
            in >> Dt[j];
        in.close(); //Закрыли файл
        
    
    }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 21:19
Что не получилось? Я же сказал как изменить. Функция просто читает, никаких open/close.
C++
1
2
3
4
5
6
7
8
        ifstream in; // Объявили файл
        in.open("input.txt");
for (int i = 0; i < 2; i++)
{
        group.getfio(in); //Вызвываем функцию
        myList.push_back(group); //Данные вносим в конец списка 
    }
in.close();
1
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 21:29  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
void getfio(ifstream& in)
{
    in >> F;
    in >> I;
    in >> O;
    for (int j = 0; j < 3; j++)
        in >> Dt[j];
}
Это в классе описано

Добавлено через 42 секунды
Цитата Сообщение от nmcf Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
ifstream in; // Объявили файл
in.open("input.txt");
for (int i = 0; i < 2; i++)
{
    group.getfio(in); //Вызвываем функцию
    myList.push_back(group); //Данные вносим в конец списка
}
in.close();
А это в основной функции. Из-за этого запуталась куда что нужно писать
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 21:29
Цитата Сообщение от programmmistka Посмотреть сообщение
Это в классе описано
Да.
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 21:36  [ТС]
Цитата Сообщение от 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
class FIO
{
public:
    
    char F[20]; //Фамилия
    char I[20]; //Имя
    char O[20]; //Отчество
    unsigned short int Dt[3]; //Дата рождения
 
        ifstream in; // Объявили файл
        in.open("input.txt");
 
    void getfio(ifstream &in) { //Функция считывания данных о людях
        
        in >> F; 
        in >> I;
        in >> O;
        for (int j = 0; j<3; j++)
            in >> Dt[j];
        //in.close(); //Закрыли файл
        
    
    }
};
А вот что в главной фун-ии:
C++
1
2
3
4
for (int i = 0; i < 2; i++) {
        group.getfio(in); //Вызвываем функцию
        myList.push_back(group); //Данные вносим в конец списка 
    }
И идет сбой построения
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 21:39
Файл как в класс-то попал? Перед циклом открыть, после - закрыть.
0
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 21:50  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Файл как в класс-то попал? Перед циклом открыть, после - закрыть.
Если файла не будет в классе, но данные не будут считываться.

Добавлено через 3 минуты
Цитата Сообщение от 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
28
#include <iostream>
#include <fstream>
using namespace std; 
 
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; 
        in >> I;
        in >> O;
        for (int j = 0; j<3; j++)
            in >> Dt[j];
        
        
        in.close(); 
        //Закрыли файл
    
    }
};
Вот код основной:
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
void main(){
    setlocale(LC_ALL, "RUS");
    list<FIO> myList; //Объявили список
    list<FIO>::iterator iter; //Объявили итерации
    FIO group; //Объявили объект
    //Создаем список
    ifstream in; // Объявили файл
        in.open("input.txt");
    for (int i = 0; i < 2; i++) {
        group.getfio(in); //Вызвываем функцию
        myList.push_back(group); //Данные вносим в конец списка 
    }
    in.close(); 
    //Выводим записи
    for (iter = myList.begin(); iter != myList.end(); ++iter)
    {
    cout << "Имя: " << iter->I << " " << "Отчество: " << iter->O << " " << "Фамилия: " << iter->F << " " << "Дата рождения: ";
            
        for (int j = 0; j < 3; j++) {
            cout << iter->Dt[j];
            if (j<2) 
                cout << "."; //разделитель даты
        }
        cout << endl;
    }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 21:53
Цитата Сообщение от programmmistka Посмотреть сообщение
Если файла не будет в классе, но данные не будут считываться.
Он по ссылке передаётся в функцию, ему в классе быть не нужно.
1
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
19.11.2016, 21:57  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Он по ссылке передаётся в функцию, ему в классе быть не нужно.
Покажите, пожалуйста, в примере, выше дан код.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.11.2016, 22:12
В предыдущих сообщениях все примеры были.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2016, 22:12

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

Можно ли использовать 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.


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru