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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Serezha
24 / 20 / 1
Регистрация: 29.11.2012
Сообщений: 431
Записей в блоге: 1
#1

Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 - C++

24.01.2013, 20:37. Просмотров 3258. Ответов 32
Метки нет (Все метки)

Составил задачу которая только увеличивает на один ну тое сть выводит:1,2,3,4,...n
Пытаюсь изменить чтоб выводило квадрат и тут ......................почему не получается,я так понял вводится число n и оно должно умножиться на себя или нет???

Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio>
 
int main()
{
int m,n;
cout<<"Vvedite m"<<'\n';
cin>>m;
cout<<"Vvedite n"<<'\n';
cin>>n;
if (m<n)
{
for (int i=m; i<=n;i++)    /* по идее в цикле нужно изменять но ничего не получается*/
cout<<i<<" ";
}
else cout<<"takinetx chisel ";
    getch();
    return 0;
}
ответ должен быть по идее n=13
1.2.4.8.
n=-56
takinetx chisel
Спасибо всем кто поможет!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 20:37     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2
Посмотрите здесь:
C++ Напишите программу, которая выводит все простые числа, которые являются палиндромами
C++ Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000
C++ Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000
C++ Функция, которая для чисел от 0 до n выводит все числа, которые в двоичной записи являются палиндромами
C++ Написать программу, которая выводит в консоль все числа, кратные 3 в диапазоне от 0 до 100
C++ Написать программу, которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их
C++ Нужно написать программу которая выводит все простые числа с четным суммой цифр в диапазоне от K до N
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Serezha
24 / 20 / 1
Регистрация: 29.11.2012
Сообщений: 431
Записей в блоге: 1
25.01.2013, 00:46  [ТС]     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #21
Цитата Сообщение от ValeryS Посмотреть сообщение
Код C++
1
cout <<i<< " ";
перед числом
Код C++
1
cout << " "<<i
Блин точно спасибо!!

Добавлено через 5 минут
Полностью провельный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio>
 
int main()
{
int n,i;
cout<<"Vvedite n"<<'\n';
cin>>n;
if (i<n)
{
for(int i=1; i<n;i= i<<1)
cout <<" "<<i<< " ";
}
else cout<<"Takix chisel net ";
getch();
return 0;
}
Спасибо всем за принятое участие! А я буду учиться
LiveRos
62 / 67 / 1
Регистрация: 05.10.2012
Сообщений: 240
25.01.2013, 00:50     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #22
Ну и что это? У меня не работает, результат то какой?
Как работает оператор if (i<n), если только в теле цыкла for узнаем значение переменной і.
Serezha
24 / 20 / 1
Регистрация: 29.11.2012
Сообщений: 431
Записей в блоге: 1
25.01.2013, 00:52  [ТС]     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #23
Цитата Сообщение от LiveRos Посмотреть сообщение
Код C++
1
2
3
4
cin>>n;
*if (i<n)
*{
*for(int i=1; i<n;i= i<<1)
А это чтоб если ввести число с минусом то выбьет инфу Takix chisel net !!!
LiveRos
62 / 67 / 1
Регистрация: 05.10.2012
Сообщений: 240
25.01.2013, 00:55     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #24
и я не силен в математике но где тут степень?
MrGluck
Модератор
Эксперт CЭксперт С++
6998 / 4169 / 594
Регистрация: 29.11.2010
Сообщений: 11,050
25.01.2013, 01:00     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #25
LiveRos, i= i<<1 (i <<= 1 как в моем примере) побитовый сдвиг и осуществляет возведение во 2 степень.
LiveRos
62 / 67 / 1
Регистрация: 05.10.2012
Сообщений: 240
25.01.2013, 01:10     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #26
Запутался, выкиньте пожалуйста что ввели и результат.
Я переделал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
 int n,i=1;
 cout<<"Vvedite n"<<'\n';
 cin>>n;
 if (i<n)
    {
    for(; i<n;i= i<<1)
        cout <<" "<<i<< " ";
    }
    else cout<<"Takix chisel net ";
 return 0;
}
Ибо, как я уже описал выше, код Serezha у меня не работает.
Ввожу значение n=56
Программа выдала 1 2 4 8 16 32
MrGluck
Модератор
Эксперт CЭксперт С++
6998 / 4169 / 594
Регистрация: 29.11.2010
Сообщений: 11,050
25.01.2013, 01:13     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #27
LiveRos, у вас выдало степени двойки. Их надо куда то записать, а потом в цикле, проходя от 1 до n сверять с этими данными, и, если не совпадают, то выводить на экран.
Serezha
24 / 20 / 1
Регистрация: 29.11.2012
Сообщений: 431
Записей в блоге: 1
25.01.2013, 01:34  [ТС]     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #28
Прочтите задание у меня дана задача: Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2. вот она и выводит!!!
LiveRos
62 / 67 / 1
Регистрация: 05.10.2012
Сообщений: 240
25.01.2013, 02:09     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #29
протупил с заданием
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
 int n,x;
 cout<<"Vvedite x=";
 cin>>x;
 if(x>1)
    {
    for(int i=1;i<=x;i++)
        {
            n=pow(2,i);
            cout<<n<<'\n';
        }
    }
    else cout<<"NO!";
    return 0;
}
Так пойдет? Без побитовых сдвигов.
ValeryS
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,655
25.01.2013, 06:54     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #30
Цитата Сообщение от LiveRos Посмотреть сообщение
Без побитовых сдвигов.
Чем это сдвиги то тебе не угодили? пользоваться не умеешь
Цитата Сообщение от LiveRos Посмотреть сообщение
n=pow(2,i);
тему перечитай этот способ уже предложил miriganua
подумай какие есть у него недостатки?
плюс я еще три два со сдвигом, один с домножением

Serezha, принцип "Бритва Оккамы" знаешь?
"Не плодите сущности без необходимости" другими словами проще надо
зачем ты проверяешь какую то i ?? если для проверки отрицательных тебе нужно проверить больше нуля число или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
нет
#include <iostream>
#include <conio>
 
int main()
{
int n;
cout<<"Vvedite n"<<'\n';
cin>>n;
if (n>0)
 {
  for(int i=1; i<=n;i= i<<1)
  cout <<" "<<i<< " ";
 }
else 
 cout<<"Takix chisel net ";
getch();
return 0;
}
Добавлено через 27 минут
LiveRos,
у тебя кстати алгоритмическая ошибка

Цитата Сообщение от LiveRos Посмотреть сообщение
for(int i=1;i<=x;i++)
* * * * {
* * * * * * n=pow(2,i);
* * * * * * cout<<n<<'\n';
* * * * }
если введешь 9 то напечатает 2 4 8 16 32 64 128 256 512
вместо
2 4 8
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
25.01.2013, 08:55     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #31
можно написать так:
C++
1
for( int x = 1; x <= n; x*=2 ) cout<<x<<" ";
или так:
C++
1
for( int x = 1; x <= n; x = x<<1 ) cout<<x<<" ";
нормальный компилятор умножение на константу - степень двойки выполнит с помощью shl т.е. в обоих случаях мы получим что-то вроде:
Код
mov eax,dword ptr [x]
shl eax,1
поэтому пишите как вам понятнее x = x * 2, x *= 2, x = x << 1, x <<= 1 нормальный компилятор сгенерирует одинаковый код
MrGluck
Модератор
Эксперт CЭксперт С++
6998 / 4169 / 594
Регистрация: 29.11.2010
Сообщений: 11,050
25.01.2013, 09:14     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 #32
Цитата Сообщение от ValeryS Посмотреть сообщение
если введешь 9 то напечатает 2 4 8 16 32 64 128 256 512
вместо
2 4 8
точнее вместо 1 2 4 8.
Пропускается 0 степень.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2013, 11:50     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2
Еще ссылки по теме:
C++ Написать программу,которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их средн
составить программу, которая выводит на экран в строку числа от 1 до 10 и подсчитывает их сумму? C++
C++ Даны натуральные числа N, K, L (K<L). Вывести на экран все делители числа N, которые меньше K или больше L
Получить все меньшие 100 натуральные числа,которые являются палиндромами C++
Написать программу которая из 3 целых чисел выводит на экран те, которые являются четными C++

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

Или воспользуйтесь поиском по форуму:
LiveRos
25.01.2013, 11:50     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2
  #33

Не по теме:

ValeryS? не грузитесь, я не читал варианты решения задачи описанные выше, так как сам только изучаю плюсы решил выбрать какую-нибудь задачу из форума, дабы не плодить темы типа "Дайте задания чайнику".
Как новичок я ничего не знаю о "побитовых сдвигах", видимо не дочитал еще до этого раздела, либо там его вообще нет.
Насчет того что в моем решении пропускается 0-я степень - этого я не учел, а с отрицательными числами мой компиль вообще не хочет работать.

Yandex
Объявления
25.01.2013, 11:50     Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2
Ответ Создать тему
Опции темы

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