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

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

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

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

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

Добавлено через 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2015, 11:02
Ответы с готовыми решениями:

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

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

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

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

15
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 11:26 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
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,882
31.05.2015, 11:49 3
нельзя так. Утечка.

на UB похоже
Dimension,

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

Не по теме:

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

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

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

Не по теме:

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



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

Добавлено через 1 минуту
и цикл с одни условие while (t) как так ?
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 12:11 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  [ТС] 12
int *a = new int[N]; что это ?

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

Не по теме:

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

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

0
Dimension
31.05.2015, 14:26
  #15

Не по теме:

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

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

Не по теме:

И я не экстрасенс, я видел, что согласие было для 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
31.05.2015, 15:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2015, 15:18
Помогаю со студенческими работами здесь

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru