Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
silverman564
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 7
#1

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

19.12.2015, 12:34. Просмотров 331. Ответов 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
Миниатюры
Сортировка пузырьком  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2015, 12:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка пузырьком (C++):

Сортировка пузырьком - C++
Всем доброго времени суток! Я новичек в С++.У меня глупая ситуация: недавно написал код сортировки на C++, и сегодня решил...

Сортировка Пузырьком :) - C++
Привет, ребята :) Вообщем, наткнулся на написание программы с использованием сортировки пузырьком. Никогда не использовал :) Часть кода...

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

Сортировка пузырьком - C++
Не удается сделать сортировку пузырьком (то что после //1111), не сортирует, либо ошибки в памяти. // spisok.cpp : Defines the entry...

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

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

6
nmcf
5533 / 4843 / 1641
Регистрация: 14.04.2014
Сообщений: 19,647
19.12.2015, 12:57 #2
Условие в 28-й строке не правильное.

Добавлено через 28 секунд
Алгоритмы сортировок
0
silverman564
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 7
19.12.2015, 16:49  [ТС] #3
nmcf, скопировал алгоритм из темы, что ты дал - то же самое
0
nmcf
5533 / 4843 / 1641
Регистрация: 14.04.2014
Сообщений: 19,647
19.12.2015, 17:21 #4
Актуальный вариант покажи.
0
_Valera_
488 / 370 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
19.12.2015, 18:16 #5
Цитата Сообщение от silverman564 Посмотреть сообщение
if (R[i - 1] > R[i]) {
да кто вас б**ть учит так сортировать!?

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



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

Добавлено через 5 минут
В общем, народ. извиняюсь за то что поднял кипиш. Я учусь на первом курсе и оказывается мы вектора не проходили даже, эта задача решается банальным одномерным массивом. Это уже я начал лезть в дебри Спасибо всем, кто пытался помочь.
0
nmcf
5533 / 4843 / 1641
Регистрация: 14.04.2014
Сообщений: 19,647
19.12.2015, 21:32 #7
При чём здесь вектор? Он ничем от массива не отличается. Если сортировка кривая - она и на массиве будет кривой.
0
19.12.2015, 21:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2015, 21:32
Привет! Вот еще темы с ответами:

Сортировка пузырьком - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #define N 9 ...

Сортировка пузырьком - C++
#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; ...

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

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


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

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

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