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

Реализация алгоритма RLE - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что делает следующий код программы? http://www.cyberforum.ru/cpp-beginners/thread911817.html
Что делает следующий код программы: Int i; Int j; For(j=0; j<10; j++) {i=j;}
C++ библиотека openVC Здравствуйте не могу поставить на убунту 13 библиотеку openVC, вот мануал http://karytech.blogspot.ru/2012/05/opencv-24-on-ubuntu-1204.html выдает ошибку когда ввожу команду make root@Mozart:~/Загрузки/OpenCV-2.4.0# make Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_matrix_operations.cu.o In file included from... http://www.cyberforum.ru/cpp-beginners/thread911782.html
C++ подскажите какой ответ получится,не могу запустить!
#include"stdafx.h" #include<iostream> using namespace std; int main() { int x,y; x=1; y=50; y=y%x-89; if (y==0) {cout<<y+99;}
Генерация сочетаний C++
Всем привет. Давеча решал вот эту задачку на генерацию сочетаний, казалось бы ничего сложного. Сперва решил делать рекурсией. вот решение #include <iostream> using namespace std; int k,n;
C++ Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала http://www.cyberforum.ru/cpp-beginners/thread911728.html
Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала.
C++ Оператор == char ch = 255; if(ch==255) cout<<"Hello!"; Почему условие выдаёт false? Понятно что ch в данном случае равно -1 из-за переполнения, но если сравнивать побитово то эти выражения равны! Почему так? подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
25.06.2013, 20:07     Реализация алгоритма RLE
Дело в том, что javascript - нетипизированный язык, а С++ строготипизированный.
'a' - char
'a1' - char[]
Вам надо из одномерного массива char получить двумерный (массив строк)
Вот по простому:
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 <cmath>
#include <cstring>
#include <cstdlib>
 
int main()
{
    char arr[] = {'a','a','a','a','c','b','b','k','b','b','b','b'};
    const int size = sizeof(arr); // узнаем размер массива
    int counter = 1;
 
    // узнаем количество переходов от одной буквы к другой
    for (int i=1; i < size; i++)
        if (arr[i-1] != arr[i])
            counter++; // увеличиваем счетчик
 
    // создаем новый массив под шифрованные данные
    char **newArr = new char*[counter];
    int equal = 1; // количество повторений буквы
    int index = 0; // индекс массива, в котором формируем новые
 
    // пробегаемся по массиву и заталкиваем значения
    for (int i=1; i < size; i++)
    {
        // если предыдущая буква неравна или буква последняя
        if (arr[i-1] != arr[i] || i == size - 1)
        {
            // узнаем размер необходимой строки (буква и её число повторений)
            int length = 2 + log10(equal);
            newArr[index] = new char[length + 1];
            // добавляем сначала букву, а затем число, преобразованное в char*
            // после сдвигаем индекс
            newArr[index][0] = arr[i-1];
            // записываем преобразованное число в 10-ричной системе в строку
            itoa(equal, &newArr[index++][1], 10);
            equal = 0;
        }
        equal++;
    }
 
    // выводим на экран результирующий массив
    for (int i=0; i < counter; i++)
    {
        std::cout << newArr[i] << std::endl;
        // освобождаем память
        delete [] newArr[i];
    }
    delete [] newArr;
}
 
Текущее время: 14:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru