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

сортировка пузырьком

08.12.2016, 19:26. Показов 723. Ответов 1

Студворк — интернет-сервис помощи студентам
Вечер добрый!
Задача проста: отсортировать сначала по зп, если < 400, то в 1ый список, а если больше, то во второй, отсортировав по убыванию среднего балла.
Помогите разобраться почему после сортировки выводит только отсортированное по одному столбцу, а не всю строку соответствующую человеку.
Т.е. Tako соответствует оценка 2, а не 7, как из исходника.
входные:

|Ф|И|O|группа|ср.балл|зп|
Ivanov Ivan Ivanovich 555333 5 200
Petrov Petr Petrovich 555332 3 2005
Aleekseev Aleksey Alekseeivich 555331 1 2004
Sergeev Sergey Sergeevich 555330 5 209
Green Aleekseev Sergeevich 555332 4 145
Red Alekseeivich Ivanov 555333 2 345
Tako Mister Twister 555332 7 700
Gamer Drako Andreevich 555330 10 10


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
#include "stdafx.h"
#include <iostream> 
#include <fstream> 
#include <string>  
#include <cstring>
#include <windows.h>
using namespace std; 
 
struct STUDENT 
{ 
    string name; 
    string surname; 
    string otch;
    string group; 
    int avmark;
    int salary; 
};  
 
 
 
int main() 
{   
    setlocale( LC_ALL,"Russian" );
    const int size=4;  
    STUDENT wok[size];   
    int N=400, buf; 
    int flag = 0;    
 
    int n = 0; 
 //   int  j;
    ifstream infile; 
    infile.open("Text.txt"); 
 
    while(!infile.eof())   
    { 
        infile >> wok[n].surname >> wok[n].name >> wok[n].otch >> wok[n].group >> wok[n].avmark >> wok[n].salary; 
        n++; 
    } 
 
       for (int i = 0; i < size; i++) 
        { 
        cout << wok[i].surname << " " << wok[i].name << " " << wok[i].otch <<endl; 
        cout << wok[i].group <<" "<< wok[i].avmark <<" "<< wok[i].salary << endl; 
        }  
 
        cout << endl << endl;  
        cout << "Прожиточный минимум " <<N<<endl; 
     //   cin >> N; 
 
        for (int i = 0; i < size; i++) {
            if(wok[i].salary <= N) 
            { 
                cout << wok[i].surname << " "<< wok[i].name << " "<< wok[i].otch << " " 
                     << wok[i].group <<" "<< wok[i].avmark <<" "<< wok[i].salary  << endl; 
                flag++;
            }
        }
 
            if(flag == 0)  
                cout << " --- " << endl; 
 
        cout<<endl<<endl;
 
    for (int j=0; j<=size; j++){
        for (int i = 0; i < size-1; i++){
            if(wok[i].avmark <= wok[i+1].avmark){
                buf=wok[i].avmark;
                wok[i].avmark=wok[i+1].avmark;
                wok[i+1].avmark=buf;
            }
        }
    }
    
        for(int i=0; i<size; i++)
            if(wok[i].salary > N)
            cout << wok[i].surname << " "<< wok[i].name << " "<< wok[i].otch << " " 
                     << wok[i].group <<" "<< wok[i].avmark <<" "<< wok[i].salary  << endl; 
            return 0;
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2016, 19:26
Ответы с готовыми решениями:

Сортировка Пузырьком
Здравствуйте! Пытался выполнить задание: Сортировка Пузырьком - один из простейших способов осуществления такого упорядочивания. Мы...

Сортировка пузырьком
Задача: При диспансеризации школьников определялись их рост и вес. В результате были получены массивы значений роста R(n) и веса W(n)....

Сортировка пузырьком
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #define M 10 void main() { int i,j,n,k; int m; ...

1
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
08.12.2016, 19:49
C++
1
2
3
4
5
6
7
8
9
for (int j=0; j<=size; j++){
        for (int i = 0; i < size-1; i++){
            if(wok[i].avmark <= wok[i+1].avmark){
                buf=wok[i].avmark;
                wok[i].avmark=wok[i+1].avmark;
                wok[i+1].avmark=buf;
            }
        }
    }
Я бы советовал тут сделать так:

C++
1
2
3
4
5
6
7
8
9
for (int j=0; j<size - 1; j++){
        for (int i = j + 1; i < size; i++){
            if(wok[i].avmark <= wok[i+1].avmark){
                buf=wok[i].avmark;
                wok[i].avmark=wok[i+1].avmark;
                wok[i+1].avmark=buf;
            }
        }
    }
Добавлено через 1 минуту
И тут вы сортируете только поля, а не сами элементы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2016, 19:49
Помогаю со студенческими работами здесь

сортировка пузырьком
Почему у меня при сортировке пузырьком значения некоторых чисел меняются на другие. double **Ex = new double *; for (int i = 0; i...

Сортировка пузырьком
Здравствуйте! Решаю задачу:пользователь вводит слова через пробел,я должен вывести их в алфавитном порядке.Моя проблема в сортировке.Что...

сортировка пузырьком
#include &lt;iostream&gt; using namespace std; void main() { const n=4; int a,i,j,buffer; for(i=0;i&lt;n;i++) cin&gt;&gt;a; for (i=0;...

сортировка пузырьком
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main(int argc, char *argv) { ...

Сортировка пузырьком
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;ctime&gt; using namespace std; void Sort(int *, int); const int n = 8; int ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru