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

обратите на меня внимание) - C++

Восстановить пароль Регистрация
 
winelove
 Аватар для winelove
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 71
10.05.2010, 22:19     обратите на меня внимание) #1
В одномерном массиве, состоящем из n вещественных элементов, вы-числить:
1) количество элементов массива, больших С;
2) произведение элементов массива, расположенных после макси-мального по модулю элемента.
3) Преобразовать массив таким образом, чтобы сначала располага-лись все отрицательные элементы, а потом – все положительные (элементы, равные 0 , считать положительными).
Pascal
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
const N=10;
var Mas:array[1..N] of real;
    C,proiz:real;
    i,j,count:integer;
    n_max:integer;
begin
 count:=0; {число элементов больших C}
 n_max:=1; {Номер максимального по модулю элемента}
  for i:=1 to N do
   begin
    write('Введите элемент [',i,'] : ');
    readln(Mas[i]);
    if abs(Mas[n_max])<abs(Mas[i]) then
    n_max:=i;
   end;
 write('Введите C: ');
 readln(C);
 proiz:=1;  {Произведение элементов}
 for i:=1 to N do
  begin
   if i>n_max then
   proiz:=proiz*Mas[i];
   if Mas[i]>C then
   count:=count+1;
  end;
 for j:=1 to n-1 do
  for i:=1 to n-1 do
   if Mas[i]>Mas[i+1] then
    begin
     C:=Mas[i];
     Mas[i]:=Mas[i+1];
     Mas[i+1]:=C;
    end;
 writeln('Количество элементов больших C: ',count);
 writeln('Произведение элементов: ',proiz);
 writeln('Преобразованный массив:');
  for i:=1 to n do
   write(Mas[i]:5:3,' ');
 readln;
end.
Вот эта задача через Паскаль, а мне надо в С++, как это все преобразовать??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
10.05.2010, 23:17     обратите на меня внимание) #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
#include <iostream>
 
int mod(int a)     { return a > 0 ? a : -a; }
bool    greate(int a, int b){ return a > b; }
int     mul(int a, int b)      { return a * b; }
 
unsigned count_if(const int *beg, const int *end, bool (*func)(int, int), int cmp)
{
    unsigned res = 0;
    for(const int *i = beg; i != end; ++i)
        if(func(*i, cmp)) ++res;
 
    return res;
}
 
int accumulate(const int *beg, const int *end, int val, int (*func)(int, int))
{
    int res = val;
    for(const int *i = beg; i != end; ++i)
        res = func(res, *i);
    return res;
}
 
int *maxmod(const int *beg, const int *end)
{
    int max = *(beg);
    int *res = const_cast<int*> (beg);
    for(const int *i = (beg + 1); i != end; ++i)
    {
        if(mod(max) < mod(*i))
        {
            max = *i;
            res = const_cast<int*> (i);
        }
    }
    return res;
}
 
 
void sort(int *beg, int *end){
    for(int *i = beg; i != end; ++i)
    {
        for(int *j = beg; j != (end - 1); ++j)
        {
            if(*j > *(j + 1)){
                int buff = *j;
                *(j) = *(j + 1);
                *(j + 1) = buff;
            }
        }
    }
}
 
 
int main(){
 
    const int n = 10;
    int arr[n] = {4, 2, 0, -4, 5, 6, -7, -12, 9, 9}; // max 12, 9 * 9 = 81
 
    int c = 7; // std::cin >> c;
 
    // 1
    std::cout << "Count elem > c : " << count_if(arr, arr + n, greate, c) << '\n';
 
    //2
    const int *maxpos = maxmod(arr, arr + n);
    std::cout << "mul: " << accumulate(maxpos + 1, arr + n, 1, mul) << '\n';
 
    //3
    sort(arr, arr + n);
 
    for(int i = 0; i < n; ++i)
        std::cout << arr[i] << " ";
 
    return 0;
}
http://codepad.org/Zdi52njr
winelove
 Аватар для winelove
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 71
10.05.2010, 23:32  [ТС]     обратите на меня внимание) #3
спасибо, но пишет ошибки
особенно смущает std
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
10.05.2010, 23:42     обратите на меня внимание) #4
Вместо
C++
1
#include <iostream>
напиши
C++
1
#include <iostream.h>
И везде удали std::
Yandex
Объявления
10.05.2010, 23:42     обратите на меня внимание)
Ответ Создать тему
Опции темы

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