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

Проверка на количество единиц - C++

Восстановить пароль Регистрация
 
CatOnSide
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 63
30.05.2013, 17:43     Проверка на количество единиц #1
Как посимвольно проверить вводимое число на количество единиц?
допустим ввожу число из 16 символов и в функции func буду проверять проходя по кажому символу есть ли в нем единицы

C++
1
2
3
4
5
6
7
8
void main()
{
int ch[16]
cout << "Введите число\n\n";
cin >> hex >> ch;
ch2=func(ch);
cout<<hex<<"Количество единиц в числе:"<<ch2;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
30.05.2013, 17:50     Проверка на количество единиц #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
#include <string.h>
 
int uniCount(char *s)
{
    int i,c=0;
    for (i=0; i < strlen(s); i++) 
        if (*(s+i) == '1') c++;
    return c;
}
 
int main(int argc, char* argv[])
{
 
    char SS[100];
 
    cout << "Enter number : ";
    cin >> SS;
 
    cout << "Number of units is " << uniCount(SS) << endl;
    
    return 0;
}
CatOnSide
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 63
30.05.2013, 18:59  [ТС]     Проверка на количество единиц #3
спасибо)

Добавлено через 11 минут
Только все равно не показывает =(


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
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
void logfunc()
{
char ch[16];
char ch2;
cout << "Введите число\n\n";
cin >> hex >> ch;
ch2=uniCount(ch);
cout<<hex<<"Количество единиц в двоичном коде:"<<ch2;
}
 
int uniCount(char *s)
{
    int i,c=0;
    for (i=0; i < strlen(s); i++) 
        if (*(s+i) == '1') c++;
        if (*(s+i) == '2') c++;
        if (*(s+i) == '3') c=c+2;
        if (*(s+i) == '4') c++;
        if (*(s+i) == '5') c=c+2;
        if (*(s+i) == '6') c=c+2;
        if (*(s+i) == '7') c=c+3;
        if (*(s+i) == '8') c++;
        if (*(s+i) == '9') c=c+2;
        if (*(s+i) == 'A') c=c+2;
        if (*(s+i) == 'B') c=c+3;
        if (*(s+i) == 'C') c=c+2;
        if (*(s+i) == 'D') c=c+3;
        if (*(s+i) == 'E') c=c+3;
        if (*(s+i) == 'F') c=c+4;
        if (*(s+i) == '0') c=c+0;
    return c;
}
Добавлено через 7 минут
P.S. попробовал изменить тип переменной i на unsigned int, теперь рисует смайлы да всякую ерунду в выводе количества единиц
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
30.05.2013, 19:21     Проверка на количество единиц #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
#include <iostream.h>
 
int uniCounter (int n)
{
    int c=0;
    while (1)
    {
        if (n == 0) break;
        if ((n % 2) == 1) c++;
        n=n/2;
    }
    return c;
}
 
int main(int argc, char* argv[])
{
    int k;
    cout << "Enter number : ";
    cin >> k;
    cout << "Number of units in binary presentation is " << uniCounter(k)<< endl;
 
    return 0;
}
CatOnSide
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 63
30.05.2013, 23:23  [ТС]     Проверка на количество единиц #5
ну мне просто нужна была функция или её алгоритм который бы я потом мог применить, в задании по нахождению количества единиц в двоичном коде шестнадцатиричного числа, все получилось, изменил параметр в выводимом значении на интовый вместо чар =)
Yandex
Объявления
30.05.2013, 23:23     Проверка на количество единиц
Ответ Создать тему
Опции темы

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