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

Нужно отсортировать массив от *start до *finish

15.10.2012, 15:47. Показов 917. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно отсортировать массив от *start до *finish
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template<class elm>
void sorting(elm *st,elm *fn)
{
 
    for(;st!=fn;st++)
    {
        for(elm *next=st;next!=fn;next++)
        {
            if((*next)<(*st))
            {
                swaping((*next),(*st));
            }
        }
    }
}
C++
1
2
3
4
5
6
7
template<class elm>
void swaping(elm &i,elm &j)
{
    elm tmp=i;
    i=j;
    j=tmp;
}
вылетает после первого круга, теряеться значение *fn не знаю по чему
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2012, 15:47
Ответы с готовыми решениями:

нужно отсортировать массив
1. Оценки студентов. Записать из файла в двумерный массив информацию об оценках каждого из N студентов группы по тому или иному предмету...

нужно отсортировать массив
Сформировать массив B(k) из элементов нечетных столбцов массива A(m,n). Отсортировать массив по возрастанию. Добавлено через 39 секунд...

Нужно, импортировать из файла в массив 16 значений, таких файлов много, вот нужно импортировать и отсортировать по возрастанию
что то у меня не получаеться Program abli; var a: file of integer; i: byte; mas: array of integer; b:array of integer; ...

4
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
15.10.2012, 16:33
Если код не большой, то приведите его тут. (хотя бы некий минимум для компиляции)
невозможно угадать откуда берутся значения elm *st,elm *fn. Может это просто два разных указателя, а не указатели со смещением.
0
 Аватар для maxon887
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
16.10.2012, 12:31  [ТС]
Моя функция sorting() это породия на sort() из <algorthm> библиотеки обобщённых олгаритмов.Она должна работать и с STL и с "Array"
Array.h - самодельный контейнер
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#ifndef ARRAY_H
#define ARRAY_H
#include <iostream>
using namespace std;
 
//определение
 
template<class type>
class Array
{
public:
    Array(int sz=0){ init(0,sz); }
    Array(type *a,int sz){ init(a,sz); }
    Array(Array *a){ init(a,a->Size()); }
    int Size(){ return size; }
    ~Array(){ delete[] arr; }
    void display();
    type& operator[](int i){return arr[i];}
    bool operator ==(Array &a);
    bool operator !=(Array &a);
    Array* operator =(Array *a){return a;}
    type find(type val);
    void push(type v);
    void pup(){ size--; }
    type* begin(){ return &arr[0];}
    type* end(){ return &arr[size];}
protected:
    void init(type *a,int sz);
    int size;
    type *arr;
};
 
//реализация
 
template<class type>
void Array<type>::display()
{
    cout<<"This-"<<(this)<<" cout="<<size<<" size="<<sizeof(type)*size<<"bytes"<<endl;
    for(int i=0;i<size;i++)
    {
        cout<<arr[i]<<" ";
    }
    cout<<endl;
}
template<class type>
bool Array<type>::operator ==(Array &a)
{
    if(a.Size()!=this->size)
        return false;
    else
    {
        for(int i=0;i<this->size;i++)
        {
            if(a.arr[i]!=this->arr[i])
                return false;
        }
        return true;
    }
}
template<class type>
bool Array<type>::operator !=(Array &a)
{
    if(a.Size()!=this->size)
        return true;
    else
    {
        for(int i=0;i<this->size;i++)
        {
            if(a.arr[i]!=this->arr[i])
                return true;
        }
        return false;
    }
}
template<class type>
void Array<type>::push(type v)
{
    type temp[size];
    for(int i=0;i<size;i++)
    {
        temp[i]=arr[i];
    }
    size++;
    arr=new type[size];
    for(int i=0;i<size-1;i++)
    {
        arr[i]=temp[i];
    }
    arr[size-1]=v;
}
template<class type>
void Array<type>::init(type *a, int sz)
{
    size=sz;
    arr=new type[size];
    for(int i=0;i<size;i++)
    {
        if(!a)
        {
            arr[i]=type();
        }
        else
        {
            arr[i]=a[i];
        }
    }
}
 
#endif // ARRAY_H
algorithms.h - обощённые алгоритмы которые должны работать как с классом "Array" так и с STL.
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
#ifndef ALGORITHMS_H
#define ALGORITHMS_H
#include "Array.h"
template<class elm>
void swaping(elm &i,elm &j)
{
    elm tmp=i;
    i=j;
    j=tmp;
}
template<class elm>
void sorting(elm *st,elm *fn)
{
  //  elm *fin=fn;
    while(st!=fn)
    {
        for(elm *next=st;next!=fn;next++)
        {
            if((*next)<(*st))
            {
                swaping((*next),(*st));
            }
        }
        st++;
    }
}
 
#endif // ALGORITHMS_H
main.cxx
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <QtCore/QCoreApplication>
#include <vector>
#include <algorithm>
#include <iostream>
#include "Array.h"
#include "Algorithms.h"
using namespace std;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    int myints[] = {32,71,12,45,26,80,53,33};
    Array<int> arr(myints,8);
    arr.display();
    sort(arr.begin(),arr.end()); //пример вызова функции
    arr.display();
 
    return a.exec();
}
p.s. надеюсь всё понятно
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
16.10.2012, 13:28
Вроде все ок
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
template<class elm>
void swaping(elm &i,elm &j)
{
    elm tmp=i;
    i=j;
    j=tmp;
}
 
template<class elm>
void sorting(elm *st,elm *fn)
{
 
    for(;st!=fn;st++)
    {
        for(elm *next=st;next!=fn;next++)
        {
            if((*next)<(*st))
            {
                swaping((*next),(*st));
            }
        }
    }
}
 
int main()
{
   int array[10];
   for(int i = 0;i < 10; ++i)
   {
      array[i] = rand()%100;
      std::cout << array[i] << " ";
   } 
   std::cout << std::endl;
 
   sorting(array, array+10);
   for(int i = 0;i < 10; ++i)
      std::cout << array[i] << " ";
   std::cout << std::endl;
}


Добавлено через 9 минут
Более того, даже с использованием вашего класса Array все тоже сортируется нормально
1
 Аватар для maxon887
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
16.10.2012, 15:01  [ТС]
в натуре)))) я базарю вчера ещё не работало))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2012, 15:01
Помогаю со студенческими работами здесь

Массив, который нужно отсортировать по возрастанию
Здравствуйте, помогите пожалуйста новичку, кому не сложно. Буду очень благодарен :) Нужно отсортировать массив по возрастанию или по...

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

Нужно отсортировать массив в порядке возрастания
помогите пожалуйста....не могу разобраться как отсортировать все значения которые мы вводим #include &lt;stdio.h&gt; /*#include...

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

Нужно отсортировать массив в порядке убывания длин векторов С++
Данный массив А - массив векторов. Отсортировать его в порядке убывания длин векторов. Разработать класс, объект которого реализует ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru