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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.78
Селявкина Мария
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
#1

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

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

Всем привет! Мне дана задача, но я незнаю как в С++ обозначать диапазоны и через какой цикл писать. У меня 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2010, 13:50     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50
Посмотрите здесь:
вычислить произведение последних трех чисел не кратных пяти в диапазоне от n1 до n2 C++
Вычислить произведение кратных 3 чисел массива C++
Вычислить произведение чисел кратных 7 на промежутке от 1 до 100. C++
C++ Вычислить произведение не кратных трем чисел массива
Вычислить среднее арифметическое и среднее геометрическое нечетных чисел, кратных 7 в диапазоне от M1 до M2 C++
Найти произведение количества чисел не кратных 5 на количество чисел не кратных 7 C++
Вычислить количество чисел, кратных 3, и среднее арифметическое чисел, кратных 7 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
03.10.2010, 14:33     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #2
Селявкина Мария, хотелось бы уточнить задачу. Пользователь вводит последовательность чисел, нужно найти произведение последних трех, которые лежать в диапазоне от 20 до 50 и не кратны 5?
Селявкина Мария
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
03.10.2010, 14:36  [ТС]     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #3
Вычислить произведение последних трех чисел не кратных 5 в диапазоне
от 20 до 50.
Ну я думаю, что пользователь должен вводить числа.
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 14:50     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 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;
}
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
03.10.2010, 14:58     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #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 / 0
Регистрация: 01.10.2010
Сообщений: 59
03.10.2010, 15:02  [ТС]     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #6
Уважаемый PointsEqual не могли бы прокоментировать свой код.Просто я новичек в С++ и мне не все команды понятны.
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 15:04     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #7
Nameless One, ваш код определенно лучше)
Селявкина Мария
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
03.10.2010, 15:07  [ТС]     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #8
Я не Ваш PointsEqual и не Nameless One код не совсем поняла.Кто-нибудь прокоментируйте свой код,пожалуйста.
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 15:07     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #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;
}
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
03.10.2010, 15:41     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #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 / 0
Регистрация: 01.10.2010
Сообщений: 59
10.10.2010, 16:17  [ТС]     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #11
А есть еще варианты решени данной задачи. Так как мне требуется решить эту задачу через цикл,т.к. массивы мы на занятиях еще не проходили.
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 16:32     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #12
Если я правильно понял задание, числа вводить не надо, тем более что массивы не изучались - как вводить числа? Просто наверное просмотреть числа от 20 до 50 и найти произведение 3-х последних, которые не кратны 5. Т.е. 49*48*47. Но тогда это тупость получается.
Селявкина Мария
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
10.10.2010, 16:37  [ТС]     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #13
Вот я тоже так думаю.Спрашвала у преподовтеля как делать,а он сама не знает.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
10.10.2010, 16:39     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #14
Цитата Сообщение от Селявкина Мария Посмотреть сообщение
Вот я тоже так думаю.Спрашвала у преподовтеля как делать,а он сама не знает
Хехе... "Поиди туда, не знаю куда, сделай то, не знаю что..." Как тогда он (она) может от вас что-то требовать, если не способен (-на) четко поставить задачу?
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.10.2010, 16:45     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #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 / 0
Регистрация: 01.10.2010
Сообщений: 59
10.10.2010, 20:50  [ТС]     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #16
Она мне предложила сделать через цикл for вот так:
for (Pr = 50; Pr>=20; Pr--)
Но при этом надо указать,чтобы число было не кратно 5.
dihlofos,а что такое count?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
10.10.2010, 21:15     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #17
Селявкина Мария, Счетчег. Если count==3 цикл прекращается. count прибавляется только в том случае, если значение не кратно 5
Селявкина Мария
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
10.10.2010, 21:36  [ТС]     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #18
Уважаемый dihlofos, Ваша программа не работает.Она запускается,но не считает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2010, 21:39     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50
Еще ссылки по теме:
Вычислить сумму членов последовательности натуральных чисел, кратных и не кратных заданному числу C++
C++ Подсчитать,сумму чисел последовательности кратных 8 и находящихся в диапазоне
Вычислить сумму положительных чисел, кратных 3 и не кратных 5 C++
Вычислить количество положительных чисел, кратных 7 и не кратных 5 C++
C++ Напишите программу определения суммы всех нечетных чисел, кратных 3 в диапазоне от 1 до 99 включительно

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

Или воспользуйтесь поиском по форуму:
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
10.10.2010, 21:39     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50 #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;
}
Yandex
Объявления
10.10.2010, 21:39     Вычислить произведение последних 3-х чисел не кратных 5 в диапазоне от 20 до 50
Ответ Создать тему
Опции темы

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