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

Заархивировать файл, используя следующий алгоритм - C++

Восстановить пароль Регистрация
 
jung
2 / 2 / 1
Регистрация: 25.11.2009
Сообщений: 40
06.02.2010, 15:51     Заархивировать файл, используя следующий алгоритм #1
Заархивировать файл, используя следующий алгоритм: если в исходном файле встречается одиночный символ, не являющийся цифрой, то он просто переписывается в выходной файл. Если в исходном файле встречается несколько подряд идущих одинаковых символов, то вместо них в выходной файл вставляется следующая последовательность символов: символьная запись числа повторений символов, сам повторяемый символ. Если в исходном файле есть одиночные символы-цифры, то вместо них нужно в выходной файл записать последовательность из цифры "1" и самого символа-цифры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2010, 15:51     Заархивировать файл, используя следующий алгоритм
Посмотрите здесь:

C++ Организовать вычисление выражения, используя алгоритм польской записи
Используя алгоритм бинарного поиска определите C++
C++ Написать алгоритм Иосифа Флавия, используя очередь
Вычислить рекурсивным методом умножение двух целых положительных чисел p=a*b используя следующий алгоритм C++
C++ Файл: Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив
C++ Используя следующий фрагмент программы,введите перечисленные ниже слова из списка С содержащие ровно две буквы d
Венгерский алгоритм, используя дерево C++
C++ Используя алгоритм count_if посчитать количество чисел в массиве

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex83
 Аватар для Alex83
13 / 13 / 0
Регистрация: 06.02.2010
Сообщений: 19
06.02.2010, 17:34     Заархивировать файл, используя следующий алгоритм #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
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream.h>
#include<conio.h>
#include<stdlib.h>
#include <stdio.h>
char arp[]={'a','a','a','b','b','c','c','c','c','1','2','2','3','4','4','4','5','d','e','e','e'};
///это для примера , меняйте или дописывайте в массив своё......
//aaa,bb,cccc,1,22,3,444,5,d,eee;///// я так ,для визуальной понятности
bool dig(char a)///определяет: символ как цифра(вернет 1) или нет(вернет 0)
{
if((a=='0')||(a=='1')||(a=='2')||(a=='3')||(a=='4')||(a=='5')||(a=='6')||(a=='7')||(a=='8')||(a=='9'))
return 1;
else return 0;
return 0;
}
void proced(void)
{int as, p=0,ps=0;
p=0;as=sizeof(arp);
while(p<as)
{
    if((arp[p])==(arp[p+1]))// если у нас 2 символа подряд одинаковые....
    {
                for(ps=2;ps>0;ps++)
                {if(arp[p]!=arp[p+ps])break;}////то считаем их кол-во от 2-х до....
                cout<<ps<<"."<<arp[p]<<":"<<endl;////выводим "СЖАТОЕ" значение
                p=p+ps;///перемещаемся по архиву до нового символа
    }
    else////////если у нас одиночный символ , то
        {
            if(dig(arp[p])){cout<<"1."<<arp[p]<<":"<<endl;}////с разделителем "1."выводим цифру
            else{cout<<arp[p]<<":"<<endl;}/// и просто выводим символ.
            p++;/// двигаем дальше по массиву
        }
    
}   
 
}
void main(){
 
proced();// собственно вызов функции
getch();//ждем нажатия клавиш
}
Ну а разделители (":" или ".") или перевод строки - это просто для удобства чтения результата.
Убирайте , если не нужно.

Добавлено через 7 минут
На выходе у меня было вот такое....
C
1
2
3
4
5
6
7
8
9
10
3.a:
2.b:
4.c:
1.1:
2.2:
1.3:
3.4:
1.5:
d:
3.e:
Yandex
Объявления
06.02.2010, 17:34     Заархивировать файл, используя следующий алгоритм
Ответ Создать тему
Опции темы

Текущее время: 11:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru