Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 23.05.2015
Сообщений: 9

В массиве после каждого числа, состоящего из одинаковых цифр, вставить еще одно такое же число

31.05.2015, 11:02. Показов 2214. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В массиве целых положительных чисел после каждого числа, состоящего из одинаковых цифр, вставить еще одно такое же число.

Зараннее спасибо.Я чайник если можно то решение задачи в "лоб".

Добавлено через 31 минуту
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
#include<iostream>
using namespace std;
void main()
{
    int x[5] = { 121, 44, 33, 15, 5 }, i, y[5];
int a, b, c, f;
for (i = 0; i < 5; i++)
{   cout << x[i] << " "; 
cout << endl;
}
for (i = 0; i < 5; i++)
{
    c = x[i];
    b = x[i] % 10;
    c = c / 10;
    f = 1;
    for (c != 0)
    {
        a = c % 10;
        if (a != b)
            f = 0;
        c = c / 10;
    }
    if (f==1)
 
}
 
    for (i = 0; i < 5; i++)
        cout << c << " ";
    system("pause");
}
Помогите я Чайник
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2015, 11:02
Ответы с готовыми решениями:

В массиве после каждого числа, состоящего из одинаковых цифр, вставить еще одно такое же число
Задача из раздела - Регулярные типы данных. В массиве целых положительных чисел после каждого числа, состоящего из одинаковых цифр,...

После каждого элемента массива состоящего из одинаковых цифр вставить заданное число
Дан массив положительных чисел а1,а2,а3…аN . Вставить в него после каждого числа, состоящего из одинаковых циф #include...

Вставить после каждого положительного числа в одномерном массиве число 0
Вставить после каждого положительного числа в одномерном массиве число 0

15
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 11:26
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
int main(){ 
    int N=5;
    int *a = new int[N];
    for (int i = 0; i < N; i++)
        cin >> a[i];
    int f = 1;
    for (int i = 0; i < N; i++){
        int t = a[i];
        int x = t % 10; t /= 10;
        while (t){
            if (t % 10 != x){
                f = 0; break;
            }
            x = t % 10; t /= 10;
        }
        if (f){
            N++;
            for (int j = N-1; j > i+1; j--){
                a[j] = a[j - 1];
            }
            a[i + 1] = a[i];
            i++;
        }
        f = 1;
    }
    for (int i = 0; i < N; i++)cout << a[i] << " ";
    return 0;
}
Добавлено через 1 минуту
и да такая тема уже была,с точно таким же кодом как у вас ,неужели сложно туда заглянуть
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
31.05.2015, 11:49
нельзя так. Утечка.

на UB похоже
Dimension,

vector, realloc или new int[N*2]
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 11:50
Цитата Сообщение от daslex Посмотреть сообщение
нельзя так. Утечка.
чего утечка ?норм вроде все
0
31.05.2015, 11:53

Не по теме:

Ну по идее норм, но споры тут на форуме были. Типа надо ли delete перед выходом из программы. (там где new, разумеется)
По логике надо, хотя менеджеры памяти и могут сами этим заниматься.
По стандарту - однозначно надо.

А на UB потому что выход за пределы массива.

0
0 / 0 / 0
Регистрация: 23.05.2015
Сообщений: 9
31.05.2015, 11:57  [ТС]
Я чайник если можно то решение задачи в "лоб" !
я не понял ничего из того что ты написал,ты можешь написать через void main()?
а не через int main() мы же ничего не возвращаем через return();
и я не понял для чего нужно break;
и как в условие if может быть только одно значение не сравнивая его с другим ?
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 12:02

Не по теме:

Цитата Сообщение от daslex Посмотреть сообщение
надо ли delete перед
ну это да ,согласен



Добавлено через 3 минуты
Цитата Сообщение от Шапеев Дмитрий Посмотреть сообщение
решение задачи в "лоб"
это и так в лоб,если нашли число в которым цифры одинаковые ,то увеличим размер массива для нового числа ,переместим все элементы которые находятся справа от числа с одинаковыми цифрами вправо на еденицу,так у нас найдется пустое местечко под новое число ,вставим его в это место ,увеличим i на единицу ,что бы не проверять число которое мы только что вставили
Цитата Сообщение от Шапеев Дмитрий Посмотреть сообщение
а не через int main() мы же ничего не возвращаем через return();
какая разница ,я ноль возвращаю )
Цитата Сообщение от Шапеев Дмитрий Посмотреть сообщение
и я не понял для чего нужно break;
если в числе хоть какие то цифры отличаются то не имеет смысла проверять его дальше ,можно перейти к другому числу
0
0 / 0 / 0
Регистрация: 23.05.2015
Сообщений: 9
31.05.2015, 12:05  [ТС]
как в условие if может быть только одно значение не сравнивая его с другим ?
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 12:05
Цитата Сообщение от Шапеев Дмитрий Посмотреть сообщение
и как в условие if может быть только одно значение не сравнивая его с другим ?
if проверяет истина или нет ,1-истина 0-не истина ,а f у нас может быть либо 1 либо 0 if(f) одно и тоже что и if(f==1)
0
0 / 0 / 0
Регистрация: 23.05.2015
Сообщений: 9
31.05.2015, 12:09  [ТС]
а это t /= 10; одно и тоже t=t/10;

Добавлено через 1 минуту
и цикл с одни условие while (t) как так ?
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 12:11
Цитата Сообщение от Шапеев Дмитрий Посмотреть сообщение
а это t /= 10; одно и тоже t=t/10;
да
Цитата Сообщение от Шапеев Дмитрий Посмотреть сообщение
и цикл с одни условие while (t) как так ?
while работает пока истина ,мы же делим t на 10 ,в конце концов t будет равен 0 ,а это по логике ложь ,тогда while прекратит свою работу
0
0 / 0 / 0
Регистрация: 23.05.2015
Сообщений: 9
31.05.2015, 12:23  [ТС]
int *a = new int[N]; что это ?

Добавлено через 6 минут
int *a = new int[N]; что это ?
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 12:28
динамический массив ,почитайте в инете про массивы
0
31.05.2015, 14:09

Не по теме:

Dimension, Похоже Вам нравится, что предлагаемые вами решения упадут когда не надо и Вы решили не обращать внимания на то, о чем я сказал. Данное решение неправильно, потому что упадет.

Проверьте сами ваш код на большом массиве, например в 10.000 элементов. Первоначально заполнив его случайно.

0
31.05.2015, 14:26

Не по теме:

Цитата Сообщение от daslex Посмотреть сообщение
Dimension, Похоже Вам нравитс
вообще-то я с вами согласился ,я мог бы тупо сделать размер в два раза больше или использовать другой массив,но захотелось без нужды не тратить память

0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
31.05.2015, 15:18
Пофиг на минус, лишь бы плохие примеры не научили людей дурному.
Этот пример периодически будет попадать на глаза других людей, умеющих пользоваться поиском.
Вот их-то и можно случайно научить дурному. Это нехорошо.
Поэтому я настаивал на правильном примере.

Не по теме:

И я не экстрасенс, я видел, что согласие было для delete, а не для всего выссказывания



Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main(){
 
    const int N=20; //N должно быть обязательно в 2 раза больше чем обрабатываемый массив
    int count_arr=10; //Действительное число элементов в массиве
 
    int Arr[N]={-98,887,0,77,778,777,23,-23,-111,-8};  //Должно быть count_arr элементов, если меньше, то дозаполнится нулями
    int y1,y2;  //Цифры из числа для сравнения
    int temp;   //Число из массива
 
    for (int i=0;i<count_arr;i++) {  //Обход массива
        temp=fabs(Arr[i]);
        if (temp>=10){
            y1=temp%10;
            while (temp){
                y2=temp%10;
                if (y1-y2) break;   //Если цикл прервется раньше времени, temp не будет нулем
                temp/=10;
            }
        }
 
        if (!temp || fabs(Arr[i])<10) {         //Вставка элемента в массив если число из одинаковых цифер
                count_arr++;
                for (int j = count_arr-1; j > i+1; j--){  //Значения копируются от конца к началу,
                    Arr[j] = Arr[j - 1];                  //Полуается нечто вроде сдвига блока вправо для освоблждения ячейки массива для вставки в него копии числа
            }
                Arr[i + 1] = Arr[i];        //Вставка копии числа в нужную ячейку.
                i++;
        };
    }
 
    for (int i=0;i<count_arr;i++) cout<<Arr[i]<<"  ";  //Вывод массива на экран
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2015, 15:18
Помогаю со студенческими работами здесь

В массиве вставить после каждого второго элемента минимальное непростое число
Задан массив Y(k) целых чисел. Если он упорядочен, оставить его без изменения. Если массив не упорядоченный, то вставить после каждого ...

Вставить в линейном массиве число a после каждого из элементов, в которых есть цифра 5
Задача: Дан целочисленный линейный массив. Вставить в него число a после каждого из элементов, в которых есть цифра 5. Необходимо сделать...

Массив. Вставить число 5 после каждого четного числа
Вот наработок. Выдает ошибку: Индекс находится вне границ массива. var x:array of integer; i,j,n:integer; begin write('Ведите...

После каждого элемента с четным числом вставить элемент, содержащий сумму цифр числа
Сформировать список из N целочисленных случайных элементов (N- вводится пользователем ,значения элементов выбирать из диапазона от 0 до 99...

В целочисленном массиве после каждого четного числа вставить максимальный элемент массива
В целочисленном массиве X(N) после каждого четного числа вставить максимальный элемент массива. Найти среднее арифметическое элементов...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru