Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94

Найти сумму первых элементов массива, произведение которых не превышает заданного числа М

15.03.2012, 17:40. Показов 7148. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется последовательность чисел a1, a2, ... ,aN, образована по правилу аi=random(N). Найти сумму первых из них (считая слева направо), произведение которых не превышает заданного числа М.
Очень прошу помочь!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.03.2012, 17:40
Ответы с готовыми решениями:

Найти максимальную сумму чисел, произведение которых не превышает заданного числа.
Вводим массив(статический).Найти максимальную сумму чисел, произведение которых не превышает заданного числа.

Найти сумму первых чисел последовательности произведение которых не превосходит заданного числа
Найти сумму первых чисел последовательности (заданной с использованием функции вычисления логарифма), произведение которых не превосходит...

Найти произведение первых трех элементов массива, больших заданного числа
В массиве а1, а2, ..., а25 найти произведение первых трех элементов, больших чем 5.

44
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.03.2012, 17:46
Zalik, язык Си или С++?
1
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
15.03.2012, 17:47
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>
#include <time.h>
#include <stdlib.h>
 
 
int main()
{
    srand( time ( NULL ) );
 
    std::cout << "Enter N: ";
    int N;
    std::cin  >> N;
 
    std::cout << "\nEnter M: ";
    int M;
    std::cin  >> M;
 
    int total = 0;
    int multy = 1;
    for ( int i = 0; i < N; i++)
    {
        int x = rand() % N;
        multy *= x;
        if ( multy < M )
            total += x;
        else
            break;
    }
 
 
    std::cout << "\nTotal = " << total << "\nMultyply = " << multy;
    return 0;
}
1
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
15.03.2012, 17:48
Цитата Сообщение от Zalik Посмотреть сообщение
Имеется последовательность чисел a1, a2, ... ,aN, образована по правилу аi=random(N). Найти сумму первых из них (считая слева направо), произведение которых не превышает заданного числа М.
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 <cstdlib>
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    const int N = 10;
    int M, sum = 1;
    int i;
    int a[N];
    srand(time(NULL));
    cout << "M = " << endl;
    cin >> M;
    for (i = 0; i < N; i++)
        a[i] = rand() % 100;
    for (i = 0; i < N && sum * a[i] <= M; i++)
        sum *= a[i];
    for (i = 0; i < N; i++)
        cout << a[i] << " ";
    cout << endl;
    cout << "Sum = " << sum;
    system("PAUSE > NULL");
    return EXIT_SUCCESS;
}

Не по теме:

опоздал

1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.03.2012, 17:51
Вот на плюсах
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>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    long N,M,m,i,S;
    int *a = NULL;
    time_t t;
    while(true)
    {
        srand(time(&t));
        
        cout<<"Enter N : ";cin>>N;
        cout<<"Enter M : ";cin>>M;
        if(!(a = new int[N]))
            cout<<"Allocation memory error\n";
        else
        {
            m = 1 + (i = (S = 0));
            while(m < M)
            {
                m *= (a[i] = rand()%N);
                S += a[i];
                cout<<a[i]<<" ";
            }
            cout<<"\nSumm : "<<S<<endl;
            delete [] a;
        }
    }
    return 0;
}
Миниатюры
Найти сумму первых элементов массива, произведение которых не превышает заданного числа М  
1
15.03.2012, 17:56

Не по теме:

co6ak, где сумма?

Цитата Сообщение от Zalik Посмотреть сообщение
Найти сумму первых из них (считая слева направо), произведение которых не превышает заданного числа М
dimcoder, почему 10 а не 5-ть или 1024???
Цитата Сообщение от dimcoder Посмотреть сообщение
const int N = 10;
также обрати внимание на диапазон генерации
Цитата Сообщение от dimcoder Посмотреть сообщение
rand() % 100;
Цитата Сообщение от Zalik Посмотреть сообщение
аi=random(N)

2
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
15.03.2012, 17:58
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

co6ak, где сумма?

dimcoder, почему 10 а не 5-ть или 1024???


total - сумма
еще глупые вопросы жги
там, если глазками посмотреть, видно, что ЕСЛИ ПРОИЗВЕДЕНИЕ НЕ БОЛЬШЕ, то считается сумма.
1
15.03.2012, 18:01

Не по теме:

Цитата Сообщение от co6ak Посмотреть сообщение
еще глупые вопросы жги
- зачем std::cout???Зачем тут рефакторинг приведи примеры из практики где ты хотя бы раз сталкивался с конфликтом namespace???Признаю не увидел total, ещё бы вывод элементов добавить и будет вообще здорово:bravo:Жгу;)

1
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
15.03.2012, 22:07  [ТС]
Нужно для с++. Всем огромное спасибо! Знаю, что это уже наглость и извиняюсь за это, но можно попроще?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.03.2012, 22:15
Цитата Сообщение от Zalik Посмотреть сообщение
Нужно для с++.
- пост 5 именно на С++

Цитата Сообщение от Zalik Посмотреть сообщение
но можно попроще
- можно просто вывести на экран ответ посчитанный на калькуляторе, друг ну у тебя
1-е генерация случайных чисел
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
srand(time(&t));
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(a[i] = rand()%N);
- вот она
2 -е сумма и произведение

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
m *= (a[i] = rand()%N);
* * * * * * * * * * * * * * * * S += a[i];
- вот они, куда ещё проще???
Предположу что такая запись повергла в уныние и является непонятной

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(i = (S = 0));
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(a[i] = rand()%N);
- хорошо
m = 1 + (i = (S = 0)); эквивалентно 3-м строкам кода
m = 1;
i = 0;
S = 0;

а это
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
m *= (a[i] = rand()%N);
- эквивалентно 2-м
a[i] = rand()%N;
m = m*a[i];
Если хочешь ещё проще убери внешний цикл
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(true)
* * * * {
PS:Более упростить я не могу, если конечно ты именно с моим кодом работаешь...
1
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
15.03.2012, 22:45  [ТС]
А это статический массив?

Добавлено через 5 минут
Мне нужен статический массив. И как еще вывести этот массив?

Добавлено через 12 минут
С выводом разобрался. И тут еще возникла одна проблема, каждый раз в начале появляется 0 и все произведение обнуляется. В результате складывается весь массив.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.03.2012, 23:10
Цитата Сообщение от Zalik Посмотреть сообщение
Мне нужен статический массив.
- тогда сколько в нём элементов? Статический потому и статический что в нём заранее известно число элементов...
1
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
15.03.2012, 23:29  [ТС]
Я делал уже так, но препод меня отшила, сказав что ей не нужен динамический массив. Я полностью запутался!
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.03.2012, 23:43
Zalik, так в моём код массив динамический, не пойму что тебе в нём не нравится???
Вот это динамическое выделение памяти
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(!(a = new int[N]))
+ проверка а выделилась ли память(её всегда надо делать). Многи и не подозривают что часто крах их програм происходит из за того что память просто не выделилась, а никакой проверки нет
А это
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
delete [] a;
- чистка памяти
1
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
16.03.2012, 07:00  [ТС]
Юра я уже достал вас, наверно, но вы можете посмотреть этот вариант? Меня выбрасывает...


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
// l2.cpp : Defines the entry point for the console application.
//
 
 
#include "stdafx.h"
#include <iostream>
#include<CONIO.H>
#include<STDIO.H>
#include <time.h>
#include <stdlib.h>
using namespace std;
 
int main()
{
    int n;
   srand(time(NULL));
   float *massiv;
   massiv = new float [n];
for (int i=0; i<n; i++)
{
*(massiv+i) = float (rand()%10);
cout << *(massiv+i) << " " ;}
    int a;
    cout << endl << "Vvedite chislo" << endl;
    cin >> a;
    int umnog = 1, summa = 0;
    if(massiv[0] < a){
        for(int i = 0; i < 10; i++){
            if(umnog < a){
                umnog *= massiv[i];
                summa += massiv[i];
            }
            else{
                summa = summa - massiv[i - 1];
                break;
            }
        }
    }
    else{
        cout << "Oshibka :-(((";
    }
    cout <<"Сумма чисел произведение которых не превышает заданное число="<< summa;
 
    getch();
}
Добавлено через 6 часов 37 минут
Выводит ошибку Run-Time Check Failure #3 - The variable 'n' is being used without being defined.
0
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
16.03.2012, 10:21
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(!(a = new int[N]))
Если new выбросит исключение, никакой if не поможет. Зависит от компилятора.
0
16.03.2012, 10:26

Не по теме:

Цитата Сообщение от dimcoder Посмотреть сообщение
Если new выбросит исключение, никакой if не поможет. Зависит от компилятора.
- если выбросит исключение bad alloc приравняй arr = NULL и иди дальше(по крайней мере на студии такое жуётся) хотя сейчас попробуем. Будем выделять память для int * arr размером скажем 10 и 10 ноликов элементов(столько памяти не выделяется).

1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.03.2012, 10:37
dimcoder, компилируй и убеждайся в моих словах if -а достаточно чтобы алгоритм не обломился
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
#include <iostream>
using namespace std;
 
int main()
{
    int * arr       = 0;
    unsigned long n = 0;
    while(true)
    {
        cin.clear();
        cin.sync();
        cout<<"Enter num of elements in array\n";
        if(!(cin>>n))
            cout<<"Input error\n";
        else
        if(!(arr = new int[n]))
            cout<<"Alllocation memory error\n";
        else
        {
            cout<<"Allocation successfull\n"
                <<"number of elements : "<<n<<endl
                <<"adress of array 0x"<<arr<<endl;
            delete [] arr;
        }
        arr = NULL;
    }
    return 0;
}
Миниатюры
Найти сумму первых элементов массива, произведение которых не превышает заданного числа М  
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.03.2012, 10:45
Цитата Сообщение от Zalik Посмотреть сообщение
Юра я уже достал вас, наверно, но вы можете посмотреть этот вариант? Меня выбрасывает...
- у меня вопрос неужели такая запись
Цитата Сообщение от Zalik Посмотреть сообщение
*(massiv+i)
вам понятней нежели massiv[i] ???Вас выбрасывает потому как неинициализируете число элементов

Цитата Сообщение от Zalik Посмотреть сообщение
int n;
* *srand(time(NULL));
* *float *massiv;
* *massiv = new float [n];
- вы сколько n ввели, а???Вот то то и оно что числа элементов не ввели а память выделить пытаетесь. Так пишите полное условие задачи я вам сделаю в духе последнего кода, с отсутствием фильтров корректного ввода и выделения памяти. Хотя посмотрите мой код здесь

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(!(cin>>n))
* * * * * * * * * * * * cout<<"Input error\n";
* * * * * * * * else
* * * * * * * * if(!(arr = new int[n]))
и на скрин, как выдумаете чтобы происходило с программой если бы ошибки Input error или Alllocation memory error не фильтровались, м???Отвечу вылетело бы.
В общем решением для вашего кода является
Цитата Сообщение от Zalik Посмотреть сообщение
int n;
* *srand(time(NULL));
* *float *massiv;
cout<<"Vvedite chislo elementov : ";
cin>>n;

* *massiv = new float [n];
а вам решать писать с фильтрами возможных ошибок либо писать попроще на уровне начинающего с потенциальной опасностью вылета алгоритма...
PS:Если я жестковато ответил - это лишь с целью включения вашей логики...
1
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
16.03.2012, 10:54
-=ЮрА=-, говорю же, зависит от компилятора. Некоторые выбрасывают исключение по умолчанию, некоторые только при подключении <new>. При моем тесте (1000000000), кстати, прога успешно терминировала, а следовательно аргумент
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if -а достаточно чтобы алгоритм не обломился
не верен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2012, 10:54
Помогаю со студенческими работами здесь

Найти сумму элементов массива значения которых меньше заданного числа
Дан одномерный массив 6 элементов. Найти сумму элементов массива значения которых меньше 0.25 Массив x-{3.5,-6.3,2.1,0.1,5.1,-2.1}

В заданном массиве найти количество элементов, для которых отклонение от заданного числа А не превышает величины Р
В заданном массиве найти количество элементов, для которых отклонение от заданного числа А не превышает величины Р.

Найти сумму элементов массива, удалить из него все элементы, модуль которых не превышает 1
Помогите, пожалуйста 1. Найти сумму элементов массива с нечетными номерами. 2. Найти сумму элементов массива, расположенных между...

Вычислить произведение элементов массива S, значение которых не больше заданного негативного числа
Здесь задали на Борланде С(не С++) ну просто нечто (я нуб в этом деле) 1.Вычислить произведение элементов массива S ,значение которых не...

Вычислить произведение элементов массива S, значение которых не больше заданного негативного числа
Здесь задали на Борланде С++ ну просто нечто (я нуб в этом деле) 1.Вычислить произведение элементов массива S ,значение которых не больше...


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

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru