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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.73
Zalik
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
#1

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

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

Имеется последовательность чисел a1, a2, ... ,aN, образована по правилу аi=random(N). Найти сумму первых из них (считая слева направо), произведение которых не превышает заданного числа М.
Очень прошу помочь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2012, 17:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти сумму первых элементов массива, произведение которых не превышает заданного числа М (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
15.03.2012, 17:46 #2
Zalik, язык Си или С++?
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.03.2012, 17:47 #3
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;
}
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
15.03.2012, 17:48 #4
Цитата Сообщение от 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;
}

Не по теме:

опоздал

-=ЮрА=-
Заблокирован
Автор FAQ
15.03.2012, 17:51 #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
#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;
}
Миниатюры
Найти сумму первых элементов массива, произведение которых не превышает заданного числа М  
-=ЮрА=-
15.03.2012, 17:56
  #6

Не по теме:

co6ak, где сумма?

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

co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.03.2012, 17:58 #7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

co6ak, где сумма?

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


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

Не по теме:

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

Zalik
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
15.03.2012, 22:07  [ТС] #9
Нужно для с++. Всем огромное спасибо! Знаю, что это уже наглость и извиняюсь за это, но можно попроще?
-=ЮрА=-
Заблокирован
Автор FAQ
15.03.2012, 22:15 #10
Цитата Сообщение от 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:Более упростить я не могу, если конечно ты именно с моим кодом работаешь...
Zalik
2 / 2 / 0
Регистрация: 24.05.2010
Сообщений: 94
15.03.2012, 22:45  [ТС] #11
А это статический массив?

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

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


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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2012, 07:00
Привет! Вот еще темы с ответами:

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

Найти произведение элементов массива, больше заданного числа А - C++
Новичок в С++, пока даже лекций по циклам не было, но уже дали задание. Не представляю себе, что написать в цикле (можно if и while...

В матрице А (mxn) найти найти сумму элементов по колонкам, значения которых по модулю меньше заданного числа К - C++
a) задать значения элементов массива при объявления переменных; b) значения элементов массива ввести с клавиатуры....

Найти в массиве количество четных чисел, сумма цифр в которых не превышает заданного числа P - C++
Найти количество четных чисел, сумма цифр в которых не превышает заданного числа P. При вводе Р=11 все считает правильно , но стоит...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.03.2012, 07:00
Закрытая тема Создать тему
Опции темы

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