Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 4
1

Сортировка Шелла

02.05.2013, 17:33. Просмотров 1079. Ответов 6
Метки нет (Все метки)

В алфавитном порядке по фамилии алгоритмом Шелла
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
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
 
struct mas
{
    string fam,name,secondname;
    int year, ses[5];
    void print();
};
void mas:: print()
{
out<<setw(12)<<left<<fam<<setw(10)<<name<<setw(15)<<secondname<<setw(5)<<year;
for(int i=0; i<5; i++)
out<<setw(3)<<ses[i];
}
void sort(mas *a,int n)
{
    mas temp;
    int i,j,incr=n/2;
    while(incr>0)
    {
    for (i=incr;i<n;i++)
    {
        j=i-incr;
        while(j>=0)
            if(a[j].fam>a[j+incr].fam)
            {
                temp=a[j];
                a[j]=a[j+incr];
                a[j+incr]=temp;
                j=j-incr;
            }
            else
                j=-1;
    }
    incr=incr/2;
    }
}
int main()
{
    int n=0,m,i;
    mas stud[20];
    if(!in) cout<<"Error";
    else
    {
        in>>m;
        while(in.peek()!=EOF)
        {
            in>>stud[n].fam;
            in>>stud[n].name;
            in>>stud[n].secondname;
            in>>stud[n].year;
            in>>stud[n].ses[i];
        }
        n++;
        sort(stud,n);
        out<<m<<endl;
        for (i=0; i<n; i++)
            stud[i].print();
    }
    in.close(); out.close();
    return 0;
}
Не могу найти ошибки
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2013, 17:33
Ответы с готовыми решениями:

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком...

Сортировка Шелла и пирамидальная сортировка для символов
Здраствуйте, можете пожалуйста привести пример сортировок шелла и пиромидальной сортировки...

Сортировка Шелла и сортировка вставками
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла

Пирамидальная сортировка и сортировка Шелла
Ребята помогите пожалуйста, я NEWBIE и не могу решить такая задача : Выполнить сортировку по...

6
Заблокирован
02.05.2013, 19:21 2
В строке 59: что вы выуживаете из файла? Чему равно i? И сколько вам нужно ses[i]?
0
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 4
02.05.2013, 19:33  [ТС] 3
В файле input.txt содержится сведения о группе студентов в формате:
номер группы;
запись о каждом студенте группы содержит следующие сведения: фамилия, имя, отчество, год рождения, оценки по пяти предметам.
т.е. 59 строка должна выглядить так?:
C++
1
2
3
4
5
6
7
8
in>>stud[n].secondname;
            in>>stud[n].year;
            for (i=0; i<5; i++)
            {
            in>>stud[n].ses[i];
        }
        }
        n++;
0
Заблокирован
02.05.2013, 19:37 4
59 строка должна выгляд и еть так?


Да )
0
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 4
02.05.2013, 19:39  [ТС] 5
но все равно не правильно считает
0
Заблокирован
02.05.2013, 19:47 6
Строка 32 - так строки не сравниваются: http://www.cplusplus.com/refer... g/compare/
1
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 4
03.05.2013, 18:23  [ТС] 7
Я немного по другому сделал и получилось так:
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
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
 
struct mas
{
    string fam,name,secondname, year;
    int  ses[5];
    void print();
};
void mas::print()
{
    out<<setw(12)<<left<<fam<<setw(10)<<name<<setw(15)<<secondname<<year<<setw(4)<<" ";
for(int i=0; i<5; i++)
out<<setw(3)<<ses[i];
out<<endl;
}
void sort(mas *a,int n)
{
    mas temp;
    int i,j,incr=n/2;
    while(incr>0)
    {
    for (i=incr;i<n;i++)
    {
        j=i-incr;
        while(j>=0)
            if(a[j].fam>a[j+incr].fam)
            {
                temp=a[j];
                a[j]=a[j+incr];
                a[j+incr]=temp;
                j=j-incr;
            }
            else
                j=-1;
    }
    incr=incr/2;
    }
}
int main()
{
    int n=0,m,i;
    mas stud[20];
    if(!in) cout<<"Error";
    else
    {
        in>>m;
        while(in.peek()!=EOF)
        {
            in>>stud[n].fam;
            in>>stud[n].name;
            in>>stud[n].secondname;
            in>>stud[n].year;
            for (i=0; i<5; i++)
            {
            in>>stud[n].ses[i];
        }
        n++;
        }
        sort(stud,n);
        out<<m<<endl;
        for (i=0; i<n; i++)
            stud[i].print();
    }
    in.close(); out.close();
    return 0;
}
теперь все работает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2013, 18:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сортировка Шелла
Сортировать массив,массива задаешь сам,но вывод на экран поэтапна или каждый алгоритм должен на...

Сортировка Шелла 2
Не могу понять в чём ошибка компиляции, подскажите пожалуйста) #include &lt;malloc.h&gt; #include...

Сортировка Шелла
Нужно написать программу которая делает сортировку Шелла, сколько кодов уже пересмотрел всё не то!...

Сортировка Шелла
Ребят помогите. есть матрица нужно отсортировать каждую строчку матрицы по убыванию алгоритмом...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.