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

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

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

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

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

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

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

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

Файл: Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив - C++
Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив

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

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

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

1
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:
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2010, 17:34
Привет! Вот еще темы с ответами:

Найти наибольший делитель, используя алгоритм Евклида - C++
Дано N натуральных чисел. Найти их наибольший делитель, используя алгоритм Евклида и учитывая, что НОД(a,b,c)= НОД(НОД(a,b),c). ...

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

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

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


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

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

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