Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134

Как отсортировать структуру?

01.12.2012, 20:59. Показов 1508. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно отсортировать по number, и записать в новый файл.

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
#include "stdafx.h"
#include <fstream>
#include <stdlib.h>
 
using namespace std;
 
void main ()
{
        struct MARSH
            {
              char start[20], finish[20];
              unsigned number;
            };
MARSH a[8];
ifstream f("bd.txt");
ofstream f2("bd2.txt");
for(int i=0;i<8;i++)
{
char p[3];
f.getline(p,3);
a[i].number=atoi(p);
f.getline(a[i].start,20);
f.getline(a[i].finish,20);
}
f.close();
 
/*int tmp;
 for(int i=0;i<8;i++)
        for(int j=0;j<8;j++)
        {
            if(a[i].number<a[i+1].number)
            {
                tmp=a[i].number;
                a[i].number=a[j].number;
                a[j].number=tmp;
            }
        }*/
 
for (int i=0;i<8;i++)
    f2<<a[i].number<<" "<<a[i].start<<" - "<<a[i].finish<<endl;
 
f2.close();
}

Пример файла bd

21
Moscow
New York
12
Paris
London
72
Astrakhan
Volgograd
13
Berlin
Milan
23
Tol'yati
ST Petersburg
69
Washington
Munchen
73
Sydney
Tokio
37
Gavanna
Pekin
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.12.2012, 20:59
Ответы с готовыми решениями:

Как отсортировать структуру
struct Books { char *Nazvan; //название книги char *Name_avtor; //автор int Yaer_izd; // год издания ...

Как отсортировать структуру?
В чем здесь ошибка? Нужно записать во второй файл структуру, отсортированную по параметру number. #include &quot;stdafx.h&quot; ...

Как отсортировать по алфавиту структуру
Здравствуйте, мальчики. Я делала программу, которая содержит прайс лист: -названия товара -название магазина -стоимость Необходимо...

19
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
01.12.2012, 21:04
C++
1
2
3
4
5
6
if(a[i].number<a[i+1].number)
{
        MARSH tmp=a[i];
        a[i]=a[j];
        a[j]=tmp;
 }
1
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 21:06
Можно с помощью swap
0
17 / 5 / 2
Регистрация: 13.09.2011
Сообщений: 24
01.12.2012, 21:07
C++
1
2
3
4
5
6
7
8
9
//...
#include <algorithm>
//...
 
if(a[i].number<a[i+1].number){
 
        std::swap(a[i],a[i+1]);
 
}
1
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134
01.12.2012, 22:13  [ТС]
zss,
что то неправильно сортирует
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
#include "stdafx.h"
#include <fstream>
#include <stdlib.h>
 
using namespace std;
 
void main ()
{
        struct MARSH
            {
              char start[20], finish[20];
              unsigned number;
            };
MARSH a[8];
ifstream f("bd.txt");
ofstream f2("bd2.txt");
for(int i=0;i<8;i++)
{
char p[3];
f.getline(p,3);
a[i].number=atoi(p);
f.getline(a[i].start,20);
f.getline(a[i].finish,20);
}
f.close();
 
 for(int i=0;i<8;i++)
        for(int j=0;j<8;j++)
        {
            if(a[i].number<a[i+1].number)
{
        MARSH tmp=a[i];
        a[i]=a[j];
        a[j]=tmp;
 }
        }
 
for (int i=0;i<8;i++)
    f2<<a[i].number<<" "<<a[i].start<<" - "<<a[i].finish<<endl;
 
f2.close();
}
bd:

21
Moscow
New York
12
Paris
London
72
Astrakhan
Volgograd
13
Berlin
Milan
23
Tol'yati
ST Petersburg
69
Washington
Munchen
73
Sydney
Tokio
37
Gavanna
Pekin


bd2:

37 Gavanna - Pekin
69 Washington - Munchen
23 Tol'yati - ST Petersburg
13 Berlin - Milan
12 Paris - London
21 Moscow - New York
73 Sydney - Tokio
72 Astrakhan - Volgograd
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 22:14
Цитата Сообщение от delexa Посмотреть сообщение
что то неправильно сортирует
выложи весь код с учётом сортировки
0
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134
01.12.2012, 22:25  [ТС]
David Sylva, выше привел. как то странно сортирует
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 22:32
Цитата Сообщение от delexa Посмотреть сообщение
David Sylva, выше привел. как то странно сортирует
Используй swap и не парься.
0
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134
01.12.2012, 22:39  [ТС]
David Sylva,
ошибка при звершении программы и неправильно сортирует

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
#include "stdafx.h"
#include <fstream>
#include <stdlib.h>
#include <algorithm>
 
using namespace std;
 
void main ()
{
        struct MARSH
            {
              char start[20], finish[20];
              unsigned number;
            };
MARSH a[8];
ifstream f("bd.txt");
ofstream f2("bd2.txt");
for(int i=0;i<8;i++)
{
char p[3];
f.getline(p,3);
a[i].number=atoi(p);
f.getline(a[i].start,20);
f.getline(a[i].finish,20);
}
f.close();
 
 for(int i=0;i<8;i++)
        for(int j=0;j<8;j++)
        {
        if(a[i].number<a[i+1].number){
        swap(a[i],a[i+1]);
        }
        }
for (int i=0;i<8;i++)
    f2<<a[i].number<<" "<<a[i].start<<" - "<<a[i].finish<<endl;
 
f2.close();
}
вот так получается

bd2:

21 Moscow - New York
72 Astrakhan - Volgograd
13 Berlin - Milan
23 Tol'yati - ST Petersburg
69 Washington - Munchen
73 Sydney - Tokio
37 Gavanna - Pekin
1497538860 ММММЬ®BYшм - шм

ошибка

0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 22:42
Как звучит условие задачи?

Не по теме:

void main писать нельзя

0
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134
01.12.2012, 22:49  [ТС]
David Sylva, дана структура MARSH, содержащая 8 записей. Каждая запись состоит из номера, названия начального пункта маршрута и названия конечного пункта маршрута . Нужно отсортировать по номеру и записать в новый файл записи.
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 23:14
Сейчас тебе набросаю с использованием swap.

Добавлено через 11 минут
delexa Сейчас стал делать и наткнулся на такую ошибку, тебя не смущает что не которые города с двойным названием?
0
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134
01.12.2012, 23:18  [ТС]
David Sylva, Пока разбираюсь еще толком не знаю, как getline считывает. Тогда пробел на _ можно заменить.
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 23:19
Цитата Сообщение от delexa Посмотреть сообщение
David Sylva, Пока разбираюсь еще толком не знаю, как getline считывает. Тогда пробел на _ можно заменить
Может быть у тебя из-за этого возникали ошибки.
0
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134
01.12.2012, 23:25  [ТС]
David Sylva,
Исправил бд на

21
Moscow
New_York
12
Paris
London
72
Astrakhan
Volgograd
13
Berlin
Milan
23
Tol'yati
ST_Petersburg
69
Washington
Munchen
73
Sydney
Tokio
37
Gavanna
Pekin

Все также. Если изза этого, тогда странно, что работает нормально просто чтение структуры и запись ее в новый файл:

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
#include "stdafx.h"
#include <fstream>
#include <stdlib.h>
#include <algorithm>
 
using namespace std;
 
void main ()
{
        struct MARSH
            {
              char start[20], finish[20];
              unsigned number;
            };
MARSH a[8];
ifstream f("bd.txt");
ofstream f2("bd2.txt");
for(int i=0;i<8;i++)
{
char p[3];
f.getline(p,3);
a[i].number=atoi(p);
f.getline(a[i].start,20);
f.getline(a[i].finish,20);
}
f.close();
 
 
for (int i=0;i<8;i++)
    f2<<a[i].number<<" "<<a[i].start<<" - "<<a[i].finish<<endl;
 
f2.close();
}
bd

21
Moscow
New York
12
Paris
London
72
Astrakhan
Volgograd
13
Berlin
Milan
23
Tol'yati
ST Petersburg
69
Washington
Munchen
73
Sydney
Tokio
37
Gavanna
Pekin


bd2

21 Moscow - New York
12 Paris - London
72 Astrakhan - Volgograd
13 Berlin - Milan
23 Tol'yati - ST Petersburg
69 Washington - Munchen
73 Sydney - Tokio
37 Gavanna - Pekin
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 23:28
Вот такой вариант
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
#include <iostream> 
#include <fstream> 
#include <algorithm>
#include <string>
 
struct MARSH 
{ 
    std::string start; 
    std::string finish; 
    int number; 
}; 
 
int main() 
{   
    const int size = 8;
    MARSH mar[size];  
    MARSH temp;
    int i, j, count = 0;
    std::ifstream infile; 
    infile.open("Text.txt");  
 
    if(!infile.is_open()) 
        std::cout << "Error " << std::endl; 
    else 
        while(!infile.eof())  
            for ( i = 0; i < size; ++i) 
                infile >> mar[i].number >> mar[i].start >> mar[i].finish; 
 
    for ( i = 0; i < size; ++i) 
            for ( j = 0; j < size; ++j) 
                if( mar[j].number > mar[j+1].number) 
                { 
                    std::swap(temp, mar[j]); 
                    std::swap(mar[j], mar[j+1]); 
                    std::swap(mar[j+1], temp); 
                } 
     
 
    std::ofstream outfile("Asd.txt"); 
    for ( i = 0; i < size; ++i) 
        outfile << mar[i].number << " " << mar[i].start << " " << mar[i].finish << std::endl; 
    infile.close(); 
    outfile.close();
}
Добавлено через 34 секунды
Текстовый файл такой
21 Moscow New_York
12 Paris London
72 Astrakhan Volgograd
13 Berlin Milan
23 Tolyati ST_Petersburg
69 Washington Munchen
73 Sydney Tokio
37 Gavanna Pekin
1
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134
01.12.2012, 23:34  [ТС]
David Sylva, ошибка построения

0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 23:38
delexa Студия какого года?
0
2 / 2 / 4
Регистрация: 02.03.2011
Сообщений: 134
01.12.2012, 23:39  [ТС]
David Sylva, 2012
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.12.2012, 23:41
Цитата Сообщение от delexa Посмотреть сообщение
David Sylva, 2012
Так и думал.Не знаю что тебе сказать, я сам пользуюсь 10 студией.На 10 всё работает отлично.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2012, 23:41
Помогаю со студенческими работами здесь

Как отсортировать структуру по убыванию
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; using namespace std; int main() { ...

Как отсортировать структуру с полями string по алфавиту
Народ выручайте!!!! Нужно сделать сортировку по полю string Fname(по фамилии), всё сделал только это осталось!!! Метод или пример, хоть...

Отсортировать структуру
Начал изучать структуры. Разобрался как вводить и выводить, но при попытке вывести через отдельную функцию не выводится первой символ....

Отсортировать структуру
Задание такое Описать структуру с именем Train содержащую следующие поле. nazn-название пункта назначения numr -номер поезда ...

отсортировать структуру
Всем привет, вот такой вопрос, не получается правильно отсортировать следующую структуру по z координате vector&lt;Quaternion&gt;q;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru