С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
130 / 70 / 25
Регистрация: 20.03.2014
Сообщений: 261
1

Проверить корректность реализации нескольких задач

11.07.2014, 18:40. Показов 1767. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер всем.
Вопрос относиться к опытным программистам С++.

Вопрос такой. Я хотел устроится на вакансию Junior Developer C++,
мне прислали тестовые задания:
Кликните здесь для просмотра всего текста

Задача 1.
Кликните здесь для просмотра всего текста

1. Распечатать произвольное число в двоичной системе исчисления.

Описание.

Написать функцию, принимающую на вход произвольное целочисленное значение и возвращающую

строку, содержащую его представление в двоичной системе исчисления.

Декларация.

C++
1
2
3
4
5
6
7
void NumberAsBinary(
 
 char * _result, // строка с результатом
 
 unsigned int _number // произвольное число
 
 )

Ожидаемый результат.


Например, для числа 13 данная функция должна вернуть строку "1101".

Проверка работы.


Решение должно демонстрировать работу функции на примере 10 случайных чисел в диапазоне 0 до 512.

Задача 2.
Кликните здесь для просмотра всего текста

2. Сгенерировать неупорядоченный массив целых чисел от 1 до N.

Описание.

Написать функцию, принимающую на вход произвольное целочисленное значение и возвращающую

массив, содержащий последовательность чисел от 1 до этого значения, в котором каждое число

последовательности находится в заведомо случайной позиции.

Декларация.

C++
1
2
3
4
5
6
7
void GenerateRandomArray(
 
 int * _result, // возвращаемый массив
 
 unsigned int _maxValue // максимальное число в последовательности
 
 )
Ожидаемый результат.

Например, 2 последовательных запуска данной функции с параметром 7 могут сгенерировать

последовательности вида

{2, 5, 7, 3, 4, 1, 6}

{5, 1, 3, 4, 6, 2, 7}

Проверка работы.

Решение должно демонстрировать работу функции на примере 4 случайных чисел в диапазоне от 5 до 15.

Задача 3.
Кликните здесь для просмотра всего текста

3. Сортировка массива.

Описание.

Написать функцию, принимающую в качестве параметра массив неупорядоченных целых чисел

(сгенерированный с помощью функции из задачи 2) и выполняющую его сортировку.

Декларация.

C++
1
2
3
4
5
6
7
void Sort(
 
 int * _values, // сортируемый массив
 
 unsigned int _count // количество элементов в массиве
 
 )
Ожидаемый результат.

Например, массив вида {2, 5, 7, 3, 4, 1, 6} будет преобразован данной функцией в {1, 2, 3, 4, 5, 6, 7}.

Проверка работы.

Решение должно демонстрировать работу функции на примере результатов, полученных при решении

задачи 2 (последовательностей, сгенерированных для 4 случайных чисел в диапазоне от 5 до 15).

Задача 4.
Кликните здесь для просмотра всего текста

4. Определить недостающее число в неупорядоченной последовательности целых чисел.

Описание.


Написать функцию, принимающую в качестве параметра массив неупорядоченных целых чисел

(сгенерированный с помощью функции из задачи 2) и определяющую значение последнего элемента в

массиве без доступа к нему.

Декларация.

C++
1
2
3
4
5
6
7
int GetMissingValue(
 
 const int * _values, // неупорядоченный массив целых чисел от 1 до _count
 
 unsigned int _count // количество элементов в массиве
 
 )
Ожидаемый результат.

Например, для последовательности {5, 7, 8, 3, 1, 9, 2, 6, 4} данная функция должна вернуть 4.

Проверка работы.

Решение должно демонстрировать работу функций на примере результатов, полученных при решении

задачи 2 (последовательностей, сгенерированных для 4 случайных чисел в диапазоне от 5 до 15).



Вот мои решения:
Кликните здесь для просмотра всего текста

Задача 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
 
using namespace std;
 
void NumberAsBinary(
    char *&_result, // строка с результатом
    unsigned int _number // произвольное число
);
 
int main(
    unsigned int argc,
    char **argv
)
{
  char *binstring;
  
  for(int i = 0; i < 10; i++)
  {  
    int number = rand()%513;
    NumberAsBinary(binstring, number);
    cout << number << " = " << binstring << endl;
    delete[] binstring;
  }
  return 0;
}
 
void NumberAsBinary(
    char *&_result,
    unsigned int _number
)
{  
  bool process = false;
  int i, j = 0;
  for (i = 31; i >= 0; --i)
  {
    if (!process && (1<<i & _number))          
    {
      _result = new char[i+2];
      process = true;    
    }
    if(process)
    {
      if(1<<i & _number)
        _result[j++] = '1';
      else
        _result[j++] = '0';
    }
  }
  _result[j] = '\0';
}

Задача 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
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
#include <iostream>
 
using namespace std;
 
void GenerateRandomArray(
    int *&_result, // возвращаемый массив
    unsigned int _maxValue // максимальное число в последовательности
);
 
int main(
    unsigned int argc,
    char **argv
)
{
  int *arr;
 
  for(int i = 0; i < 4; i++)
  {  
    int number = 5 + rand()%11;
    GenerateRandomArray(arr, number);
    cout << "{";
    for (int j = 0; j < number; ++j)
    {
      cout << arr[j];
      if(j < number - 1) cout << ",";
    }
    cout << "}" << endl;
    delete[] arr;
  }
 
  return 0;
}
 
void GenerateRandomArray(
    int *&_result,
    unsigned int _maxValue
)
{
  int p1, p2, t;
  _result = new int[_maxValue];
  for(int i = 0; i < _maxValue; ++i)
    _result[i] = i+1;
  
  for(int i = 0; i < _maxValue; ++i)
  {
    p1 = rand()%_maxValue;
    p2 = rand()%_maxValue;
    t = _result[p1];
    _result[p1] = _result[p2];
    _result[p2] = t;
  }
}

Задача 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
 
using namespace std;
 
void GenerateRandomArray(
    int *&_result, // возвращаемый массив
    unsigned int _maxValue // максимальное число в последовательности
);
void Sort(
    int * _values, // сортируемый массив
    unsigned int _count // количество элементов в массиве
);
 
int main(
    unsigned int argc,
    char **argv
)
{
  int *arr;
 
  for(int i = 0; i < 4; i++)
  {  
    int number = 5 + rand()%11;
    GenerateRandomArray(arr, number);
    cout << "       {";
    for (int j = 0; j < number; ++j)
    {
      cout << arr[j];
      if(j < number - 1) cout << ",";
    }
    cout << "}" << endl;
    Sort(arr, number);
    cout << "sorted {";
    for (int j = 0; j < number; ++j)
    {
      cout << arr[j];
      if(j < number - 1) cout << ",";
    }
    cout << "}" << endl << endl;
    delete[] arr;
  }
 
  return 0;
}
 
void Sort(
    int * _values, // сортируемый массив
    unsigned int _count // количество элементов в массиве
)
{
  for (int i = 0; i < _count; ++i)  
    for (int j = 0; j < _count; ++j)    
      if(_values[j] > _values[i])
      {
        int t = _values[i];
        _values[i] = _values[j];
        _values[j] = t;
      }
}
 
void GenerateRandomArray(
    int *&_result,
    unsigned int _maxValue
)
{
  int p1, p2, t;
  _result = new int[_maxValue];
  for(int i = 0; i < _maxValue; ++i)
    _result[i] = i+1;
 
  for(int i = 0; i < _maxValue; ++i)
  {
    p1 = rand()%_maxValue;
    p2 = rand()%_maxValue;
    t = _result[p1];
    _result[p1] = _result[p2];
    _result[p2] = t;
  }
}

Задача 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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
 
using namespace std;
 
void GenerateRandomArray(
    int *&_result, // возвращаемый массив
    unsigned int _maxValue // максимальное число в последовательности
);
int GetMissingValue(
    const int * _values, // неупорядоченный массив целых чисел от 1 до _count
    unsigned int _count // количество элементов в массиве
);
 
int main(
    unsigned int argc,
    char **argv
)
{
  int *arr;
  srand(11);
  for(int i = 0; i < 4; i++)
  {  
    int number = 5 + rand()%11;
    GenerateRandomArray(arr, number);
    cout << "       {";
    for (int j = 0; j < number; ++j)
    {
      cout << arr[j];
      if(j < number - 1) cout << ",";
    }
    cout << "}" << endl;    
    cout << "miss val = " << GetMissingValue(arr, number) << endl;    
    delete[] arr;
  }
 
  return 0;
}
 
void GenerateRandomArray(
    int *&_result,
    unsigned int _maxValue
)
{
  int p1, p2, t;
  _result = new int[_maxValue];
  for(int i = 0; i < _maxValue; ++i)
    _result[i] = i+1;
 
  for(int i = 0; i < _maxValue; ++i)
  {
    p1 = rand()%_maxValue;
    p2 = rand()%_maxValue;
    t = _result[p1];
    _result[p1] = _result[p2];
    _result[p2] = t;
  }
}
 
int GetMissingValue(
    const int * _values,
    unsigned int _count
)
{
  bool notexist;
  for(int j = 1; j <= _count; ++j)
  {
    notexist = true;
    for(int i = 0; i < _count - 1; ++i)
    {
      if(_values[i] == j)
      {
        notexist = false;
        break;
      }
    }
    if(notexist)
    {
      return j;
    }
  }
}



Сначала ответели что просто не прошел тест. Я потом добивался более внятного ответа и
Мне вот что ответили:
Судя по отчету по вашему заданию, могу сказать, вот что:
первая задача построена нелогично, вторая задача у вас не работает, третья и четвертая не оптимальны.


Скриншот консоли:
Кликните здесь для просмотра всего текста
Проверить корректность реализации нескольких задач


Согласен что в 3-й задаче я психанул и отсортировал всё пузырьком, тут мои грабли.
В 4-й задаче я выбрал между нагрузгой на ОЗУ(использование ещё одного массива) и нагрузкой на ЦПУ, выбрал ЦПУ, тоже возможно не прав.

Я бы хотел что бы знающие люди мне подсказали пути дальнейшего развития, более конкретно указали какие стороны С++ подтянуть, я из этих заданий не вижу, возможно мало опыта потому что.
1
Programming
Эксперт
9485 / 562 / 19
Регистрация: 12.04.2006
Сообщений: 11,671
Блог
11.07.2014, 18:40
Ответы с готовыми решениями:

Метод хорд - проверить корректность реализации кода
Приветствую, форумчане. Хочу обратиться к вам за помощью, вот еле написала программу для метода...

Простой консольный конвертер валют - проверить корректность реализации
Всем привет! Я новичок на вашем форуме, как и в C++. Изучаю его третий день. Вот решил подкрепить...

Проверить корректность реализации класса
есть ли шанс на жизнь у данного класса? И если да то как теперь вывести все на форму? class date ...

Delegate- проверить корректность реализации кода
class Program { delegate int KvadratTenlik(int i, int j, int k); static...

19
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.07.2014, 18:49 2
На форуме уже был разбор точно таких же заданий. Тестовое задание на Junior C++ dev
2
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
11.07.2014, 19:18 3
Цитата Сообщение от 0x10 Посмотреть сообщение
На форуме уже был разбор точно таких же заданий. Тестовое задание на Junior C++ dev
А я вот одного не пойму. Это тесты по C++, а люди пишут ответы на Си. В условии вроде бы не сказано, что STL нельзя использовать. Может быть их за незнание STL и бракуют?
1
54 / 3 / 2
Регистрация: 17.05.2014
Сообщений: 72
11.07.2014, 19:29 4
Я бы первую задачу решил бы примерно так:
C++
1
2
3
4
5
6
void NumberAsBinary(char * _result, unsigned int _number)
{
   std::bitset<32> bits(static_cast<_ULonglong>(_number));
   strcpy(_result, bits.to_string().c_str()); 
  // либо используя strcpy_s, чтобы не было переполнения
}
1
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.07.2014, 19:35 5
Цитата Сообщение от Mr.X Посмотреть сообщение
Это тесты по C++, а люди пишут ответы на Си.
Из постановки задачи ясно, что требуется знание не библиотеки, а тривиальных алгоритмов. Иначе было бы оговорено специально. Задания решены либо неправильно, либо неоптимально, а массив там или вектор - непринципиально.
1
22 / 19 / 6
Регистрация: 24.12.2012
Сообщений: 435
11.07.2014, 19:43 6
Горелый, можешь кинуть сайт этой компании? Уж больно хочется попробовать )
1
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
11.07.2014, 19:48 7
Цитата Сообщение от 0x10 Посмотреть сообщение
Из постановки задачи ясно, что требуется знание не библиотеки, а тривиальных алгоритмов. Иначе было бы оговорено специально.
Так в том-то и дело, что в задании нет никаких специальных указаний, а все что не запрещено, то разрешено.
1
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.07.2014, 19:51 8
Цитата Сообщение от Mr.X Посмотреть сообщение
Так в том-то и дело, что в задании нет никаких специальных указаний, а все что не запрещено, то разрешено.
Наивное переписывание на stl не гарантирует корректность и оптимальность получившегося кода.
1
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
11.07.2014, 19:54 9
Цитата Сообщение от 0x10 Посмотреть сообщение
Наивное переписывание на stl не гарантирует корректность и оптимальность получившегося кода.
Ну, сортировку можно было и стандартную применить, чего ее выдумывать-то?
1
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.07.2014, 20:00 10
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, сортировку можно было и стандартную применить, чего ее выдумывать-то?
Если не стоять на формальной ноге, а руководствоваться здравым смыслом, то задание с исходным данным в виде массива, подразумевающее его сортировку вызовом стандартной функции - само по себе глупо.

Добавлено через 1 минуту

Не по теме:

А вообще, эти задания - уровень не джуниора, а скорее уровня контрольной в школе.

1
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
11.07.2014, 20:07 11
Цитата Сообщение от 0x10 Посмотреть сообщение
Если не стоять на формальной ноге, а руководствоваться здравым смыслом, то задание с исходным данным в виде массива, подразумевающее его сортировку вызовом стандартной функции - само по себе глупо.
Ну вы все-таки какими-то своими интуитивными предположениями оперируете, но так как нет в задании никаких указаний, то они недоказуемы.
Давайте все-таки будем взаимно вежливы, не стоит в наших "высокоумных и глубоко теоретических" дискуссиях переходить на личности.
1
0x10
11.07.2014, 20:10
  #12

Не по теме:

Mr.X, да я не перехожу вроде. Ок, проехали.

0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.07.2014, 20:29 13
А почему прототипы не соответствуют? В задании просто указатели.
1
130 / 70 / 25
Регистрация: 20.03.2014
Сообщений: 261
11.07.2014, 20:57  [ТС] 14
Использовал ссылки на указатели что бы выделение памяти поместить в сам метод.
Например для первой задачи каким образом вернуть строку через параметр.

Да, прочитав ветку форума по ссылке из первого ответа вижу что нужно ещё подучить матчасть.

Добавлено через 41 секунду
Компания G5 Entertaiment.
2
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.07.2014, 21:41 15
Цитата Сообщение от Горелый Посмотреть сообщение
Например для первой задачи каким образом вернуть строку через параметр.
вам дали указатель по которому вы должны расположить результат, выделение памяти для строки не ваша забота не забота функции NumberAsBinary
1
130 / 70 / 25
Регистрация: 20.03.2014
Сообщений: 261
13.07.2014, 02:43  [ТС] 16
Jupiter, согласен.
Моё решение было аргументированно тем что туда могут передать буфер меньшей длинны чем требуется.
Мало опыта, буду учится.
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.07.2014, 02:55 17
Цитата Сообщение от Горелый Посмотреть сообщение
Моё решение было аргументированно тем что туда могут передать буфер меньшей длинны чем требуется.
да это понятно, но это их проблемы и тебя не должно это заботить
1
kylroma
13.07.2014, 17:30
  #18

Не по теме:

где такие задания дают? Мне вот сказали "изложить свои мысли в свободной форме" что делает этот код%-):

Кликните здесь для просмотра всего текста
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
 * qmap test
 * Author: Sergey Chaban <sergey.chaban@gmail.com>
 */
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stddef.h>
 
#include <math.h>
#include <float.h>
#include <memory.h>
#include <xmmintrin.h>
#include <emmintrin.h>
 
typedef __int16 I16;
typedef unsigned __int16 U16;
typedef __int32 I32;
typedef unsigned __int32 U32;
typedef __m128i IVEC;
 
static IVEC qstr_load(const char* pStr) {
    union {
        IVEC v;
        char c[16];
    } qs;
    qs.v = _mm_setzero_si128();
    for (int i = 0; i < 16; ++i) {
        char c = pStr[i];
        if (!c) break;
        qs.c[i] = c;
    }
    return qs.v;
}
 
static bool qstr_eq(IVEC qs0, IVEC qs1) {
    return _mm_movemask_epi8(_mm_cmpeq_epi8(qs0, qs1)) == 0xFFFF;
}
 
template <typename T, int TBL_SIZE=0x100, int MAX_NODE=0x400> class QMap {
protected:
    IVEC mKey[MAX_NODE];
    T mVal[MAX_NODE];
    I16 mLnk[MAX_NODE];
    I16 mTbl[TBL_SIZE];
    I32 mIdx;
 
    static U32 hash(IVEC qstr) {
        IVEC zero = _mm_setzero_si128();
        IVEC t0 = _mm_unpacklo_epi8(qstr, zero);
        IVEC t1 = _mm_unpackhi_epi8(qstr, zero);
        t1 = _mm_add_epi16(t0, t1);
        t0 = _mm_unpacklo_epi16(t1, zero);
        t1 = _mm_unpackhi_epi16(t1, zero);
        t1 = _mm_add_epi16(t0, t1);
        t0 = _mm_unpacklo_epi32(t1, zero);
        t1 = _mm_unpackhi_epi32(t1, zero);
        t1 = _mm_add_epi32(t0, t1);
        t0 = _mm_unpackhi_epi64(t1, zero);
        t1 = _mm_add_epi32(t0, t1);
        U32 h = _mm_extract_epi16(t1, 0);
        return h % TBL_SIZE;
    }
 
public:
    QMap() : mIdx(0) {
        int i;
        for (i = 0; i < TBL_SIZE; ++i) {
            mTbl[i] = -1;
        }
        for (i = 0; i < MAX_NODE; ++i) {
            mLnk[i] = -1;
        }
    }
 
    void put(const char* pKey, T val) {
        IVEC key = qstr_load(pKey);
        int h = hash(key);
        int idx = mIdx;
        if (idx >= MAX_NODE) {
            return;
        }
        if (mTbl[h] < 0) {
            mTbl[h] = idx;
        } else {
            h = mTbl[h];
            while (true) {
                if (mLnk[h] < 0) {
                    mLnk[h] = idx;
                    break;
                }
                h = mLnk[h];
            }
        }
        mKey[idx] = key;
        mVal[idx] = val;
        ++mIdx;
    }
 
    bool get(IVEC key, T* pVal) {
        int h = hash(key);
        int idx = mTbl[h];
        while (idx >= 0) {
            if (qstr_eq(key, mKey[idx])) {
                if (pVal) {
                    *pVal = mVal[idx];
                }
                return true;
            }
            idx = mLnk[idx];
        }
        return false;
    }
 
    bool get(const char* pKey, T* pVal) {
        IVEC key = qstr_load(pKey);
        return get(key, pVal);
    }
};
 
static int idx2val(int idx) {return idx*idx;}
 
static void qmap_test() {
    int i;
    int n = 100;
    char key[256];
    int val;
    QMap<int> map;
    for (i = 0; i < n; ++i) {
        val = idx2val(i);
        ::sprintf(key, "%d", val);
        map.put(key, val);
    }
 
    for (i = 0; i < n; ++i) {
        val = idx2val(i);
        ::sprintf(key, "%d", val);
        int mval = 0;
        if (map.get(key, &mval)) {
            if (mval != val) {
                ::printf("mismatch: %d != %d\n", mval, val);
            } else {
                ::printf("key = %s, val = %d\n", key, mval);
            }
        }
    }
}
 
int main() {
    qmap_test();
    return 0;
}

0
29 / 29 / 4
Регистрация: 29.09.2009
Сообщений: 177
13.07.2014, 17:37 19
Я кажется тоже делал эти тесты:
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
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
 
 
void NumberAsBinary(char* &_result, unsigned int _number)
{
    string bin;
    m:;
    auto residue = _number % 2;
    _number = _number / 2;
    bin = to_string(residue) + bin;
    if(_number != 0) goto m;
    _result = new char[bin.length() + 1];
    strcpy_s(_result, bin.length() + 1, bin.c_str());
}
 
int main()
{
    srand(static_cast<unsigned int>(time(0)));
    for(int i = 0; i < 10; i++)
    {
        char* bin = nullptr;
        unsigned int num = rand() % 512;
        NumberAsBinary(bin, num);
        cout << "radix 10: " << num << ", radix 2: " << bin;
        cout << endl;
        delete [] bin;
    }
    system("pause");
    return 0;
}
/*Компилятор: Microsoft Visual C++ 2012 (Update 3). */
На работу меня не взяли.
1
Комп_Оратор)
Эксперт по математике/физике
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.07.2014, 20:23 20
Горелый, здравствуйте.
Посмотрел 2 задание и не понял как генерятся случайные числа. Вот тут:
C++
1
2
 p1 = rand()%_maxValue;
    p2 = rand()%_maxValue;
разве не могут совпасть?
А демострация на 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
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
#include <iostream>
#include<ctime>
using namespace std;
 
void rand_array( size_t *variant, size_t variant_size, int diap_start, size_t diap_width){
int tmp(0);
int repeats=0;
for(size_t i = 0; i < variant_size; i++){
 
    do{
tmp = diap_start +rand()%(diap_width+1);
 
for(size_t j = 0; j < variant_size; j++){
    if(variant[j] == tmp){
        repeats = 1;        
        break;
    }
    else repeats = 0;
}
    }while(repeats);
variant[i] = tmp;
cout << variant[i] << " ";
}
}
 
int main(){
srand((size_t)time(0));
const int diap_start = 5;
const size_t diap_width = 10;
const size_t variant_size = 4;//для полной группы: diap_width+1
 
//массив последних чисел
size_t variant[variant_size]={0};
cout<<"\nLast numbers: "<<endl;
rand_array( variant, variant_size, diap_start, diap_width);
 
cout << endl;
 
for( int i = 0; i < variant_size; ++i){
cout<<"\nVarriant "<<i<<endl;
 
size_t *arr_tmp = new size_t[variant[i]+1];
rand_array( arr_tmp, variant[i], 1,  variant[i]-1);
delete [] arr_tmp ;
}
cout << endl;
cin.get();
return 0 ;
}
Хотя это уж точно зарубали бы.
1
13.07.2014, 20:23
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
13.07.2014, 20:23
Помогаю со студенческими работами здесь

Проверить корректность реализации динамического массива
Проверьте пожалуйста или я правильно сделал динамический массив!! #include&lt;iostream.h&gt;...

Проверить корректность реализации односвязного списка
Проверьте код, кому не сложно. Задача была реализовать односвязной список: функции создания,...

Ряд Тейлора - проверить корректность реализации
Помогите с рядом Тейлора, как проверить верно ли работает программа. Есть наработки. static void...

Класс Avtomobil - проверить корректность реализации кода
Подскажете правильно ли я написала программу? class Avtomobil { public string...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru