Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
TheAlpha
6 / 6 / 8
Регистрация: 03.01.2013
Сообщений: 116
#1

Сортировка, метод шелла

10.04.2013, 03:31. Просмотров 413. Ответов 2
Метки нет (Все метки)

Всем доброй ночи, задача, дан список студентов и у каждого 5 оценок, отсортировать сумму оценок по убыванию и данные в новый файл, вот мой код. Помогите исправить ошибку

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
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
ifstream in("input.txt");
ofstream out("output.txt");
struct stud
 {
  string fam,name,otch;
  int year,oz[5], sum;
  void print()
           {
             out<<setw(14)<<left<<fam<<setw(10)<<name<<setw(15)<<otch<<' '<<year<<' ';
            
             out<<sum;
             out<<endl;
           }
  void init()
           {
             in>>fam>>name>>otch>>year;
             for(int i=0;i<5;i++){
             in>>oz[i];
             sum=sum+oz[i];
           }
 };
 
void sort(stud *a,int n)
 {
  stud temp,minpole;
  int incr=n/2,j,i;
  while (incr>0)
  {
        for (i=incr; i<n; i++)
        {
            j=i-incr;
            
            while (j>=0)
            if (a[i].sum<a[j+incr].sum) {temp=a[j]; a[j]=a[j+incr]; a[j+incr]=temp; j=j-incr;}
  else j=-1;
}
incr=incr/2;}
}
 
 
int main()
 {
    stud mas[20];
    int group,j=0;
    in>>group;
    while(in.peek()!=EOF)
    {mas[j].init();j++;}
    sort(mas,j);
    out<<group<<endl;
    for(int k=0;k<j;k++)
    mas[k].print();
    in.close();
    out.close();
    return 0;
 }

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2013, 03:31
Ответы с готовыми решениями:

Не сходится теория и практика метод Шелла и метод простого выбора
Здравствуйте! Помогите пожулуйста найти ошибке в коде, Я уже не знаю где ее...

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

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

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

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

2
xtorne21st
интересующийся
304 / 275 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
10.04.2013, 04:13 #2
Ни одного пробела, ни одного отступа: на такой код просто жутко смотреть, не говоря уже о том чтоб что-то с ним сделать. Вы посмотрите по форуму, в книгах как оформляется код. Ошибка была в недостающей или излишней (точно не помню) скобки. + подправил пользовательский тип с заглавной буквы - это ещё один признак хорошего тона.
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
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
 
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
 
struct Stud
{
    string fam, name, otch;
    int year, oz[5], sum;
    void print()
    {
        out <<setw(14) << left << fam << setw(10) << name << setw(15)
            << otch << ' ' << year << ' ' << out << sum << endl;
    }
 
    void init()
    {
        in >> fam >> name >> otch >> year;
        for (int i=0; i<5 ; i++)
        {
            in >> oz[i];
            sum = sum+oz[i];
        }
    }
};
 
void sort(Stud *a,int n)
{
    Stud temp, minpole;
    int incr = n/2, j, i;
    while (incr>0)
    {
        for (i=incr; i<n; i++)
        {
            j = i-incr;
            while (j>=0)
            {
                if (a[i].sum<a[j+incr].sum)
                {
                    temp = a[j];
                    a[j] = a[j+incr];
                    a[j+incr] = temp;
                    j = j-incr;
                }
                else j=-1;
            }
        }
        incr = incr/2;
    }
}
 
int main()
{
    Stud mas[20];
    int group,j=0;
 
    in >> group;
 
    while (in.peek()!=EOF)
    {
        mas[j].init();
        j++;
    }
 
    sort(mas,j);
    out << group << endl;
 
    for(int k=0;k<j;k++)
    {
        mas[k].print();
    }
 
    in.close();
    out.close();
    return 0;
}
1
TheAlpha
6 / 6 / 8
Регистрация: 03.01.2013
Сообщений: 116
10.04.2013, 04:16  [ТС] #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
Ни одного пробела, ни одного отступа: на такой код просто жутко смотреть, не говоря уже о том чтоб что-то с ним сделать. Вы посмотрите по форуму, в книгах как оформляется код. Ошибка была в недостающей или излишней (точно не помню) скобки. + подправил пользовательский тип с заглавной буквы - это ещё один признак хорошего тона.
Спасибо. Я учту Ваши замечания
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2013, 04:16

Метод Шелла
Ошибка после сортировки методом Шелла. По примеру сайта...

Метод Шелла
Помогите пожалуста решить задачу. Провести сортировку последовательности а1, …...

Метод Шелла
Проверить упорядочены ли элементы строк матрицы. Если нет, то упорядочить их в...


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

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

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