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

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

Войти
Регистрация
Восстановить пароль
 
Jock109
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 21
#1

Посчитать количество единиц, стоящих на четных местах и количество нулей, стоящих на нечетных местах - C++

24.03.2014, 21:37. Просмотров 540. Ответов 7
Метки нет (Все метки)

Дана двоичная запись числа. Посчитать количество единиц, стоящих на четных местах и количество нулей, стоящих на нечетных местах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2014, 21:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Посчитать количество единиц, стоящих на четных местах и количество нулей, стоящих на нечетных местах (C++):

В массиве найти количество "единиц", стоящих на четных местах - C++
Дан массив из 5 элементов. Найти количество "единиц", стоящих на четных местах.

Найти сумму компонент вектора, стоящих на четных местах и произведение компонент, стоящих на нечетных - C++
Помогите пожалуйста написать программу: Найти сумму компонент вектора Y=(y(1), y(2)...y(10), стоящих на четных местах и произведение...

Вывод чисел, стоящих на четных местах, в десятичной с.с., а чисел, стоящие на нечетных местах, как вещественных с одним знаком после запятой - C++
В файле a.txt задано 10 целых чисел в восьмеричной системе счисления. Выведите числа, стоящие на четных местах в десятичной системе...

Найти сумму и количество положительных элементов массива В(13) стоящих на четных местах - C++
Найти сумму и количество положительных элементов массива В(13) стоящих на четных местах

В массиве найти количество элементов, стоящих на четных местах, удовлетворяющих условию a<ti<b - C++
В массиве t(30), сформированном случайным образом, найти количество элементов, стоящих на четных местах, удовлетворяющих условию a&lt;ti&lt;b,...

Указатели. Найти количество элементов, стоящих на четных местах, удовлетворяющих условию - C++
Доброго времени суток! Помогите пожалуйста написать программу! В массиве t(30), сформированном случайным образом, найти количество...

7
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
24.03.2014, 21:39 #2
создаёшь переменную типа char, в цикле по символу проверяешь, если единица и если номер символа делится на 2 без остатка, почти так же для нулей
0
Jock109
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 21
24.03.2014, 21:44  [ТС] #3
Ну вроде понятно, а если у меня изначально даны числа в десятичном, а потом я перевожу в двоичную, как дальше быть ?

Пример программы
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
57
58
#include <iostream>
#include <ctime>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
 
const int n=8;
 
class Base
{
protected:
    unsigned short int arr[n];
public:
    Base(int a, int b)
    {
        srand(time(NULL));
        b++;
        for (int i=0;i<n;i++)
        {
            arr[i]=(a+rand()+rand()%(b-a));
        }
    };
    Base()
    {
        for (int i=0;i<n;i++)
        {
            arr[i]=(rand()+rand());
        }
    };
    void ShowD() // Вывод в десятичной системе
    {
        for (int i=0;i<n;i++)
        {
        cout<<arr[i]<<'\n';
        }
    };
 
    void ShowB() // Вывод в двоичной системе
    {
    int c;  
    for (int i=0;i<n;i++)
        {           
        c = arr[i];
        printf("%5d",arr[i]);
        cout<<" "; 
        for (int j=15;j>=0;j--) 
        {   
            if (((c) & 0x8000)==0)
                cout<<'0'; 
            else
                cout<<'1';
            c=c<<1;     
        }   
        cout<<"\n";
        }
    cout<<"\n";
    };
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
24.03.2014, 21:46 #4
Цитата Сообщение от Jock109 Посмотреть сообщение
Ну вроде понятно, а если у меня изначально даны числа в десятичном, а потом я перевожу в двоичную, как дальше быть ?
А в чём проблема? Если ты переводишь в 2-ю систему, а потом цикл и т.д.
0
Jock109
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 21
24.03.2014, 21:50  [ТС] #5
Я пытался сделать через маску. Сначала умножал на 0х008 и если 1, то увеличивал количество единиц, потом сдвигал данное число на 2 бита вправо, этим определял четность, или я мыслю неправильно?
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
24.03.2014, 21:53 #6
Ой, к чему всё это)
Если у тебя массив, как я смотрю, то как-то так
C++
1
2
3
4
5
6
7
for(int i = 0; i < "кол-во эл-ов"; i++)
{
if(mass[i] == 1 && i mod 2 == 0)
kol1++;
if(mass[i] == 0 && i mod 2 != 0)
kol0++;
}
А если у тебя переменная, то
C++
1
2
3
4
5
6
7
for(int i = 0; i < "кол-во символов"; i++)
{
if(Text[i] == 1 && i mod 2 == 0)
kol1++;
if(Text[i] == 0 && i mod 2 != 0)
kol0++;
}
0
Jock109
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 21
24.03.2014, 22:09  [ТС] #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    void Record()
    {
        int kol1=0; 
        int kol0=0;
        int d;
 
        for(int i=0;i<n;i++)
        {
            d = arr[i];
            if(d == 1 && i % 2 == 0)
                kol1++;
            if(d == 0 && i % 2 != 0)
                kol0++;
        }
        cout<<"Количестов единиц = "<<kol1<<endl;
        cout<<"Количество нулей = "<<kol0<<endl;
 
    };
Написал вот так, но программа выдает значения по 0
0
IrineK
Заблокирован
25.03.2014, 00:46 #8
Получаем строку из 0 и 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 <iostream>
#include <cmath>
#include <ctime>
 
using namespace std;
 
void IntToBinary (char *res, int x, int size)
{   int i = size;
    res[i] = '\0';
    while (--i>-1)
    {   res[i] = x%2 + 48;
        x /= 2;
    }
}
 
int main()
{   srand ((unsigned int) time (NULL));
    int x = rand()%100;
    int size = (int) (floor (log(1.*x) / log(2.))) + 1;
    char *res = new char [size+1];
    
    IntToBinary (res, x, size);
 
    cout<<x<< '\t'<<res;
 
    delete [] res;
    getchar();
    return 0;
}
Затем - понятно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 00:46
Привет! Вот еще темы с ответами:

Ввести с клавиатуры массив. Найти количество отрицательных элементов стоящих на четных местах - C++
Ввести с клавиатуры массив. Найти количество отрицательных элементов стоящих на четных местах. :scratch:

В массиве, сформированном случайным образом, найти количество элементов, стоящих на четных местах - C++
Помогите сделать указатель. В массиве t(30), сформированном случайным образом, найти количество элементов, стоящих на четных местах,...

Указатели. В массиве найти количество элементов, стоящих на четных местах, удовлетворяющих условию - C++
Помогите пожалуста,препод говорит из этого массива надо сделать указатель, а я не могу понять чё надо изменить(( В массиве t(30),...

В текстовом массиве, посчитать сумму длин элементов, стоящих на четных местах - C++
В текстовом масиве, пощитать суму длин елементов што стоят на парных местах


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
25.03.2014, 00:46
Ответ Создать тему
Опции темы

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