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

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

Войти
Регистрация
Восстановить пароль
 
jung
2 / 2 / 1
Регистрация: 25.11.2009
Сообщений: 40
#1

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

06.02.2010, 15:51. Просмотров 582. Ответов 1
Метки нет (Все метки)

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

Вычислить рекурсивным методом умножение двух целых положительных чисел p=a*b используя следующий алгоритм - C++
p=2*(a*b/2), если b парное p=a+a*(b-1) ,если b непарное p=0, если b=0

Используя следующий фрагмент программы,введите перечисленные ниже слова из списка С содержащие ровно две буквы d - C++
Ребят помогите.нужно написать прогу на С++.Проблема со строками я вообще без понятия как делать.Нужно сделать как я понял через char...

Венгерский алгоритм, используя дерево - C++
Есть такая задачка: Проблема назначения формулируется так: есть n людей, назначаемых на n работ. Стоимость назначения i-человека на...

Используя алгоритм бинарного поиска определите - C++
Используя алгоритм бинарного поиска определите , содержит ли ранее упорядоченный массив заданное действительное число. Если содержит ,...

Написать алгоритм Иосифа Флавия, используя очередь - C++
Сущ-т легенда что Иосиф Флавий выжил и стал известным благодоря математической одаренности. В ходе Иудейской войны он в составе отряда из...

Используя алгоритм count_if посчитать количество чисел в массиве - C++
Помогите с заданием! Используя алгоритм count_if посчитайте количество чисел в массиве, которые по модулю меньше 4. #include...

Алгоритм вычисления числа сочетаний, используя рекуррентную формулу - C++
Запрограммировать рекурсивный алгоритм вычисления числа сочетаний, используя рекуррентную формулу

Упорядочить массив a1,a2,…,an по неубыванию используя алгоритм сортировки слияниями - C++
Упорядочить массив a1,a2,…,an по неубыванию с помощью алгоритма сортировки слияниями: -каждая пара соседних элементов сливается в одну...

Составить программу решения задачи, используя рекурсивный алгоритм - C++
Задание во вложение

Найти минимум в массиве используя наиболее оптимальный алгоритм - C++
Дан массив чисел, надо найти минимум. Препод сказал - дополнительное задание: предложить наиболее оптимальный алгоритм, написать код,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Заархивировать файл, используя следующий алгоритм
Ответ Создать тему
Опции темы

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