0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 20
1

Определить позицию наименьшего числа и наибольшего числа и произвести сортировку

25.08.2015, 21:33. Показов 1487. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив, int ar2[15] = {4,7,2,1,9,12,32,6,5,74,69,11,3,60,17} Необходимо определить позицию наименьшего числа и наибольшего числа и произвести сортировку от позиции наименьшего до позиции наибольшего. Например, в массиве ar2 наименьшее число - 1 индекс(позиция) - 3, а наибольшее 74 индекс - 9. Необходимо сделать сортировку от 3 индекса до 9, остальные числа не сортировать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2015, 21:33
Ответы с готовыми решениями:

Произвести сортировку двоичного представления числа
Здравствуйте, помогите пожалуйста решить такую вот задачку: Дано целое неотрицательное число....

Даны четыре числа. Определить порядковый номер наименьшего из них
Задача: Составление структуры используя if Даны четыре числа. Определить порядковый номер...

В последовательности из N произвольных чисел определить сумму наибольшего и наименьшего элементов
В последовательности из N произвольных чисел определить сумму наибольшего и наименьшего элементов

Определить произведение наибольшего и наименьшего числа, их абсолютное значение
Прошу помощи в написании этих заданий :( Задание 1. Напишите программу, которая считывает пять...

4
4816 / 2276 / 287
Регистрация: 01.03.2013
Сообщений: 5,943
Записей в блоге: 27
26.08.2015, 03:23 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
#include <iostream>
using namespace std;
 
int* mm(int* b, int* e, int* r, int d)
    {return b>e ? r : mm(b+1,e,(d?*b>*r:*b<*r)?b:r,d);}
 
void sort(int* b, int* e)
{
    if (b>=e) return;
    int* p = mm(b,e,b,0);
    if (*p<*b) {int t=*b; *b=*p; *p=t;}
    sort(b+1,e);
}
void task(int* b, int* e)
    {int *f = mm(b,e,b,0), *t = mm(b,e,b,1); if (f<t) sort(f,t);}
 
void show(int* b, int* e)
    {cout<<*b<<" "; if (b<e) show(b+1,e); else cout<<endl;}
 
#define ELEMENTS_COUNT 15
 
int main() {
    int a[ELEMENTS_COUNT] = {4,7,2,1,9,12,32,6,5,74,69,11,3,60,17};
    int* e = a + ELEMENTS_COUNT - 1;
    show(a,e);
    task(a,e);
    show(a,e);
    return 0;
}
https://ideone.com/QlaQzd
0
Нарушитель
1168 / 855 / 251
Регистрация: 30.06.2015
Сообщений: 4,457
Записей в блоге: 50
26.08.2015, 16:44 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

_Ivana, это-ж C, а не C++...
Цитата Сообщение от arty7731 Посмотреть сообщение
Дан массив,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main(void){
  int i,j,k,imax=0,imin=0,min,max,x;
    int ar2[15] = {4,7,2,1,9,12,32,6,5,74,69,11,3,60,17};
    min=ar2[0]; max=ar2[0];
    for(i=0;i<15;i++){
      if(ar2[i]<min){imin=i;min=ar2[i];}
        if(ar2[i]>max){imax=i;max=ar2[i];}
                     }
    for(i=imin+1;i<imax-2;i++){
       k=i; x=ar2[i];
      for(j=i+1;j<imax;j++){
         if(ar2[j]<x){x=ar2[j]; k=j;}
                           }
        ar2[k]=ar2[i]; ar2[i]=x;
                              }
    for(i=0;i<15;i++){printf("%d ",ar2[i]);}
    return(0);
 }
0
4816 / 2276 / 287
Регистрация: 01.03.2013
Сообщений: 5,943
Записей в блоге: 27
26.08.2015, 21:24 4
CoderHuligan, у меня ничего плюсового кроме цаутов нет, да и те необязательны.
0
9 / 9 / 8
Регистрация: 03.07.2015
Сообщений: 219
27.08.2015, 00:54 5
arty7731, вот еще такой вариант, может быть и длинный, но зато работает:
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
#include<stdio.h>
 
int main(void){
    int ar2[15]  = {5, 7, 85, 4, 99, 12, 32, 6, 5, 69, 1, 11, 3, 60, 17};
    int i,k,l;
    int *p = ar2;
    int *s = &ar2[0]; 
    int max = *s, min = *s;
    for(i=0;i<15;i++){
        if(*s<*p && max<*p){
            max=*p;
            }
        if(*s>*p && min>*p){
            min=*p;
            }
    p++;
    }
    printf("max is %d\n",max);
    printf("min is %d\n",min);
    p=ar2;
    i=0;
    while(*p != min){
        p++;
        i++;
    }
    printf("min position is %d\n", i);
    int j=0;
    while(*s != max){
        s++;
        j++;
    }
    printf("max position is %d\n", j);
printf("\n");
int t;
for(t=0;t<15;t++){
    printf("{%d-}",ar2[t]);
}
 
int help;
if(i<j){
    for(l=i; l<j; l++){
        for(k=i; k<j; k++){
            if(ar2[k]>ar2[k+1]){
                help = ar2[k+1];
                ar2[k+1] = ar2[k];
                ar2[k] = help;
            }
        }
    }
}else{
    for(l=j; l<i; l++){
        for(k=j; k<i; k++){
            if(ar2[k]>ar2[k+1]){
                help = ar2[k+1];
                ar2[k+1] = ar2[k];
                ar2[k] = help;
            }
        }
    }
}
printf("\n");
for(t=0;t<15;t++){
    printf("{%d-}",ar2[t]);
}
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2015, 00:54
Помогаю со студенческими работами здесь

Вводятся три числа A, B, C. Выведите все целые числа от наименьшего из них до наибольшего
Вводятся три числа A, B, C. Выведите все целые числа от наименьшего из них до наибольшего. Сделать...

Выбор наименьшего и наибольшего числа
Создан командный файл следующего содержания: @echo off setlocal enabledelayedexpansion set /P...

Поиск наибольшего и наименьшего числа
Всем привет! Нужно найти максимально и минимальное числа из ниже приведенных переменных dim e1,...

Процедура нахождения наибольшего и наименьшего числа
Привет всем ) столкнулся с очердной проблемой а точнее с процедурой и функцией . Кому не сложо...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru