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

Циклы - C++

Восстановить пароль Регистрация
 
jock
2 / 2 / 0
Регистрация: 29.10.2011
Сообщений: 38
22.11.2011, 00:28     Циклы #1
Дано целое число а. Вывести все числа в диапазоне от 0 до а, которые делятся без остатка на 3, и сумму этих чисел. а вводит пользователь, и а меньше или равно 100.
Я так понял можно использовать любые циклы.
Вот мои попытки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main()
{
    int a;
    cout<<"Vvedite chislo:\n";
    cin>>a;
    while (a%3==0)
    {
        if (a<=100)
        {
            a++;
            a+a;
        }
    cout<<a;
    }
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2011, 00:28     Циклы
Посмотрите здесь:

C++ Циклы
циклы for, while C++
C++ циклы
C++ циклы
Циклы WHILE, DO-WHILE. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
22.11.2011, 00:38     Циклы #2
Цитата Сообщение от jock Посмотреть сообщение
Дано целое число а. Вывести все числа в диапазоне от 0 до а, которые делятся без остатка на 3, и сумму этих чисел. а вводит пользователь, и а меньше или равно 100.
Я так понял можно использовать любые циклы.
Вот мои попытки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main()
{
    int a;
    cout<<"Vvedite chislo:\n";
    cin>>a;
    while (a%3==0)
    {
        if (a<=100)
        {
            a++;
            a+a;
        }
    cout<<a;
    }
return 0;
}
У вас сразу же в коде встречается ошибка, так как само введенное число не обязано делиться на 3! И кроме того у вас непонятный код в теле цикла с увеличением значения переменной a и ее сложения самой с собой.

Должно быть

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
#include <iostream>
 
using namespace std;
 
int main()
{
   const int max_value = 100;
   int a;
 
   cout << "Vvedite chislo:\n";
   cin >> a;
 
   if ( max_value < a  ) a = max_value;
 
   int sum = 0;
 
   while ( a != 0)
   {
      if ( a % 3 == 0 )
      {
         cout << a << ' ';
         sum += a;
      }
      --a;
   }
 
   cout << "sum = " << sum << std::endl;
 
   return 0;
}
jock
2 / 2 / 0
Регистрация: 29.10.2011
Сообщений: 38
22.11.2011, 00:45  [ТС]     Циклы #3
Спасибо за помощь
Сыроежка
Заблокирован
22.11.2011, 00:49     Циклы #4
Цитата Сообщение от jock Посмотреть сообщение
Спасибо за помощь
Только я не обратил сразу же внимание, но вам следует везде тип int в объявлениях переменных поменять на тип unsigned int. Иначе пользователь может ввести отрицательное число, и алгоритм будет работать не так, как ожидается.
Yandex
Объявления
22.11.2011, 00:49     Циклы
Ответ Создать тему
Опции темы

Текущее время: 07:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru