Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/32: Рейтинг темы: голосов - 32, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
1

Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50

03.10.2010, 13:50. Показов 6480. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Мне дана задача, но я незнаю как в С++ обозначать диапазоны и через какой цикл писать. У меня 2 варианта, но я склоняюсь ко 2 варианту.
Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50.

Вариант 1

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
using namespace
 
int _tmain(int argc, _TCHAR* argv[])
{
    int Pr=0, x; //В Pr будет накапливатся произведение и хранится в х
    cin>>x;
    while (x!=5)
    {
        Pr*=x;   // Умножаем очередное введенное число с произведением
        cin>>x;  // Ввод следующего числа
    }
    cout<<Pr;
    return 0;
}
Вариант 2

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <math.h>
  #include <iostream.h>
  int main()
{
 int x, Pr;
 cin >> x;      //вводим первое число  
 for (Pr = 0; x!=5; )
 { 
      Pr * = x;   //Умножаем очередное введенное число с произведением
      cin >> x;   //ввод следующего числа
 }
cout << Sum;    //вывод посчитанного произведения
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2010, 13:50
Ответы с готовыми решениями:

Вычислить произведение последних трех чисел не кратных 5 в диапазоне от 20 до 50
Добрый день,помогите пожалуйста программу дописать :Вычислить произведение последних трех чисел не...

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

Составьте программу, которая находит произведение чисел кратных 2 и 5 в диапазоне от 30 до 70
Составьте программу, которая находит произведение чисел кратных 2 и 5 в диапазоне от 30 до 70...

Дан массив 4х4 из целых чисел. Вычислить произведение эл-тов кратных 2 но не кратных 4 с чётными номерами строк
Здравствуйте, очень нужна помощь умных людей....... Суть задачи: Дан массив 4х4 из целых чисел....

18
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
03.10.2010, 14:33 2
Селявкина Мария, хотелось бы уточнить задачу. Пользователь вводит последовательность чисел, нужно найти произведение последних трех, которые лежать в диапазоне от 20 до 50 и не кратны 5?
0
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
03.10.2010, 14:36  [ТС] 3
Вычислить произведение последних трех чисел не кратных 5 в диапазоне
от 20 до 50.
Ну я думаю, что пользователь должен вводить числа.
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 14:50 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
#include <iostream>
#include <vector>
 
int main()
{
 
    int start = 20;
    int end = 50;
    int p = 1;
    std::vector<int> arr;
    int k =0;
 
    for ( int i = start; i <= end; ++i )
        if (  (i % 10) != 0  || ( (i%10) != 5) )
            arr.push_back(i);
     
    if ( arr.size() >= 3)
        for ( int i = arr.size()-1; i > arr.size()-(3+1); --i )
            p *= arr[i];
 
 
 
    std::cout<<"Mult of last three  number = " << p;
 
 
    return 0;
}
1
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
03.10.2010, 14:58 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>
 
bool isCorrect(int i)
{
    return (i <= 50) && (i >= 20) && (i % 5);
}
 
int calcProduct(int first, int second, int third)
{
    int number;
    std::cout << "> ";
    if(std::cin >> number)
    {
        if(isCorrect(number))
            return calcProduct(number, first, second);
        else
            return calcProduct(first, second, third);
    }
    std::cout << std::endl;
    return first * second * third;
}   
 
int main()
{
    std::cout << "Введите числа. Для окончания ввода нажмите Ctrl+Z (или Ctrl+D)"
        << std::endl;
    int product = calcProduct(0, 0, 0);
    if(product)
        std::cout << "Произведение равно " << product << std::endl;
    else
        std::cout << "Недостаточно чисел, удовлетворяющих условию" << std::endl;
    return 0;
}
Если сильно хочется, то рекурсию можно переписать на цикл
1
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
03.10.2010, 15:02  [ТС] 6
Уважаемый PointsEqual не могли бы прокоментировать свой код.Просто я новичек в С++ и мне не все команды понятны.
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 15:04 7
Nameless One, ваш код определенно лучше)
0
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
03.10.2010, 15:07  [ТС] 8
Я не Ваш PointsEqual и не Nameless One код не совсем поняла.Кто-нибудь прокоментируйте свой код,пожалуйста.
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 15:07 9
Цитата Сообщение от Селявкина Мария Посмотреть сообщение
не могли бы прокоментировать свой код
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
#include <iostream>
#include <vector>
 
int main()
{
 
    int start = 20;
    int end = 50;
    int p = 1;
    std::vector<int> arr; //создаем массив
    int k =0;
 
    for ( int i = start; i <= end; ++i ) //от 20 до 50 ищем числа не кратные 5
        if (  (i % 10) != 0  || ( (i%10) != 5) ) //если число не кратно 5 то
            arr.push_back(i); //заносим его в массив
     
    if ( arr.size() >= 3) //проверям есть ли в массиве хотябы 3 числа
        for ( int i = arr.size()-1; i > arr.size()-(3+1); --i ) //считаем произведение последних 3 елементов
            p *= arr[i];
 
 
 
    std::cout<<"Mult of last three  number = " << p;
 
 
    return 0;
}
1
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
03.10.2010, 15:41 10
С комментариями:
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
#include <iostream>
 
/*
 * Функция проверяет, удовлетворяет ли число i условию задачи
 * т.е. лежит ли оно в отрезке [20, 50] и не является кратным 5.
 * Возвращает true, если i удовлетворяет условию, и false в противном случае
 */
bool isCorrect(int i)
{
    return (i <= 50) && (i >= 20) && (i % 5);
}
 
/*
 * Рекурсивная функция возвращает произведение последних трех введенных
 * пользователем чисел, которые удовлетворяют условию задачи.
 * В каждом вызове происходит ввод одного числа. Условие остановки рекурсивных 
 * вызовов - если пользователь нажал Ctrl+Z (или Ctrl+D в Linux).
 * Параметры функции - последние 3 "правильных" числа
 */
int calcProduct(int first, int second, int third)
{
    int number; // Здесь хранится текущее введенное число
    std::cout << "> "; // Приглашение к вводу
    // Условие выполняется, если пользователь не ввел Ctrl+Z (Ctrl+D):
    if(std::cin >> number)
    {
        if(isCorrect(number)) // если число - "правильное"
        /* ... оно "запоминается" как последнее "правильное
         * а предпредпоследнее - "забывается"
         */
            return calcProduct(number, first, second);
        else // В противном случае вызов происходит с теми же параметрами
            return calcProduct(first, second, third);
    }
    std::cout << std::endl;
    return first * second * third; // Вычисляется и возвращается произведение
}       
 
int main()
{
    std::cout << "Введите числа. Для окончания ввода нажмите Ctrl+Z (или Ctrl+D)"
    << std::endl;
    /*
     * Первоначальный вызов calcProduct происходит с нулевыми значениями
     * аргументов. Это нужно для того, чтобы отслеживать минимальное
     * количество введенных "правильных" чисел. Если оно меньше 3, то
     * хотя бы один из аргументов функции - first, second, third - будет
     * равен нулю, а значит, и произведение будет равно нулю
     */
    int product = calcProduct(0, 0, 0);
    if(product) // Аналогично if(product != 0)
        std::cout << "Произведение равно " << product << std::endl;
    else
        std::cout << "Недостаточно чисел, удовлетворяющих условию" << std::endl;
    return 0;
}
1
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
10.10.2010, 16:17  [ТС] 11
А есть еще варианты решени данной задачи. Так как мне требуется решить эту задачу через цикл,т.к. массивы мы на занятиях еще не проходили.
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 16:32 12
Если я правильно понял задание, числа вводить не надо, тем более что массивы не изучались - как вводить числа? Просто наверное просмотреть числа от 20 до 50 и найти произведение 3-х последних, которые не кратны 5. Т.е. 49*48*47. Но тогда это тупость получается.
0
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
10.10.2010, 16:37  [ТС] 13
Вот я тоже так думаю.Спрашвала у преподовтеля как делать,а он сама не знает.
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
10.10.2010, 16:39 14
Цитата Сообщение от Селявкина Мария Посмотреть сообщение
Вот я тоже так думаю.Спрашвала у преподовтеля как делать,а он сама не знает
Хехе... "Поиди туда, не знаю куда, сделай то, не знаю что..." Как тогда он (она) может от вас что-то требовать, если не способен (-на) четко поставить задачу?
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 16:45 15
Раз не знает, так можно ему за это лапшу на уши вешать Например:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
 
int main()
{
    cout<<47*48*49;
 
    cout<<endl;
    system("pause");
    return 0;
}
Ну или более близкое к правде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    int i, res=1, count=0;
 
    for(i=50; i>=20, count<3; i--)
    {
        if(i%5!=0)
        {
           res*=i;
           count++;
        }
    }
 
    cout<<"Result = "<<res;
    cout<<endl;
    system("pause");
    return 0;
}
1
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
10.10.2010, 20:50  [ТС] 16
Она мне предложила сделать через цикл for вот так:
for (Pr = 50; Pr>=20; Pr--)
Но при этом надо указать,чтобы число было не кратно 5.
dihlofos,а что такое count?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.10.2010, 21:15 17
Селявкина Мария, Счетчег. Если count==3 цикл прекращается. count прибавляется только в том случае, если значение не кратно 5
1
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
10.10.2010, 21:36  [ТС] 18
Уважаемый dihlofos, Ваша программа не работает.Она запускается,но не считает
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.10.2010, 21:39 19
Селявкина Мария,
Все она считает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
        int i, res=1, count=0;
 
        for(i=50; i>=20, count<3; i--)
        {
                if(i%5!=0)
                {
                   res*=i;
                   count++;
                }
        }
 
        cout<<"Result = "<<res;
        cout<<endl;
        system("pause");
        return 0;
}
1
10.10.2010, 21:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2010, 21:39
Помогаю со студенческими работами здесь

Массив: вычислить количество и сумму чисел, кратных 25, в диапазоне от 983 до 1150
Всем доброго времени суток. Уважаемые программисты, подскажите пожалуйста, как вычислить через...

Вычислить среднее арифметическое четных чисел, не кратных четырем в диапазоне от 1 до 200
Задача2. .Вычислить среднее арифметическое четных чисел, некратных четырем в диапазоне от 1 до 200

Вычислить произведение чисел кратных 3
Вычислить произведение чисел, больше заданного D и стоящих на местах, кратных 3; подсчитать также...

Вычислить произведение чисел с промежутка (A, B], количество отрицательных чисел, стоящих на местах, кратных 3
Прошу помощи в написание программы в лазарусе,и если будет не сложно помочь составить алгоритм...


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

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