Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/47: Рейтинг темы: голосов - 47, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 02.05.2018
Сообщений: 5

Вывести элементы массива, значения которых являются степенями числа 2

02.05.2018, 17:20. Показов 8807. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив целых чисел. Вывести элементы массива, значениями которых являются степени числа 2 (например, 16, 4, 64, 8, 128).
Поняла как сделать ввод и вывод массива, а остальное не знаю
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
#include 
#include 
#include 
#include "locale"
#define N 25
void stepeni_2(int *Array, int k)
{
int um=1;
printf("вывод элементов, индексы которых являются степенями двойки")
if(k>2)
{
printf("%d", Array[2]);
um=um*Array[2];
for int
}
//Ввод значений элементов массива.
void Enter_Array (int Array[], int &size)
{
while(1)
{
printf ("Введи размер массива (2 - %d): ", N);
scanf ("%d", &size);
if ((size >1) && (size <= N)) break;
else printf("Неверный ввод! \n");
}
printf ("Введи элементы массива: \n");
for (int i = 0; i < size; i ++) scanf ("%d", &Array [i]);
}
//Вывод значений элементов массива.
void Output_Array (int Array[], int size)
{
printf ("\n Массив – результат: \n ");
for (int i = 0; i < size; i ++) printf ("%d ", Array [i]);
}
int main()
{ 
int A[N], n;
printf ("Работа с массивами целых чисел")
Enter_Array(A,n);
stepeni_2(A,n);
Output_Array(A,n);
printf("числа, которые являются степенями двойки");
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2018, 17:20
Ответы с готовыми решениями:

Напечатать элементы массива, индексы которых являются степенями двойки (1,2,4,8,16.)
Дан целочисленный массив с количеством элементов n. Напечатать те его элементы, индексы которых являются степенями двойки (1,2,4,8,16...)....

Найти элементы массива, индексы которых являются степенями двойки
Дан целочисленный массив с количеством элементов n.напечатать те его элементы,индексы которых являются степенями двойки(1,2,4,8,16,...) ...

Массив: Вывести элементы, индексы которых являются степенями 2, упорядочив их в порядке возрастания
Сформировать случайным образом массив из 20 элементов и вывести на экран сначала весь массив, а затем только те элементы, индексы которых...

7
34 / 34 / 37
Регистрация: 21.06.2012
Сообщений: 152
02.05.2018, 20:22
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
#include <iostream>
#include <vector>
#include <iterator>
 
template<typename T>
auto operator >> (std::istream &stream, std::vector<T> &vector) noexcept -> decltype(stream)
{
    std::copy(std::istream_iterator<T>(stream),
                 std::istream_iterator<T>(),
                 std::insert_iterator<typename std::remove_reference<decltype(vector)>::type>(vector, vector.end()));
    return stream;
}
 
int main(int argc, char *argv[])
{
    std::vector<int> array;
 
    std::cout << "Введи элементы массива через пробел, end для заверщения ввода: " << std::endl;
    std::cin >> array;
 
    std::cout << "числа, которые являются степенями двойки" << std::endl;
    for (const auto &elem : array)
    {
        auto is_degree2(false);
        typename decltype(array)::value_type degree{1};
        while(degree != static_cast<decltype(degree)>(0) && is_degree2 != true){
            is_degree2 |= degree == elem;
            degree = degree << 1;
        }
        if (is_degree2)
            std::cout << elem << std::endl;
    }
 
    return 0;
}
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
03.05.2018, 00:01
Зачем так сложно проверять?
C++
1
2
3
4
for (const auto & elem: array) {
   if (elem & (elem - 1) == 0 && elem != 0)
      std::cout << elem;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.05.2018, 02:46
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int n;
    cout << "Enter n: "; cin >> n;
 
    int*a = new int[n];
 
    cout <<"Enter elements:\n";
 
    for (int i = 0; i < n; i++)
      cin >>a[i];
 
    for (int i = 0; i < n; i++)
      cout <<a[i]<<" ";
      cout <<endl;
      
    for (int i = 0; i < n; i++)      
    for (int j = 0; j < 32; j++) 
    if ((a[i]%2==0 ||a[i]==1)&&a[i]==pow(2, j)) cout <<a[i]<<" ";
    cout <<endl;
    delete[]a;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 02.05.2018
Сообщений: 5
03.05.2018, 12:45  [ТС]
Не понимаю, мы так не писали
0
Объявлятель переменных
 Аватар для SpBerkut
1225 / 411 / 321
Регистрация: 24.09.2011
Сообщений: 1,279
03.05.2018, 13:57
Цитата Сообщение от mat_for_c Посмотреть сообщение
Зачем так сложно проверять?
Действительно, можно ещё проще.
C++
1
2
3
4
5
for (const auto & elem: array) {
  if (!(elem & (elem - 1)) && elem) {
    std::cout << elem << ' ';
  }
}
1
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
03.05.2018, 15:01
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main()
 {
  int a=2,m[8]={2,54,1,31,8,128,45,4};
 
    for(int i=0;i<8;i++)
     {
       while(a<m[i])
          a*=2;
       if(m[i]==a)
          cout<<m[i]<<"\n";
       if(m[i]==1)
          cout<<m[i]<<"\n";
       a=2;
      }
   system("PAUSE");
   return 0;
 }
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
03.06.2018, 13:39
Лучший ответ Сообщение было отмечено Катерина 1 как решение

Решение

Катерина 1, здравствуйте! Вот еще вариант:

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
#include <bits/stdc++.h>
 
    using namespace std;
 
bool isPowOfTwo(int n) {
    for (int i = 1; i <= n; i *= 2)
        if (i == n) return true;
    return false;
}
 
int main() {
    int n;
    cout << "Enter an arrau size:\n";
    cout << "n = ";
    cin >> n;
    int* arr = new int[n];
    cout << "Enter an array:\n";
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    cout << "Target array:\n";
    for (int i = 0; i < n; i++) {
        if (isPowOfTwo(arr[i])) 
            cout << arr[i] << " ";
    }
    delete [] arr;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.06.2018, 13:39
Помогаю со студенческими работами здесь

Напечатать те элементы заданного целочисленного массива, индексы которых являются степенями двойки
Дан целочисленный массив с количеством элементов п. Напечатать те его элементы, индексы которых являются степенями двойки (1, 2, 4, 8, 16,...

Вычислить сумму элементов массива, которые являются степенями пятерки и индексы которых есть нечетные числа
ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ 1. Вычислить сумму элементов массива, которые являются степенями пятерки и индексы которых есть нечетные...

Вычислить сумму элементов массива, которые являются степенями пятерки и индексы которых есть нечетные числа.
Вычислить сумму элементов массива, которые являются степенями пятерки и индексы которых есть нечетные числа. помогите написать...

Одномерные массивы. Определить те его элементы, индексы которых являются степенями двойки
Здравствуйте,помогите пожалуйста заранее благодарю. Составить программу по обработке одномерного массива согласно условию. Дан...

Вывести элементы массива индексы которых являются полными квадратами
Помогите пожалуйста: Дан массив действительных случайных чисел a, размером n=100. Вывести на экран элементы массива индексы которых...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru