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

Блочная сортировка структур (Отсортировать массив структур по фамилии)

03.03.2014, 21:53. Показов 3987. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите алгоритм блочной сортировки структур на языке С++.
Мне нужно отсортировать массив структур по фамилии.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2014, 21:53
Ответы с готовыми решениями:

Отсортировать массив структур по фамилии или по году
// structura.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include...

Отсортировать массив структур (фамилии студентов и размер их стипендии) по размеру стипендии
Помогите с задачей Условие:"заданный тип структур что содержатся следующие сведения какие фамилии студентов и размер их...

Нужно добавить сортировку в массив структур по фамилии
#include <string.h> #include <iostream> #include <stdio.h> #include <malloc.h> #include <clocale> #include <windows.h> #include...

10
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.03.2014, 23:07
Алгоритмы сортировок
Выбираете, сортируете. Для строк есть функции сравнения.
0
0 / 0 / 3
Регистрация: 07.10.2013
Сообщений: 81
03.03.2014, 23:20  [ТС]
Я не совсем понимаю, как это реализовать в коде.
Например, есть в структуре имя , фамилия и отчество. Мне нужно отсортировать массив структур по фамилиям. То есть в массиве структур первым элементом должна стать структура с фамилией, которая идет раньше по алфавиту.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.03.2014, 23:47
Цитата Сообщение от aimbat Посмотреть сообщение
Я не совсем понимаю, как это реализовать в коде.
Может так понятней будет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct A
{
    char name[20];
    int x;
    int y;
};
 
A arr[3];
   ...
   // тут сортировка по name
for (int i = 0; i < 3; ++i)
{
   ...
    if (strcmp(arr[i].name, arr[i + 1].name) > 0)
   ...
1
0 / 0 / 3
Регистрация: 07.10.2013
Сообщений: 81
04.03.2014, 00:37  [ТС]
Как это реализовать в этом коде?Нужно отсортировать по фамилии.
Заранее спасибо.
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
#include <iostream>
#include <conio.h>
#include <string.h>
 
using namespace std;
 
struct student
{
    char name[25];
       char sername[25];
    char otchestvo[25];
    char adres[15];
    float bal1;
    float bal2;
    float bal3;
 
};
 
void vvod(student*mass,int k)
{
    for(int i=0;i<k;i++)
    {
        cout<<"Name: ";
        cin>>mass[i].name;
        cout<<"Sername: ";
        cin>>mass[i].sername;
        cout<<"Otchestvo: ";
        cin>>mass[i].otchestvo;
        cout<<"Adres: ";
        cin>>mass[i].adres;
        cout<<"Bal1: ";
        cin>>mass[i].bal1;
        cout<<"Bal2: ";
        cin>>mass[i].bal2;
        cout<<"Bal3: ";
        cin>>mass[i].bal3;
    }
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
void sort(student*mass,int k)
{
    float masbal[30];
    for(int i=0;i<k;i++)
        masbal[i]=(mass[i].bal1+mass[i].bal2+mass[i].bal3)/3;
       cout<<"Result: "<<endl<<endl;
    for(int p=0;p<k;p++)
        if(stricmp(mass[p].adres,"Kiev")==0)
                if(masbal[p]>=4.5)
                  {
                cout<<mass[p].sername<<" ";
                cout<<mass[p].name<<" ";
                      cout<<mass[p].otchestvo<<", ";
                      cout<<mass[p].adres<<", ";
                cout<<masbal[p]<<endl<<endl;
                  }
}
 
void main()
{
    int k;
    cout<<"Vvedite kolichestvo studentov: ";
    cin>>k;
    student*mass=new student[k];
    vvod(mass,k);
    sort(mass,k);
    getch();
}
0
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 36
04.03.2014, 01:20
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
struct spis
{
    char p[15];
};
 
 
spis *s;
 
void sort()
{
    spis tmp;
    int i, j;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
        {
            if(s[j].p[0]>s[j+1].p[0])
            {
                strcpy(tmp.p, s[j].p);
                strcpy(s[j].p, s[j+1].p);
                strcpy(s[j+1].p, tmp.p);
            }
                else
                    if(s[j].p[0]==s[j+1].p[0])
                        srt(j, 1);
                    
        }
}
 
void srt(int j, int b)
{
    spis tmp;
    if(s[j].p[b]>s[j+1].p[b])
    {
        strcpy(tmp.p, s[j].p);
        strcpy(s[j].p, s[j+1].p);
        strcpy(s[j+1].p, tmp.p);
    }
        else
            if(s[j].p[b]==s[j+1].p[b])
                srt(j, b+1);
}
Это метод сортировки, можешь попробовать реализировать в своей программе.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.03.2014, 02:45
alsav22, мне кажется хитринка в вопросе состоит в том, что при равенстве фамилий нужно сравнить имена и при их равенстве, - отчества. Рекурсивно можно. (если встретится полное совпадение, - счетчиком защититься, то есть на 4-м вызове выходить )
А может, просто кажется.
0
0 / 0 / 3
Регистрация: 07.10.2013
Сообщений: 81
04.03.2014, 03:10  [ТС]
IGPIGP, можно, но сейчас мне это не нужно.
Сейчас я хочу сортировать массив структур. Не просто фамилии, а соответствующие имя, отчество, баллы, адрес вместе с фамилией . То есть сортировать блоки памяти.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.03.2014, 03:26
aimbat, для сортировки нужно определиться с критерием сравнения и тогда определить алгоритм. Понятно, что сортировать вам нужно структуры. Главное понять как их сравнивать. В вашем случае сравнение строк без учёта регистра вполне подходит. Но представьте, что у Вас встретятся
Иванов A.A и Иванов Ъ. Ъ. (при сортировке только по фамилии второй может оказаться впереди)
Набор позволяет набрать Ъ в верхнем регистре. Слов начинающихся на ъ я не встречал, а вот с именами нельзя делать никаких предположений. Впрочем, говорю же:
Цитата Сообщение от IGPIGP Посмотреть сообщение
А может, просто кажется
0
04.03.2014, 04:17

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
мне кажется хитринка в вопросе состоит в том, что при равенстве фамилий нужно сравнить имена и при их равенстве, - отчества.
Мне кажется, что хитринка в том, что ТС сам писать не хочет.

0
04.03.2014, 04:58

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Мне кажется, что хитринка в том,
Похоже. Реализация ведь не от языка программирования зависит. Но от языка зависит, точно. Вообще, тёмный для меня предмет. В русском 33 буквы. Отбросив Ы и Ъ 31. Максимальное количество границ корзин из 1-буквенных строчек тоже 31. В принципе, написать значения для любого количества можно. Само по себе забавно. Тоже же рекурсивная задачка для n>31 ? Не... пойду спать. Спокойной ночи. :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2014, 04:58
Помогаю со студенческими работами здесь

Отсортировать массив структур
я начинающий программист, помогите пожалуйста отсортировать массив структур, правильно ли я начал делать код? #include &lt;conio.h&gt;...

Отсортировать массив структур
Пусть есть массив структер содержащий double и index. Например: (2.5, 1), (37, 2), (-21.12304230, 3). Хочу отсортировать по Double, то...

Отсортировать массив структур
Есть у меня структура с данными struct Bal{ unsigned short int Voltage; unsigned short int index; }; Bal...

Как отсортировать массив структур?
Есть такая структура public struct sFileTree { //ID файла public long id_file; //Полное имя public...

Отсортировать массив структур по возрастанию
Дана структура нужно отсортировать масив структур за вторим полем. struct AEROFLOT Flight; struct AEROFLOT{ char destinationInfo; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru