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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.96
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
#1

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

11.01.2013, 22:05. Просмотров 3637. Ответов 36
Метки нет (Все метки)

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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    const int n = 10;
    double arr[n], max;
 
    cout << "Введите " << n << " чисел:" << endl;
    for (int i=0; i<n; i++)
        cin >> arr[i];
    
    max = arr[0];
    for (int i=1; i<n; i++)
        if (abs(arr[i]) > abs(max))
            max = arr[i];
 
 
    cout << "Максимальный по модулю равен " << max << endl;
 
    system("pause");
    return 0;               
}
программа ищит максимальный по модулю элемент. как в нее добавить еще чтоб она могла :Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных
в общем задача звучит так:В одномерном массиве, состоящем из n вещественных элементов, вычислить максималь-ный по модулю элемент массива. Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2013, 22:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных (C++):

Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных - C++
Напишите пожалуста программку, метод сортировки ваще не понимаю. Преобразовать массив таким образом, чтобы элементы, равные нулю,...

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

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

Превратить массив таким образом, чтобы все элементы, равные нулю и единице, располагались после всех остальных - C++
Сделайте задачу с с помощью массива: Превратить массив таким образом, чтобы все элементы, равные нулю и единице, располагались...

Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались перед всеми остальными - C++
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались перед всеми остальными. Помогите написать программу вообще...

Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int main() { int...

36
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
11.01.2013, 23:33 #16
ZubSam мы его передвинули на позицию вперёд.

Добавлено через 48 секунд
илья1995 не много подождите, сейчас мы закончим с tlittle обсуждение.

Добавлено через 26 секунд
tlittle сейчас проверю по скорости, как работают алгоритмы.
0
ZubSam
13 / 13 / 1
Регистрация: 24.03.2012
Сообщений: 238
11.01.2013, 23:33 #17
Цитата Сообщение от David Sylva Посмотреть сообщение
мы его передвинули на позицию вперёд.
то есть он автоматический сдвигается на одну позицию вперед?
0
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
11.01.2013, 23:35 #18
Цитата Сообщение от ZubSam Посмотреть сообщение
то есть он автоматический сдвигается на одну позицию вперед?
Мы его подвинули в цикле.
0
tlittle
347 / 118 / 1
Регистрация: 08.01.2013
Сообщений: 727
Завершенные тесты: 1
11.01.2013, 23:36 #19
Цитата Сообщение от David Sylva Посмотреть сообщение
ZubSam мы его передвинули на позицию вперёд.

Добавлено через 48 секунд
илья1995 не много подождите, сейчас мы закончим с tlittle обсуждение.

Добавлено через 26 секунд
tlittle сейчас проверю по скорости, как работают алгоритмы.
Да а что тут проверять. Создай массив на 1000 элементов. Нечетные элементы = 0. Четные равны 1. Твой алгоритм выполнит 500000 присвоений. Мой 1500

ЗЫ. А не. Мой 1000. Сколько твой чо-то боюсь ошибиться, но порядок такой.
1
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
11.01.2013, 23:41 #20
Цитата Сообщение от tlittle Посмотреть сообщение
Да а что тут проверять. Создай массив на 1000 элементов. Нечетные элементы = 0. Четные равны 1. Твой алгоритм выполнит 500000 присвоений. Мой 1500
ЗЫ. А не. Мой 1000. Сколько твой чо-то боюсь ошибиться, но порядок такой.

Не по теме:

Да ты прав, я просто твой код, толком не посмотрел.
Был не прав, извиняюсь.

0
ZubSam
13 / 13 / 1
Регистрация: 24.03.2012
Сообщений: 238
11.01.2013, 23:42 #21
Цитата Сообщение от David Sylva Посмотреть сообщение
Мы его подвинули в цикле.
думаю можно продолжать)
я дико извиняюсь, но просто не пойму, в каком именно месте мы его сдвигаем ?
C++
1
2
3
for ( j = i; j < size - 1; ++j) 
                array[j] = array[j+1]; //для элемента со значением 0 , присваиваем впереди стоящий 
            array[size - 1] = 0;// и к последнему элементу массива который хранит в себе 8 присваиваем 0
0
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
11.01.2013, 23:43 #22
илья1995 Какой у тебя код в итоге получился покажи?
0
tlittle
347 / 118 / 1
Регистрация: 08.01.2013
Сообщений: 727
Завершенные тесты: 1
11.01.2013, 23:44 #23
Цитата Сообщение от ZubSam Посмотреть сообщение
думаю можно продолжать)
я дико извиняюсь, но просто не пойму, в каком именно месте мы его сдвигаем ?
C++
1
2
3
for ( j = i; j < size - 1; ++j) 
                array[j] = array[j+1]; //для элемента со значением 0 , присваиваем впереди стоящий 
            array[size - 1] = 0;// и к последнему элементу массива который хранит в себе 8 присваиваем 0
Ну как же во второй строке приведенного тобой фрагмента. Последняя итерация цикла передвинет последний элемент массива на позицию назад [size-1]. Дальше строкой 3 ты обнуляешь позицию [size].
1
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
11.01.2013, 23:50 #24
Цитата Сообщение от tlittle Посмотреть сообщение
Ну как же во второй строке приведенного тобой фрагмента. Последняя итерация цикла передвинет последний элемент массива на позицию назад [size-1]. Дальше строкой 3 ты обнуляешь позицию [size].
Передвинет на [size-1-1].Дальше обнуляешь, позицию [size-1], позиции size нету.
1
ZubSam
13 / 13 / 1
Регистрация: 24.03.2012
Сообщений: 238
11.01.2013, 23:53 #25
Цитата Сообщение от tlittle Посмотреть сообщение
Ну как же во второй строке приведенного тобой фрагмента. Последняя итерация цикла передвинет последний элемент массива на позицию назад [size-1]. Дальше строкой 3 ты обнуляешь позицию [size].
все наконец то понял) и когда понял , то осознал что это как то очень очевидным было ))
0
tlittle
347 / 118 / 1
Регистрация: 08.01.2013
Сообщений: 727
Завершенные тесты: 1
11.01.2013, 23:56 #26
Цитата Сообщение от David Sylva Посмотреть сообщение
Передвинет на [size-1-1].Дальше обнуляешь, позицию [size-1], позиции size нету.
Да, прошу прощения, мне в последнее время частенько приходится использовать нумерацию массивов с 1
0
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
12.01.2013, 00:02  [ТС] #27
Цитата Сообщение от David Sylva Посмотреть сообщение
илья1995 Какой у тебя код в итоге получился покажи?
вот такой
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    const int n = 10;
    double arr[n], max;
 
    cout << "Введите " << n << " чисел:" << endl;
    for (int i=0; i<n; i++)
        cin >> arr[i];
    
    max = arr[0];
    for (int i=1; i<n; i++)
        if (abs(arr[i]) > abs(max))
            max = arr[i];
 
 
    cout << "Максимальный по модулю равен " << max << endl;
    int i, j; 
 
    for ( i = 0; i < n; ++i) 
        if(arr[i] == 0) 
        { 
            for ( j = i; j < n - 1; ++j) 
                arr[j] = arr[j+1]; 
            arr[n - 1] = 0; 
        } 
 
        for ( i = 0; i < n; ++i) 
           cout << arr[i] << " "; 
        cout << endl;
    system("pause");
    return 0;               
}
0
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.01.2013, 00:11 #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
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <cmath>
using namespace std; 
 
void enter(double* array, int size) 
{ 
    cout << "Введите " << size << " чисел:" << endl;
    for (int i = 0; i < size; i++)
        cin >> array[i];
} 
 
void max_element(double* array, int size) 
{   
    double max; 
    int i;
    max = array[0];
    for ( i = 1; i < size; i++)
        if (abs(array[i]) > abs(max))
            max = array[i];
 cout << "Максимальный по модулю равен " << max << endl;
 } 
 
void func_zero(double* array, int size) 
{ 
 
    int i, j; 
 
    for ( i = 0; i < size; ++i) 
        if(array[i] == 0) 
        { 
            for ( j = i; j < size - 1; ++j) 
                array[j] = array[j+1]; 
            array[size - 1] = 0; 
        } 
 
        for ( i = 0; i < size; ++i) 
           cout << array[i] << " "; 
        cout << endl;
 
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    const int n = 10;
    double arr[n];
    enter(arr, n);  
    max_element(arr, n); 
    func_zero(arr, n);
 
    system("pause");
    return 0;               
}
1
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
12.01.2013, 00:15  [ТС] #29
Цитата Сообщение от David Sylva Посмотреть сообщение
Типа такого
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
#include <iostream>
#include <cmath>
using namespace std; 
 
void enter(double* array, int size) 
{ 
    cout << "Введите " << size << " чисел:" << endl;
    for (int i = 0; i < size; i++)
        cin >> array[i];
} 
 
void max_element(double* array, int size) 
{   
    double max; 
    int i;
    max = array[0];
    for ( i = 1; i < size; i++)
        if (abs(array[i]) > abs(max))
            max = array[i];
 cout << "Максимальный по модулю равен " << max << endl;
 } 
 
void func_zero(double* array, int size) 
{ 
 
    int i, j; 
 
    for ( i = 0; i < size; ++i) 
        if(array[i] == 0) 
        { 
            for ( j = i; j < size - 1; ++j) 
                array[j] = array[j+1]; 
            array[size - 1] = 0; 
        } 
 
        for ( i = 0; i < size; ++i) 
           cout << array[i] << " "; 
        cout << endl;
 
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    const int n = 10;
    double arr[n];
    enter(arr, n);  
    max_element(arr, n); 
    func_zero(arr, n);
 
    system("pause");
    return 0;               
}
это получается вы перед главной функцией добавили еще 3?
0
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.01.2013, 00:17 #30
Цитата Сообщение от илья1995 Посмотреть сообщение
это получается вы перед главной функцией добавили еще 3?
А как надо было? Программа начинается с функции int main, главная функция это точка входа в программу.
0
12.01.2013, 00:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 00:17
Привет! Вот еще темы с ответами:

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

Преобразовать массив таким образом, чтобы сначала располагались все нулевые элементы - C++
В двумерном массиве, состоящем из NxN вещественных элементов, вычислить: Преобразовать массив таким образом, чтобы сначала располагались...

Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы - C++
Ребята , помогите : нужно составить алгоритм и программу преобразования массива A, таким образом , чтобы сначала распологались четные , а...

Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1 - C++
В одномерном массиве, состоящей из n вещественных элементов, вычислить: 1) номер минимального элемента массива; 2) сумму элементов...


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

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

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