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

C для начинающих

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

Функция сортировки одномерного массива - C (СИ)

21.10.2014, 16:46. Просмотров 352. Ответов 1
Метки нет (Все метки)

Здравствуйте. Помогите пожалуйста переделать функцию сортировки массива (в коде func2 - сделана сортировка элементов массива по возрастанию) с помощью указателей. Нужно нечётные элементы поставить в начало списка, а чётные - в конец списка. Спасибо.

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 
int func1();
int func2();
int Mas[20];
int main(int argc, char *argv[])
 {
    int El;
    srand(time(0));
    if ((argc>1)&&(!strcmp(argv[1],"-rand"))){
        for (El=0; El<20; El++){
        Mas[El]=rand()%100-50;
        printf("%d\n",Mas[El]);
            }}
     else{
    
    printf("vvedite znachenie elementa massiva\n");
    for (El=0; El<20; ++El){
     printf ("%d)" ,El);
     scanf("%d",&Mas[El]);}
     
    // printf ("%d)" ,El);} 
 
}
func1();
func2();
return 0 ;}
    
int func1()
{   
int k,El,max,s,l,f;
max=Mas[0];
k=0;
for (El=0; El<20; El++)
if (max<Mas[El])
{max=Mas[El];
k=El;
}
printf("\nmaks nomer elementa=%d",k); 
 
s=1;
f=-1;
l=-1;
for (El=0; El<20; El++)
 
    if (Mas[El]==0)
        {
        l=El;
        break;
        }
    if (l==-1) 
    
    
        printf("\nnet nulej\n"); 
    
for(El=l+1; El<20; El++)
    if (Mas[El]==0)
    {
        f=El;
        break;
    }
        
    for (El=l+1; El<f; El++)
    
        
        
        s=s*Mas[El];
        
    printf("\nproizvedenie=%d",s); 
//printf("\n%d",Elf);
return;}
 
int func2()
{
int num,i,j;    
num=20;
     for( i= 0 ; i < num ; i++) { 
      
       for(j = 0 ; j < num - i - 1 ; j++) {  
           if(*(Mas+j) > *(Mas+j+1)) {           
              
              int tmp = *(Mas+j);
     *(Mas+j) = *(Mas+j+1); 
     *(Mas+j+1) = tmp; 
           }
        }
    }
    for (i=0; i<num; i++){
    printf("\n>%d",*(Mas+i));   }
    
    
return;}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2014, 16:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция сортировки одномерного массива (C (СИ)):

Реализовать четыре различных алгоритма сортировки одномерного целочисленного массива - C (СИ)
Добрый день. Разработать программу на языке «Си», реализующую четыре различных алгоритма сортировки одномерного целочисленного массива. ...

Рекурсивная функция нахождения максимального положительного элемента одномерного массива - C (СИ)
Помогите с решением задачи. Код приведен ниже, но в результате выходит непонятно что Не могу сам разобраться:wall: /* Описать...

Рекурсивная функция сортировки - C (СИ)
Сортировка выбором анализирует массив, отыскивая наименьший элемент массива.Затем этот самый элемент обменивается местами с первым...

Функция сортировки различных элементов С/С++ - C (СИ)
Нужна помощь в реализации функции сортировки по различным полям структуры, в функцию сортировки должен передаваться указатель на функцию...

Код выдает предупреждение (функция сортировки) - C (СИ)
Здравствуйте! Уважаемые программисты я еще только учусь писать на языке программирования Си. Я много раз пытался задать тут вопрос, но...

Функция поиска максимального и минимального эл. одномерного масива - C (СИ)
Ребят помогите написать программу УСЛОВИЕ:Написать функцию поиска максимального и минимального элементов одномерного массива. В основной...

1
anmartex
...
1708 / 1201 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
22.10.2014, 05:24 #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
30
31
32
33
34
35
36
37
// ...
 
void write(const int* array, size_t size) {
    while (size--) {
        printf("%d ", *array++);
    }
    printf("\n");
}
 
void swap(int* a, int* b) {
    int tmp = *a;
    *a = *b;
    *b = tmp;
}
 
int* rated(int* array, size_t size) {
    int* left = array;
    int* right = array + size - 1;
 
    while (left < right) {
        for (; (left < right) && (*left & 1); ++left) { ; }
        for (; (left < right) && !(*right & 1); --right) { ; }
        if (left < right) {
            swap(left, right);
        }
    }
 
    return array;
}
 
int main() {
    // ...
 
    write(rated(M, 20), 20);
 
    return 0;
}
Кликните здесь для просмотра всего текста
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
 
int random() {
    return rand() % 100 - 50;
}
 
int stdinput() {
    int value;
    return (scanf("%d", &value) == 1) ? value : 0;
}
 
void fill(int* array, size_t size, int (*func)()) {
    while (size--) {
        *array++ = func();
    }
}
 
void write(const int* array, size_t size) {
    while (size--) {
        printf("%d ", *array++);
    }
    printf("\n");
}
 
void swap(int* a, int* b) {
    int tmp = *a;
    *a = *b;
    *b = tmp;
}
 
int* rated(int* array, size_t size) {
    int* left = array;
    int* right = array + size - 1;
 
    while (left < right) {
        for (; (left < right) && (*left & 1); ++left) { ; }
        for (; (left < right) && !(*right & 1); --right) { ; }
        if (left < right) {
            swap(left, right);
        }
    }
 
    return array;
}
 
#define N 20
 
int main(int argc, char* argv[]) {
    int array[N];
    int (*func)() = random;
 
    srand(time(NULL));
 
    if ((1 < argc) && (strcmp(argv[1], "-stdin") == 0)) {
        func = stdinput;
    }
    fill(array, N, func);
 
    write(array, N);
 
    write(rated(array, N), N);
 
    return 0 ;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2014, 05:24
Привет! Вот еще темы с ответами:

Функция поиска максимального и минимального элементов одномерного массив - C (СИ)
Ребят помогите написать программу УСЛОВИЕ:Написать функцию поиска максимального и минимального элементов одномерного массива. В основной...

Переделать код для сортировки массива на код для сортировки двумерной матрицы - C (СИ)
возникла проблема, не могу переделать код для сортировки массива на код для сортировки двумерной матрицы. вот исходный код void...

Функция: подсчет количества сравнений чисел, выполняемых при операциях сортировки/поиска - C (СИ)
Подсчет количества сравнений чисел, выполняемых при операциях сортировки, многократного линейного и многократного бинарного поиска.Помогите...

Реверс одномерного массива - C (СИ)
задача в следующем: Описать функцию Invert( ), меняющую порядок следования элементов массива A из N вещественных чисел на противоположный....


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

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

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