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

Рекурсия (алгоритм сжатия изображения методом Шеннон-Фано) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Запись в массив http://www.cyberforum.ru/cpp-beginners/thread832417.html
Всем привет! Задача: Есть сотрудники,id каждого надо запихнуть в массив. Сколько сотрудников заранее не известно. После добавления нового id будет предложение добавить еще одного сотрудника. Верно ли и можно ли делать так: Привожу зачаток программы, который добавляет новый элемент #include <iostream> #include <string.h>
C++ Передача параметров в функцию по ссылке • Реализовать функцию, обеспечивающую ввод данных с клавиатуры и их проверку на корректность; тип и диапазон значений определить самостоятельно. • Написать функцию, возвращающую наибольший общий делитель двух натуральных чисел. • Написать функцию сокращения дроби. • Написать функцию, вычисляющую сумму двух дробей, соответствующую своему варианту. Возвращаемая дробь должна быть несократимой.... http://www.cyberforum.ru/cpp-beginners/thread832390.html
C++ Подсчет количества слов с четным и не четным количеством букв в слове
люди помогите пожалуйста, понять не могу почему не правильно считает... нужно подсчитать количество слов с четным и не четным количеством букв в слове. #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <string> #include <limits> #include <locale> #include <Windows.h>
"Бесконечное" считывание из файла. ifstream; C++
Суть такая, функция записывает в файл данные из моего списка, на каждую строку. вот эта функция: void outputFile(){ Node<Anketa> *temp = head; ofstream file_obj("mylist.DAT"); for(int i = 0; i < l; i++){ file_obj<<temp->t.name<<endl <<temp->t.family<<endl <<temp->t.brith_Date<<endl <<temp->t.tel<<endl;
C++ В массиве 8 на 8 расставить по убыванию в столбцах элементы расположенные ниже побочной диагонали. http://www.cyberforum.ru/cpp-beginners/thread832329.html
В массиве 8 на 8 расставить по убыванию в столбцах элементы расположенные ниже побочной диагонали.(С++)
C++ Алгоритм шифрования DES Требуется написать программу реализующую симметричный алгоритм шифрования DES. В Инете много облазил сайтов, но так и не понял, какой тип данных шифруется - текст или любая информация? Не совсем понятно как будет видно что данные зашифрованы, вообще не знаю с чего начать писать прогу. Посоветуйте, пожалуйста, что-нибудь) подробнее

Показать сообщение отдельно
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328

Рекурсия (алгоритм сжатия изображения методом Шеннон-Фано) - C++

09.04.2013, 12:05. Просмотров 643. Ответов 0
Метки (Все метки)

Мне задали реализовать алгоритм сжатия изображения методом Шеннон-Фано. Доступ к пикселям получил. Подсчитал сколько всего в моём изображение пикселей с определённым значением. Рассчитал вероятность. (+Всё это дело записал в массив структур. Для компоненты r из rgb понадобился всего массив структур с размерностью 8. Сначала хочу закодировать одну компоненту так как задачу нахрапом не решить.+)
Вот моя структура:
C++ (Qt)
1
2
3
4
5
6
struct pixel{
int znach;//значение пикселя оно целое от 0 до 255
float ver;//вероятность появления в файле
bitset<4> bit; //эта вещь для записи кода вида 100 или 01 и т.п.
};
struct pixel list[8];
Массив структур отсортировал в порядке убывания их вероятностей. Это всё проверил робит как надо.
Далее основное:
вот мне надо создать код для каждой структуры. Цикл очень тяжёлый. Первый проход я сделал согласно алгоритму. А далее надо же рассматривать каждую подгруппу, а их уже две. Потом ещё если было разбиение. Простым делением на две группы(без учёта вероятности) код будет равномерным. Смысла нет. Мне надо именно сделать так чтобы всё робило по - настоящему. Надеюсь подскажете как тут быть с рекурсией.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
float sumver = 0.0;
float delen = 1.0;
int ff1 = 0;//подсчёт итераций записи "1"
int ff2 = 0;//подсчёт итераций записи "0"
 
for(int i = 0; i < 8; i++)
{
    sumver += list[i].ver;
    if((sumver < 0.5)||(i == 0)){//второе условие для того чтобы для первого значения всё равно записалась 1 даже    //если P > 0,5
    list[i].bit = true;
    ff1++;
    }
    else
    {
      list[i].bit = false;
      ff2++;
    }
    ////по окончанию жизни цикла получилось две группы
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru