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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
G0D
0 / 0 / 0
Регистрация: 19.04.2010
Сообщений: 9
19.04.2010, 02:49     Произведение элементов массива, расположенных после максимального по модулю элемента #1
Помогите написать программу. Я работаю с программой MS Visual Studio 2005.

В одномерном массиве, состоящем из п целых элементов, вычислить
1) количество элементов массива, больших С;
2) произведение элементов массива, расположенных после максимального по модулю элемента.
Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом — все положительные (элементы, равные 0, считать положительными).

Буду благодарен любой помощи.)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2010, 02:49     Произведение элементов массива, расположенных после максимального по модулю элемента
Посмотрите здесь:

C++ Произведение элементов массива расположенных после максимального по модулю элемента (С)
C++ произведение элеменов массива, расположенных после максимального по модулю элемента
C++ Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
C++ 1. Дан одномерный массив целых чисел. Найти произведение элементов массива, расположенных после минимального по модулю элемента
В одномерном массиве, состоящем из n целых элементов, 1) номер максимального элемента массива; 2) произведение элементов массива, расположенных между C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
19.04.2010, 05:33     Произведение элементов массива, расположенных после максимального по модулю элемента #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
#include <iostream>
#include <cmath>
 
void main(){
    int *array, n, i;
    
    std::cout << "Enter size of array: ";
    std::cin >> n;
    array = new int[n];
    
    for(i = 0; i < n; i++){
        std::cout << i << ": ";
        std::cin >> array[i];
    }
//1-----------------------------------------------      
    int c, counter = 0;
    std::cout << "Enter c: ";
    std::cin >> c;
    for(i = 0; i < n; i++)
        if(array[i] > c)
            counter++;
    std::cout << "Elements > c: " << counter;
//2-----------------------------------------------  
    int max = abs(array[0]);
    for(i = 0; i < n; i++)
        if(array[i] > max){
            max = abs(array[i]);
            counter = i;
        }
 
    int mult = 1;
    for(i = counter; i < n; i++)
        mult *= array[i];
    std::cout << "\nMultiplication of elements after max |element|: " << mult;
//3-----------------------------------------------      
    for(i = 0; i < n; i++)
        if(array[i] != 0 && abs(array[i] - 1) > abs(array[i])){
            int tmp = array[i];
            for(int j = 0; j < i; j++)
                array[i - j] = array[i - j - 1];
            array[0] = tmp;
        }
 
    std::cout << "\nReorganised:\n";
    for(i = 0; i < n; i++)
        std::cout << array[i] << ' ';
    std::cout << std::endl;
 
    delete []array;
    system("pause");
}
G0D
0 / 0 / 0
Регистрация: 19.04.2010
Сообщений: 9
19.04.2010, 19:06  [ТС]     Произведение элементов массива, расположенных после максимального по модулю элемента #3
Цитата Сообщение от Vorona Посмотреть сообщение
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
#include <iostream>
#include <cmath>
 
void main(){
    int *array, n, i;
    
    std::cout << "Enter size of array: ";
    std::cin >> n;
    array = new int[n];
    
    for(i = 0; i < n; i++){
        std::cout << i << ": ";
        std::cin >> array[i];
    }
//1-----------------------------------------------      
    int c, counter = 0;
    std::cout << "Enter c: ";
    std::cin >> c;
    for(i = 0; i < n; i++)
        if(array[i] > c)
            counter++;
    std::cout << "Elements > c: " << counter;
//2-----------------------------------------------  
    int max = abs(array[0]);
    for(i = 0; i < n; i++)
        if(array[i] > max){
            max = abs(array[i]);
            counter = i;
        }
 
    int mult = 1;
    for(i = counter; i < n; i++)
        mult *= array[i];
    std::cout << "\nMultiplication of elements after max |element|: " << mult;
//3-----------------------------------------------      
    for(i = 0; i < n; i++)
        if(array[i] != 0 && abs(array[i] - 1) > abs(array[i])){
            int tmp = array[i];
            for(int j = 0; j < i; j++)
                array[i - j] = array[i - j - 1];
            array[0] = tmp;
        }
 
    std::cout << "\nReorganised:\n";
    for(i = 0; i < n; i++)
        std::cout << array[i] << ' ';
    std::cout << std::endl;
 
    delete []array;
    system("pause");
}
Что то у меня не чего не работает. К примеру препод дал такое: 6 чисел: -10 -20 11 3 4 6 и c=4 . При этом условии не работает сортировка и произведение. Всё равно спс.

PS: Вопрос ещё актуален. Жду помощи )
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
19.04.2010, 23:37     Произведение элементов массива, расположенных после максимального по модулю элемента #4
хм
-10 -20 11 3 4 6
c = 4
1) количество элементов массива, больших С;
Elements > c: 2, а именно 6 и 11
2) произведение элементов массива, расположенных после максимального по модулю элемента.
Multiplication of elements after max |element|: 792, а именно после -20(модуль -20 = 20, т.е самое большое число в массиве): 11*3*4*6 = 792
Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом — все положительные (элементы, равные 0, считать положительными).
про сортировку речь не шла, т.е. все отрицатильные в начало, а все положительные и 0 - в конец
Reorganised:
-20 -10 11 3 4 6

насчет произведения, проверил еще раз, вы были правы, замените 23-33 строки на эти:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int max = abs(array[0]);
counter = 0;
for(i = 0; i < n; i++)
        if(abs(array[i]) > max){
                counter = i;
                max = abs(array[i]);
        }
int mult = 1;
for(i = counter+1; i < n; i++)
        mult *= array[i];
if(counter == n-1)
    mult = 0;
std::cout << "\nMultiplication of elements after max |element|: " << mult;
Yandex
Объявления
19.04.2010, 23:37     Произведение элементов массива, расположенных после максимального по модулю элемента
Ответ Создать тему
Опции темы

Текущее время: 13:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru