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

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

Восстановить пароль Регистрация
 
Горелый
69 / 43 / 11
Регистрация: 20.03.2014
Сообщений: 177
11.07.2014, 18:40     Проверить корректность реализации нескольких задач #1
Добрый вечер всем.
Вопрос относиться к опытным программистам С++.

Вопрос такой. Я хотел устроится на вакансию 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-й задаче я выбрал между нагрузгой на ОЗУ(использование ещё одного массива) и нагрузкой на ЦПУ, выбрал ЦПУ, тоже возможно не прав.

Я бы хотел что бы знающие люди мне подсказали пути дальнейшего развития, более конкретно указали какие стороны С++ подтянуть, я из этих заданий не вижу, возможно мало опыта потому что.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.07.2014, 18:49     Проверить корректность реализации нескольких задач #2
На форуме уже был разбор точно таких же заданий. Тестовое задание на Junior C++ dev
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
11.07.2014, 19:18     Проверить корректность реализации нескольких задач #3
Цитата Сообщение от 0x10 Посмотреть сообщение
На форуме уже был разбор точно таких же заданий. Тестовое задание на Junior C++ dev
А я вот одного не пойму. Это тесты по C++, а люди пишут ответы на Си. В условии вроде бы не сказано, что STL нельзя использовать. Может быть их за незнание STL и бракуют?
deniska91
54 / 3 / 3
Регистрация: 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, чтобы не было переполнения
}
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.07.2014, 19:35     Проверить корректность реализации нескольких задач #5
Цитата Сообщение от Mr.X Посмотреть сообщение
Это тесты по C++, а люди пишут ответы на Си.
Из постановки задачи ясно, что требуется знание не библиотеки, а тривиальных алгоритмов. Иначе было бы оговорено специально. Задания решены либо неправильно, либо неоптимально, а массив там или вектор - непринципиально.
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
11.07.2014, 19:43     Проверить корректность реализации нескольких задач #6
Горелый, можешь кинуть сайт этой компании? Уж больно хочется попробовать )
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
11.07.2014, 19:48     Проверить корректность реализации нескольких задач #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Из постановки задачи ясно, что требуется знание не библиотеки, а тривиальных алгоритмов. Иначе было бы оговорено специально.
Так в том-то и дело, что в задании нет никаких специальных указаний, а все что не запрещено, то разрешено.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.07.2014, 19:51     Проверить корректность реализации нескольких задач #8
Цитата Сообщение от Mr.X Посмотреть сообщение
Так в том-то и дело, что в задании нет никаких специальных указаний, а все что не запрещено, то разрешено.
Наивное переписывание на stl не гарантирует корректность и оптимальность получившегося кода.
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
11.07.2014, 19:54     Проверить корректность реализации нескольких задач #9
Цитата Сообщение от 0x10 Посмотреть сообщение
Наивное переписывание на stl не гарантирует корректность и оптимальность получившегося кода.
Ну, сортировку можно было и стандартную применить, чего ее выдумывать-то?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.07.2014, 20:00     Проверить корректность реализации нескольких задач #10
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, сортировку можно было и стандартную применить, чего ее выдумывать-то?
Если не стоять на формальной ноге, а руководствоваться здравым смыслом, то задание с исходным данным в виде массива, подразумевающее его сортировку вызовом стандартной функции - само по себе глупо.

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

Не по теме:

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

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

Не по теме:

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

nmcf
4306 / 3727 / 1256
Регистрация: 14.04.2014
Сообщений: 14,599
11.07.2014, 20:29     Проверить корректность реализации нескольких задач #13
А почему прототипы не соответствуют? В задании просто указатели.
Горелый
69 / 43 / 11
Регистрация: 20.03.2014
Сообщений: 177
11.07.2014, 20:57  [ТС]     Проверить корректность реализации нескольких задач #14
Использовал ссылки на указатели что бы выделение памяти поместить в сам метод.
Например для первой задачи каким образом вернуть строку через параметр.

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

Добавлено через 41 секунду
Компания G5 Entertaiment.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.07.2014, 21:41     Проверить корректность реализации нескольких задач #15
Цитата Сообщение от Горелый Посмотреть сообщение
Например для первой задачи каким образом вернуть строку через параметр.
вам дали указатель по которому вы должны расположить результат, выделение памяти для строки не ваша забота не забота функции NumberAsBinary
Горелый
69 / 43 / 11
Регистрация: 20.03.2014
Сообщений: 177
13.07.2014, 02:43  [ТС]     Проверить корректность реализации нескольких задач #16
Jupiter, согласен.
Моё решение было аргументированно тем что туда могут передать буфер меньшей длинны чем требуется.
Мало опыта, буду учится.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.07.2014, 02:55     Проверить корректность реализации нескольких задач #17
Цитата Сообщение от Горелый Посмотреть сообщение
Моё решение было аргументированно тем что туда могут передать буфер меньшей длинны чем требуется.
да это понятно, но это их проблемы и тебя не должно это заботить
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;
}

SaweR
 Аватар для SaweR
29 / 29 / 1
Регистрация: 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). */
На работу меня не взяли.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 20:23     Проверить корректность реализации нескольких задач
Еще ссылки по теме:

C++ Проверить корректность расположения скобок
C++ Распарсить ввод структуры, проверить на корректность
C++ Проверить корректность заданной даты

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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,715
Записей в блоге: 3
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 ;
}
Хотя это уж точно зарубали бы.
Yandex
Объявления
13.07.2014, 20:23     Проверить корректность реализации нескольких задач
Ответ Создать тему
Опции темы

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