Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
1

Перевод из Pascal. Одномерный массив (сумма, произведение)

11.06.2010, 08:42. Показов 1080. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
программа вычисляет:
1) произведение отрицательных элементов массива
2) сумму положительных элементов массива, расположенных до максимального элемента
Нужен только всего лишь перевод на С++, прошу помощи

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var a:array[1..100] of integer;
    n,i,sum,mult:integer;
    max:byte;
begin
write('n = ');
readln(n);
for i:=1 to n do
  read(a[i]); {ввод через пробел}
mult:=1;
max:=0;
for i:=1 to n do
  begin
    if a[i]<0 then mult:=mult*a[i];
    if a[i]>max then max:=i;
  end;
sum:=0;
for i:=1 to max-1 do {(max-1) если максимальный элемент не включаем, иначе до max}
  if a[i]>0 then sum:=sum+a[i];
writeln('произведение отрицательных элементов: ',mult);
writeln('сумма положительных до макс: ', sum);
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2010, 08:42
Ответы с готовыми решениями:

Одномерный массив (сумма, произведение)
Здравствуйте! Помогите пожалуйста с задачей, что-то я не совсем понимаю как её решить. В...

Одномерный массив. Сумма, произведение элементов
Дана линейная таблица А, N &lt;=50. Найти сумму ее элементов, расположенных до первого нуля, и...

Одномерный массив, сумма и произведение элементов
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)Сумму положительных...

Одномерный массив (произведение последних членов, сумма которых будет не больше чем число С)
ребята, помогииите))) для одномерного массива А(n) найти произведение последних членов этого...

15
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
11.06.2010, 10:23 2
А что сдесь сложного?О_о
0
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
11.06.2010, 11:33  [ТС] 3
действительно, но для кого как
кому не сложно...
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
11.06.2010, 11:43 4
Я думаю самый понятный способ:

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
#include <iostream>
 
int main ()
{
    // initial
    const int size=10;
    int MAS[size];
    // fill
    for (int i=0; i<size; i++) {
        std::cout << "MAS["<< i <<"]: ";
        std::cin >> MAS[i]; }
 
    long product=1;
    int sum=0;
    int max=0, index_max;
    // search product
    for (int i=0; i<size; i++)
        if (MAS[i]<0) product*=MAS[i];
    // search max element
    for (int i=0; i<size; i++)
        if (MAS[i]>max) {
            max=MAS[i];
            index_max=i; }
    // search sum
    for (int i=0; i<index_max; i++)
        sum+=MAS[i];
    // output
    std::cout << "Product: " << product;
    std::cout << std::endl;
    std::cout << "Sum: " << sum;
    std::cout << std::endl;
 
    system ("pause");
    return 0;
}
1
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
11.06.2010, 11:59 5
вот еще посмотриш:
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<clocale>
using namespace std;
int main()
{setlocale(LC_ALL, "rus");
int n,i,sum,mult,pos;
int a[100];
        cout << "n=";
        cin>>n;
        for(i=0; i<=n-1; i++)
        {
            cin>>a[i];
        }
        mult=1;
    int max=0;
    sum=0;
        for(i=0; i<=n-1; i++)
        {
            if(a[i]<0)
                mult=mult*a[i];
        
            if(a[i]>max)
            {
                max=a[i];
            pos=i;
            }
        }
            for(i=0; i<=pos-1; i++)
            {
                if (a[i]>0) 
                    sum+=a[i];}
 
            cout<<"произведение отрицательных элементов: "<<mult;
            cout<<"\n";
            cout<<"сумма положительных до макс: "<<sum;
 
    return 0;
}
1
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
11.06.2010, 12:16 6
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
#include <iostream.h>
 
int main()
{
   int arr[100];
   int size, sum, mul, max, max_ind;
   
   do
   {
      cout << "Введите размер массива, не больше 100: ";
      cin >> size;
   }while (size > 100 || size <= 0);
   
   for (int i = 0; i < size; i++)
   {
      cout << "Введите a[" << i << "]: ";
      cin >> arr[i];
   }
   mul = 1;
   sum = 0;
   max = arr[0];
   max_ind = 0;
   for (int i = 0; i < size; i++)
   {
      if (a[i] < 0)
         mul *= arr[i];
      if (a[i] > max)
      {
         max = a[i];
         max_ind = i;
      }
   }
   for (int i = 0; i < max_ind; i++)
      if (a[i] > 0)
         sum += a[i];
   cout << "Произведение отрицательных элементов - " << mul << endl;
   cout << "Сумма положительных элементов до макс. - " << sum << endl;
   return 1;
}
1
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
11.06.2010, 12:34  [ТС] 7
Всем спасибо
у //Александр правильно все считает, у neske считает, но не во всех случаях
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
11.06.2010, 13:23 8
Введите n>100, посомтрим что будет. Я про код //Александр
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
11.06.2010, 13:33 9
neske, //Александр, kazak, а если в массиве не будет вообще отрицательных ?

Вообще код на паскале имеет тот же недочет, который есть в ответах выше. Да и вообще это программа на один цикл. Вот вариант на паскале
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
41
uses
  Crt;
const
  N = 5;
var
  a: array [1..N] of integer;
  i,sum,pr,max,tmp: integer;
  f: boolean;
begin
  ClrScr;
  Randomize;
  f := true;
  max := 1;
  sum := 0;
  tmp := 0;
  WriteLn('Array:');
  for i := 1 to N do
  begin
    a[i] := Random(8) + 4;
    if a[i] < 0 then
    begin
      if f then
        f := false;
      pr := pr * a[i];
    end;
    if a[i] > a[max] then
    begin
      max := i;
      Inc(sum, tmp);
      tmp := 0;
    end;
    Inc(tmp, a[i]);
    Write(a[i], ' ');
  end;
  if not f then
    WriteLn(#10, 'Product: ', pr)
  else
    WriteLn(#10, 'Product: none');
  WriteLn('Max - a[', max, '] = ', a[max], #10, 'Sum: ', sum);
  ReadLn;
end.
А вот на с++
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
#include <iostream>
 
int main()
{
    int max = 0, sum = 0, pr = 1, tmp = 0, n;
    bool f = 1;
 
    std::cin >> n;    
    int a[n];
    for (int i = 0; i < n; i++)
    {
        std::cin >> a[i];
        if (a[i] < 0)
        {
            if (f) f = 0;
            pr *= a[i];
        }
        if (a[i] > a[max])
        {
            max = i;
            sum += tmp;
            tmp = 0;
        }
        tmp += a[i];
    }
    
    if (f) std::cout << "\nProduct: none";
    else std::cout << "\nProduct: " << pr;
    std::cout << "\nMax: " << a[max] << "\nSum: " << sum << std::endl; 
    
    system("pause");
    return 0;    
}
1
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
11.06.2010, 13:49 10
Цитата Сообщение от Inadequate Посмотреть сообщение
std::cin >> n;
int a[n];
Несколько не ожиданно

Цитата Сообщение от Inadequate Посмотреть сообщение
if (a[i] > a[max])
{
max = i;
sum += tmp;
tmp = 0;
}
tmp += a[i];
Оригинально, но суммирует все подряд числа, а требуется только положительные
Но за идею спасибо
1
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
11.06.2010, 13:57 11
kazak, а в чем неожиданность ? Объясни пожалуйста, а я если что-то не так приму к сведению.

kazak, пардон, про положительные я просмотрел чуток ну исправить до нужного совсем несложно, поэтому такие мелочи я исправлять не буду.
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
11.06.2010, 14:00 12
Цитата Сообщение от Inadequate Посмотреть сообщение
kazak, а в чем неожиданность ? Объясни пожалуйста, а я если что-то не так приму к сведению.
Вроде как размер статического массива должен быть известен компилятору на стадии компиляции. Мне конечно приходилось сталкиватся с таким случаем на Dev-C++, но остальные компиляторы всетаки придерживаются традиций и выдают ошибки.
1
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
11.06.2010, 14:05 13
kazak, да, действительно проверял на Dev-C++. Я учту вышесказанное, спасибо.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
11.06.2010, 14:16 14
Цитата Сообщение от Inadequate Посмотреть сообщение
neske, //Александр, kazak, а если в массиве не будет вообще отрицательных ?
Программа выведет в консоль сообщение о том, что произведенеи равно единице (;
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
11.06.2010, 14:22 15
neske, шутку оценил, но только так быть не должно.
1
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
11.06.2010, 15:17 16
Это была не шутка
Да, вы правы.
0
11.06.2010, 15:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2010, 15:17
Помогаю со студенческими работами здесь

Дан одномерный массив натуральных чисел. Определить произведение элементов массива, сумма цифр которых нечетная
Дан одномерный массив натуральных чисел. Определить произведение элементов массива, сумма цифр...

Одномерный массив. Вычислить разность C= A-B, где А-произведение положительных элементов, а В- сумма элементов по абсолютному значению массива
Вычислить разность C= A-B, где А-произведение положительных элементов, а В- сумма элементов по...

одномерный массив. произведение элементов. сумма элементов
В одномерном массиве, состоящем из n целых элементов вычислить: 1. произведение элементов массива...

Перевод кода с Pascal на C# (сумма вклада)
Var i:integer; s:real; begin s:=1000; for i:=1 to 12 do begin s:=s*1.02; writeln(i,' -...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru