Skip to content

Commit 7c72ee8

Browse files
committed
fine comments added
1 parent 7ce187f commit 7c72ee8

2 files changed

Lines changed: 31 additions & 18 deletions

File tree

Variants/Lab_9/var_11/main.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
#include "sequence.h"
66

7-
int main() {
7+
int main()
8+
{
89
// вводим N
910
unsigned long long N;
1011
printf("Enter N: ");
1112
scanf("%llu", &N);
1213

1314
printf( // выводим результат
14-
"%llu -> bin: %s\nMax length: %d\n",
15-
N, dtoab(N), count_max_ones(N)
16-
);
15+
"%llu -> bin: %s\nMax length: %d\n",
16+
N, dtoab(N), count_max_ones(N));
1717
}

Variants/Lab_9/var_11/sequence.cpp

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,37 @@
11
#include "sequence.h"
22

33
// подсчет количества значащих бит в числе
4-
int count_bits(unsigned long long N) {
5-
int i = 2, p = 1;
4+
int count_bits(unsigned long long N)
5+
{
6+
int i = 2, bits = 1;
67
// определяем минимальную но достаточную..
78
// степень двойки (= кол-во бит)
8-
while (N >= i) {
9+
while (N >= i)
10+
{
911
// увеличиваем количество бит
10-
p += 1;
12+
bits += 1;
1113
// максимально возможное число при данном
1214
// количестве бит теперь в 2 раза больше
1315
i *= 2;
1416
}
15-
return p;
17+
return bits;
1618
}
1719

20+
// 32 100000 2^5
21+
// 31 011111 2^4
22+
1823
// конвертация uint64 в массив бит
19-
char *dtoab(unsigned long long N) {
24+
char *dtoab(unsigned long long N)
25+
{
2026
// определяем количество бит в числе
2127
int len = count_bits(N);
2228
// создаем массив для хранения бит
23-
char *arr = (char *) malloc((len + 1) * sizeof(char));
29+
char *arr = (char *)malloc((len + 1) * sizeof(char));
2430

2531
// записываем биты в массив (в правильном порядке)
26-
for (int i = 0; i < len; i++) {
32+
// слева направо, от старшего бита к младшему
33+
for (int i = 0; i < len; i++)
34+
{
2735
// записываем бит как char ('0' / '1')
2836
arr[len - i - 1] = '0' + (N & 1);
2937
// сдвигаем чтобы получить следующий бит
@@ -37,18 +45,23 @@ char *dtoab(unsigned long long N) {
3745

3846
// нахождение длины максимальной
3947
// последовательности из единиц
40-
int count_max_ones(unsigned long long N) {
48+
int count_max_ones(unsigned long long N)
49+
{
4150
// преобразуем число в двоичную строку
42-
char *bin = dtoab(N);
51+
char *str = dtoab(N);
4352
int max = 0, current = 0;
4453

4554
// проходимся по всем битам числа
46-
for (int i = 0; bin[i] != 0; i++) {
55+
for (int i = 0; str[i] != 0; i++)
56+
{
4757
// current = bin[i] == '1' ? current + 1 : 0;
48-
if (bin[i] == '1') {
58+
if (str[i] == '1')
59+
{
4960
current += 1;
50-
} else {
51-
current = 0;
61+
}
62+
else
63+
{
64+
current = 0;
5265
}
5366
// обновляем максимальную длину
5467
// max = current > max ? current : max;

0 commit comments

Comments
 (0)