Форум программистов, компьютерный форум CyberForum.ru

Получить из исходного массив положительных чисел и отсортировать его по возрастанию методом пузырька - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка () http://www.cyberforum.ru/cpp-beginners/thread892821.html
Здарвствуйте, помогите с задачей: Имеется класс, создающий двумерный массив, в этом классе нужно реальзовать метод перегружающий () для того, что бы можно было доставать элемент из массива по его индексу #ifndef _MATRIX_H_ #define _MATRIX_H_ #include <iostream> #include<Windows.h> #include<time.h> using namespace std;
C++ Двумерный массив с сортировкой методом выбора Дан массив из N целых чисел. Получить из него массив чисел больших 15 и отсортировать его по возрастанию методом выбора (ошибочка, массив одномерный) http://www.cyberforum.ru/cpp-beginners/thread892817.html
Одномерный массив. Найти наибольший элемент массива и поменять его местами с наименьшим элементом C++
Дан массив из N чисел. Найти наибольший элемент массива и поменять его местами с наименьшим элементом.
C++ Опишите структуру worker
Опишите структуру worker (фамилия и инициалы работника, должность, год поступления ни работу, отдел, зарплата). Введите с клавиатуры данные в мас- сив, состоящий из пяти элементов типа worker. Выведите на экран информацию о работниках зарплата, у которых не ниже введенного с клавиатуры числа. Если такого работника нет, то программа должна выдать соответствующее сообщение на экран. Помогите...
C++ Если в среднем каждые 2 года увеличивать урожайность на 5% , то через сколько лет она превысит К центнеров с гектара (МАССИВ!) http://www.cyberforum.ru/cpp-beginners/thread892811.html
В этом году урожай пшеницы составил Р центнер с гектара. Если в среднем каждые 2 года увеличивать урожайность на 5% , то через сколько лет она превысит К центнеров с гектара
C++ Удаление из массива Ребят помогите с задачкой. Удалить из массива элемент, расположенный перед первым элементом с максимальным значением и элемент после первого элемента с минимальным значением. Если удаление элементов невозможно, выдать об этом сообщение. Прошу решите эту задачку. Только не очень мудрёно я на 1 курсе))) Зарание спасибо. подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
06.06.2013, 00:40     Получить из исходного массив положительных чисел и отсортировать его по возрастанию методом пузырька
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
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
/* Сформировать массив A. Из отрицательных элементов массива А сформировать
массив Р. Из положительных элементов массива А сформировать массив N. Вывести
все массивы на экран. Для каждого массива найти max и min элементы.
Использовать функции. */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 20
 
void generate(int *, const size_t);
void print(const int *, const size_t);
size_t countPos(const int *, const size_t);
void sortOut(const int *, const size_t, int *, int *);
int min(const int *, const size_t);
int max(const int *, const size_t);
 
 
int main(void)
{
    int A[SIZE], *P, *N, sizeP, sizeN;
    srand(time(NULL));
    
    generate(A, SIZE);
    sizeP = countPos(A, SIZE);
    sizeN = SIZE - sizeP;
    P = malloc(sizeof(int) * sizeP);
    N = malloc(sizeof(int) * sizeN);
    
    sortOut(A, SIZE, P, N);
    
    printf("A: ");
    print(A, SIZE);
    printf("Min: %d\nMax: %d\n", min(A, SIZE), max(A, SIZE));
    
    printf("\nP: ");
    print(P, sizeP);
    printf("Min: %d\nMax: %d\n", min(P, sizeP), max(P, sizeP));
    
    printf("\nN: ");
    print(N, sizeN);
    printf("Min: %d\nMax: %d\n", min(N, sizeN), max(N, sizeN));
    
    free(P);
    free(N);
    
    return 0;
}
 
void generate(int *arr, const size_t size)
{
    size_t i;
    for (i=0; i < size; i++)
        arr[i] = -100 + rand() % 201;
}
 
void print(const int *arr, const size_t size)
{
    size_t i;
    for (i=0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}
 
size_t countPos(const int *arr, const size_t size)
{
    size_t i, counter = 0;
    for (i=0; i < size; i++)
        if (arr[i] >= 0)
            ++counter;
    
    return counter;
}
 
void sortOut(const int *arr1, const size_t size1, int *arr2, int *arr3)
{
    size_t i, indexP = 0, indexN = 0;
    for (i=0; i < size1; i++)
        arr1[i] >= 0 ? (arr2[indexP++] = arr1[i]) : (arr3[indexN++] = arr1[i]);
}
 
int min(const int *arr, const size_t size)
{
    size_t i;
    int min = arr[0];
    for (i=1; i < size; i++)
        if (arr[i] < min)
            min = arr[i];
    
    return min;
}
 
int max(const int *arr, const size_t size)
{
    size_t i;
    int max = arr[0];
    for (i=1; i < size; i++)
        if (arr[i] > max)
            max = arr[i];
    
    return max;
}
Добавлено через 13 секунд
Переделать сами сможете, я думаю.

Добавлено через 1 минуту
Или я выдам решение через вектора, ГСЧ и алгоритмы из STL
 
Текущее время: 10:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru