Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
gusar
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 21
1

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

10.11.2014, 10:01. Просмотров 1194. Ответов 5
Метки нет (Все метки)

Удалить элементы кратные 7. Добавить после каждого нечетного элемента массива элемент со значением 0.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2014, 10:01
Ответы с готовыми решениями:

Сформировать одномерный массив целых чисел, используя датчик случайных чисел
1) Сформировать одномерный массив целых чисел, используя датчик случайных...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел
1)Сформировать одномерный массив целых чисел, используя датчик случайных чисел....

Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел. ...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел
Сформировать одномерный массив целых чисел, используя датчик случайных...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел
Условие такое 1.Сформировать одномерный массив целых чисел, используя датчик...

5
D_in_practice
331 / 331 / 331
Регистрация: 02.10.2014
Сообщений: 666
10.11.2014, 11:34 2
Лучший ответ Сообщение было отмечено gusar как решение

Решение

Код на С++
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main(){
    
    srand(time(0));
    
    const int N = 10;
    const int A = 0;
    const int B = 99;
    int a[2 * N];
    int n = N;
    for (int i = 0; i < n; ++i){
        a[i] = A + rand() % (B + 1 - A);
        cout << a[i] << ' ';
    }
    cout << endl;
    
    for (int i = 0; i < n; ++i)
        if (a[i] % 7 == 0){
            for (int j = i; j < n - 1; ++j)
                a[j] = a[j + 1];
            --n;
        }
            
    for (int i = 0; i < n; ++i)
        if (a[i] % 2 == 1){
            ++n;            
            for (int j = n - 1; j > i + 1; --j)
                a[j] = a[j - 1];
            a[i + 1] = 0;
            ++i;            
        }       
                    
    for (int i = 0; i < n; ++i)
        cout << a[i] << ' ';    
    cout << endl;
}
1
Keter
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
10.11.2014, 12:11 3
D_in_practice, Опередили вы меня)

Мой вариант:

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
//cформировать одномерный массив целых чисел, используя датчик случайных чисел
//Удалить элементы кратные 7. Добавить после каждого нечетного элемента массива элемент со значением 0.
 
#include <iostream>
#include <ctime> // для работы rand
using namespace std;
 
int size = 0; // размер нашего массива
 
int main()
{
    srand(time(NULL)); // начальное значение для работы rand
 
    cout << "Enter integer value: "; // ввод пользователем размера массива.
    cin >> size; 
    int *array = new int[size]; // выделим память для массива.
 
    for (int i = 0; i < size; i++)
    {
        array[i] = rand()%100; // заполняем массив случайными числами от 0 до 99
        cout << array[i] << " "; // выводим элемент на экран
    }
    cout << endl;
 
    for (int i = 0; i < size; i++) 
    {
        if(array[i] % 7 == 0) // проверка на кратность семи
        {
            for (int j = i; j < size - 1; j++) // для всех элементов после i
            {
                array[j] = array[j+1]; // равен следующему
            }
        size--; // уменьшение размера массива
        }
    };
 
    for (int i = 0; i < size; i++) 
    {
        if(array[i] % 2 == 1) // проверка на нечетность
        {
            size++; // увеличение размера массива
            for (int j = size - 1; j > i + 1; j--) // cдвигаем следующие после i элементы, освобождаем место
            {
                array[j] = array[j-1];
            }
            array[i+1] = 0;
            i++; // перепрыгиваем через 0
        }
    };
 
    for (int i = 0; i < size; i++)
    {
        cout << array[i] << " "; // выводим элемент на экран
    }
 
    return 0;
}
хотелось бы узнать почему вы используете (++i ) вместо (i++), в чем различие? (конкретно в этом примере)
2
D_in_practice
331 / 331 / 331
Регистрация: 02.10.2014
Сообщений: 666
10.11.2014, 12:24 4
Keter,
У Вас может возникнуть проблема, колличество элементов в итоге может удвоиться:
было size = 3 : 1 3 5
стало size = 6 : 1 0 3 0 5 0
При этом увеличивая число элементов вы не выделяете для них память.
Я это заметил тк сам сделал ту же ошибку, но исправил.

Я стараюсь использовать ++i вместо i++, тк где прочитал что так быстрее.
В чем пока не уверен, но тк разницы для вычислений нет то и судить меня не кому.

Спасибо за коментарии.
0
ReinDeer
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
10.11.2014, 12:28 5
Цитата Сообщение от D_in_practice Посмотреть сообщение
Я стараюсь использовать ++i вместо i++, тк где прочитал что так быстрее.
Я, конечно, начинающий, но по моему ты сам слишком быстро прочитал. Операция ++;, быстрее относительно +=1;
А разницу i++ и ++i, ты используешь в разных ситуациях. Надо вначале прибавить, а потом сделать действие? Первый способ. Надо выполнить действие и увеличить i? Второй способ.
0
Keter
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
10.11.2014, 12:50 6
D_in_practice, хмм, а чтобы не было проблем с памятью - возможно ли сделать так?

C++
1
int *array = new int[size*2];
Ну то-есть заранее выделить память на этот случай.
0
10.11.2014, 12:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2014, 12:50

Сформировать одномерный массив целых случайных чисел
Сформировать одномерный массив целых случайных чисел. Удалить все элементы ,...

Задать массив из 10 вещественных чисел используя датчик случайных чисел
Подсчитать количество четных значений. Найти минимальный и максимальный...

Сформировать одномерный массив целых чисел, используя ввод данных с клавиатуры
Найти в массиве наибольшее число подряд идущих одинаковых элементов (например...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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