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

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

19.12.2015, 12:34. Показов 1771. Ответов 6
Метки нет (Все метки)

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

Решил начать с сортировки, в порядке возрастания, но когда начинается выполнение алгоритма сортировки выдает ошибку. Я так понял что выхожу за пределы массива но не могу понять каким образом. Помогите найти ошибку.
Код:
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
#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    int n, i;
    setlocale(0, "");
    cout << "Введите количество студентов ";
    cin >> n;
    vector<int>nums(n);
    vector<float>R(n);
    vector<float>W(n);
    // Ввод данных
    for (i = 0; i < n; i++) {
        nums[i] = i + 1;
        cout << "Образец №" << nums[i] << ":" << endl
            << "Рост: ";
        cin >> R[i];
        cout << "Вес: ";
        cin >> W[i];
    }
    // Сортировка по росту
    cout << "Образцы отсортированы по росту (в порядке возрастания):" << endl;
    int t, y, z;
    for (y = 1; y < n; y++)
        for (i = y; i >= n - 1; i++)
            if (R[i - 1] > R[i]) {
                t = R[i]; // Сортировка показателей роста
                R[i] = R[i-1];
                R[i-1] = t;
                z = nums[i]; // С ними сортируются и номера образцов
                nums[i] = nums[i-1];
                nums[i-1] = z;
                cout << "Образец №" << nums[i-1] << ':' << endl
                    << "Рост: " << R[i-1] << endl;
            }
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Сортировка пузырьком  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2015, 12:34
Ответы с готовыми решениями:

Сортировка пузырьком
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() { const int n =...

Сортировка пузырьком.
Приветствую, тех кто заглянул в топик. Помогите, пожалуйста, решить задачу на C пузырьковой...

Сортировка пузырьком
Здравствуйте. Подскажите пожалуйста, написал простой код который должен отсортировать список...

сортировка пузырьком
Почему у меня при сортировке пузырьком значения некоторых чисел меняются на другие. double...

6
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
19.12.2015, 12:57 2
Условие в 28-й строке не правильное.

Добавлено через 28 секунд
Алгоритмы сортировок
0
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 7
19.12.2015, 16:49  [ТС] 3
nmcf, скопировал алгоритм из темы, что ты дал - то же самое
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
19.12.2015, 17:21 4
Актуальный вариант покажи.
0
493 / 375 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
19.12.2015, 18:16 5
Цитата Сообщение от silverman564 Посмотреть сообщение
if (R[i - 1] > R[i]) {
да кто вас б**ть учит так сортировать!?

вот так выглядит нормальная сортировка:
http://itblogs.org/sortirovka-... bble-sort/



Цитата Сообщение от silverman564 Посмотреть сообщение
for (i = y; i >= n - 1; i++)
этот цикл не выполнится. А под конец упадет.
0
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 7
19.12.2015, 21:09  [ТС] 6
Цитата Сообщение от _Valera_ Посмотреть сообщение
да кто вас б**ть учит так сортировать!?
_Valera_, держите себя в руках. Я новичок и многого еще не понимаю. За ответ спасибо.

Добавлено через 5 минут
В общем, народ. извиняюсь за то что поднял кипиш. Я учусь на первом курсе и оказывается мы вектора не проходили даже, эта задача решается банальным одномерным массивом. Это уже я начал лезть в дебри Спасибо всем, кто пытался помочь.
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
19.12.2015, 21:32 7
При чём здесь вектор? Он ничем от массива не отличается. Если сортировка кривая - она и на массиве будет кривой.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2015, 21:32

Сортировка пузырьком
Подскажите как мне показать(вывести) пары чисел расположенные наиболее рядом? #include...

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

Сортировка пузырьком
вот написала программу но не работает :( #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;ctime&gt;...

Сортировка пузырьком
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...


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

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

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