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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Cmith
Сообщений: n/a
#1

Замена повторов в массиве - C++

15.07.2010, 22:02. Просмотров 603. Ответов 6
Метки нет (Все метки)

Имеется рандомный одномерный массив. Необходимо подсчитать количество повторяемых чисел, стоящих радом и заменить их.

Например:
дано: 5 -6 8 8 8 12 -62 0 0 0 0 0 0 0 6 12 8 -9 0 1
заменить на: 5 -6 N 3 8 12 -62 N 7 0 6 12 8 -9 0 1

8 8 8 -> N 3 8 (N-индикатор, 3-число повторов цифры 8)
0 0 0 0 0 0 0 -> N 7 0 (N-индикатор, 7-число повторов цифры 0)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 22:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена повторов в массиве (C++):

Найти количество повторов в массиве - C++
Как найти количиство повторов в массиве длиной вводимой с клавы? О_о

Замена чисел в массиве - C++
Как сделать задачу:Составить функцию, заменяет в одномерном массиве заданного размера из единиц и нулей все единицы на нули и все нули -...

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

Замена значения в массиве - C++
Добрый вечер, уважаемые знатоки. Только что решал задачу на массивы и столкнулся со следующей проблемой: Допустим, мне нужно вытащить из...

Замена символов в массиве - C++
Продолжая переводить лабы из паскаля в C++ Имеем такой код на паскале: var a:string; p,i:byte; begin writeln('введи текст для...

Замена элементов в массиве - C++
дан массив 50 на 50. было задание заполнить его случайными числами в диапазоне от -100 до 100 и отсортировать в порядке возрастания. это я...

6
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
15.07.2010, 22:06 #2
напоминает RLE-кодирование
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
16.07.2010, 00:15 #3
PointsEqual, это и есть RLE, только в нем не применяются индикаторы
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
16.07.2010, 01:49 #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
#include <iostream>
#include <string>
#include <sstream>
#include <conio.h>
 
std::string inttostring(int x){
    std::stringstream ss;
    std::string str;
    ss << x;
    ss >> str;
    return str;
}
 
std::string rlecode(std::string &str){
    size_t cnt=1;
    std::string result;
    result.clear();
 
    int i=0;
    while(i<(str.size())){
        if(str[i]==str[i+1])
            ++cnt;
        else{
            result+=("N"+(str[i]+inttostring(cnt)));
            cnt=1;
        }
        ++i;
    }
    return result;
}
 
 
int main()
{
    std::string text("114445588888222222222222222222222222222222");
 
    std::cout<<"Start:   "<<text<<std::endl;
    std::cout<<"Result:  "<<rlecode(text);
 
    getch();
    return EXIT_SUCCESS;
}
0
Миниатюры
Замена повторов в массиве  
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.07.2010, 01:55 #5
PointsEqual, Чуть иначе таки. А то не по заданию. Должно быть N кол-во чисел число, а не N число кол-во чисел.
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
16.07.2010, 02:00 #6
По ходу возник вопрос: вот получился ответ ... ...N230, (тридцать двоек) , а если расшифровывать обратно строку,то как определить что это именно тридцать двоек ? вот если было бы N453 - это 53_четверки или 3_по 45?

Добавлено через 2 минуты
Цитата Сообщение от Lavroff Посмотреть сообщение
Должно быть N кол-во чисел число, а не N число кол-во чисел.
поменять
C++
1
result+=("N"+(str[i]+inttostring(cnt)));
на
C++
1
result+=("N"+(inttostring(cnt)+str[i]));
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
16.07.2010, 08:30 #7
PointsEqual, вот по этому в RLE смотрят максимальный размер числа и используют именно столько байт для его хранения и берут определенное число байт для количества повторов. Например, 2байта_количество повторов 3байта_число и потом по байтам считывают и преобразовывают
1
16.07.2010, 08:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 08:30
Привет! Вот еще темы с ответами:

Замена чисел в одномерном массиве - C++
Помогите пожалуйста. Дан одномерный массив X.Замените в нем все элементы меньше 5 числом 111.

Замена элементов в двумерном массиве - C++
В общем, всем здравствуйте. Проблема такая - написал код, который должен заменять элементами из верхнего синего треугольника элементы...

Замена столбцов в двумерном массиве - C++
Дана матрица размера M x N. Поменять местами столбцы, содержащие минимальный и максимальный элементы матрицы.

Замена отрицательных элементов в массиве - C++
Народ, кто может, помогите с задачей - завтра сдавать Заменить все отрицательные элементы в массиве вещественных чисел последовательно...


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

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

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