Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
1

В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию

11.03.2014, 15:39. Показов 4237. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу понять в чем ошибка... Прога не работает... Задание такое: В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию (k)a, где k- количество повторений символа a.

Входные данные:
abbcdddeeffffghh

Выходные данные:
abbc(3)dee(4)fghh

Во время работы программы будут использоваться переменные:
S1 – исходная строка символов
S6 – итоговая строка
S0 – скобки
S – количество одинаковых стоящих рядом символов, первоначальное значение s = 1.
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
50
51
52
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>
 
int main()
{
    unsigned int i, n, s;
    char str[50],  s0,s1,s2,s3,s4,s5,s6;
 
    printf("\nlaboratornaya rabota №5_1");
    printf("\nvariant №8");
    printf("\nIS-12-2");
    printf("\nHamchuk Evgeniy\n");
    printf("\nEntrance data\n");
    printf("\nEnter a line of symbols:\n");
    printf("\n str=");
    scanf("%s", str);
    s0=("()");
    s=1.0;
    {
        for (i=1.0; i<n; i++)
        {
            s2=s1[i];
            s3=s1[i+1];
            s4=s1[i+2];
            if (s2==s3)
                s++;
            if (s3<>s4)
            {
                if (s>2)
                {
                    str(s, s5);
                    insert(s5, s0, 2);
                    s6=concat(s6, s0);
                    s0=("()");
                    s=1.0;
                }
                s6=concat(s6,s2)
            }
            {
                if (s2<>s3)
                {
                    s6=concat(s6,s2);
                    s=1.0;
                }
 
            }
        }
    }
    printf("Target data: ", s6);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2014, 15:39
Ответы с готовыми решениями:

В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию (k)a
Помогите пожалуйста.Не могу сообразить как делать(Нужно составить на языке Паскаль программу: В...

В заданной строке заменить все последовательности одинаковых символов длиной более двух
Помогите пожалуйста. В заданной строке заменить все последовательности одинаковых символов...

Найти в строке два одинаковых фрагмента длиной более 5 символов
#include &lt;string.h&gt; // Подключаем библиотеки #include &lt;stdio.h&gt; // Подключаем библиотеки int...

В исходной строке а$ заменить все вхождения заданной последовательности символов x$ на другую заданную последовательность символов y$
В исходной строке а$ заменить все вхождения заданной последовательности символов x$ на другую...

34
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
12.03.2014, 15:10  [ТС] 21
Author24 — интернет-сервис помощи студентам
это что такое? как пользоваться этой программой?
0
Заблокирован
12.03.2014, 15:21 22
Задача решена.

Не по теме:

Шапку, которую просЮт в вашей конторе, потрудитесь вывести сами.
Если не можете - завязывайте с этим делом под чистую.
Если не хотите - продолжайте получать прЮветы, толстовец вы наш.

0
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
12.03.2014, 15:30  [ТС] 23
ну как она решена правильно если она работает вот так? шапку то написать без проблем, но тут нету ввода строки символов и вывода результата
Миниатюры
В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию  
0
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
13.03.2014, 05:25  [ТС] 24
получается вот так... на месте цифр выдает какие то непонятные символы
Миниатюры
В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию  
0
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
13.03.2014, 11:15 25
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <stdio.h>
#include <string.h>
 
main()
{
char s[20];
char *chisla="0123456789";
 
int k,n,x,z,i,j,w,a,b,e;
char  c[15],m;
char  s2[15];
 
printf("Laboratornaya rabota #5_2\n");
printf("Variant #8\n");
printf("IS-12-2\n");
printf("Hamchuk Evgeniy\n\n");
printf("Entrance data\n"); //входные данные
printf("Enter a line of symbols:  ");  //введите строку символов
scanf("%s",&s);
 
n=strlen(s);
for(i=0;i<n;i++)
  {
    a=s[i];
    if((a>=48)&&(a<=57))    //если символ - число  (проверка по ASCII коду)
        break;
  }
for(j=n;j>0;j--)
  {
    b=s[j];
    if((b>=48)&&(b<=57))
        break;
  }
e=0;
for(w=i+1;w<j;w++)      //пишем все что надо сортировать в отдельный массив c[]
    {
        c[e]=s[w];
        e++;
    }
 
k=strlen(c);
for(x=0;x<k;x++)        //сортируем c[]
{
for(z=x+1;z<k;z++)
{
a=c[x];
b=c[z];
 
if(a>b)
{
m=c[x];
c[x]=c[z];
c[z]=m;
}
}
}
 
for(a=0;a<=i;a++)       // пишем в массив все что до первого числа
    s2[a]=s[a];
e=0;
for(a=i+1;a<=j;a++)  // пишем в массив отсортированное
{
    s2[a]=c[e];
    e++;
}
for(a=j;a<=n;a++)  //   пишем в массив все что после последнего числа
    s2[a]=s[a];
 
printf("Target data: \n");  // вывод
printf("%s\n",s2);
}
0
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
13.03.2014, 14:03  [ТС] 26
считает так...
Миниатюры
В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию  
0
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
13.03.2014, 14:03  [ТС] 27
а должен вот так...
Миниатюры
В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию  
0
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
13.03.2014, 14:19 28
не знаю почему у тебя буквы так выводит, у меня все нормально работает
0
Заблокирован
13.03.2014, 16:48 29
Цитата Сообщение от kasan Посмотреть сообщение
не знаю почему
Просто клиент троллит.
0
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
13.03.2014, 18:40 30
IrineK, не исключено)
Можете проверить работает ли у Вас код?
0
Заблокирован
13.03.2014, 22:19 31
Цитата Сообщение от kasan Посмотреть сообщение
работает ли у Вас код?
Конечно.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12459 / 7483 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
14.03.2014, 02:01 32
Цитата Сообщение от kasan Посмотреть сообщение
у меня все нормально работает
У меня как-то тоже не задалось:
В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию

Да и это
Цитата Сообщение от kasan Посмотреть сообщение
int k,n,x,z,i,j,w,a,b,e;
адский ад какой-то... Вы в самом деле помните, что какая буковка обозначает?

Вот так отработало:
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
#include <stdio.h>
#include <string.h>
 
typedef char string_t[256];
#define get_string(s) ( scanf("%255[^\n]%*c", (s)) == 1 )
 
/* плохой вариант - не проверяется выход за границу буфера */
char * transform(char * str, size_t charsToSqueeze) {
    string_t buf;
    char * strPtr = str, * bufPtr = buf;
    
    *bufPtr = '\0';
    while ( *strPtr ) {
        char * nextPtr = strPtr + 1;
        while ( *nextPtr == *strPtr )
            ++nextPtr;
        if ( nextPtr - strPtr >= charsToSqueeze ) {
            sprintf(bufPtr, "(%u)%c", nextPtr - strPtr, *strPtr);
            bufPtr += strlen(bufPtr);
            strPtr = nextPtr;
        }
        else
            *bufPtr++ = *strPtr++;
    }
    *bufPtr = '\0';
    
    return strcpy(str, buf);
}
 
#define CHARS_TO_SQUEEZE (3)
 
int main(void) {
    string_t str;
    
    while ( printf("String: ") && get_string(str) )
        printf("Result: %s\n", transform(str, CHARS_TO_SQUEEZE));
    
    return 0;
}
В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию
0
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
14.03.2014, 10:53 33
Цитата Сообщение от easybudda Посмотреть сообщение
адский ад какой-то
согласен, но этот адский ад должен сортировать символы между первым числом и последним (последние скрины). В теме бардак)
Задача с заменой одинаковых символов была решена выше в нескольких вариантах + Ваш вариант.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
14.03.2014, 12:23 34
Цитата Сообщение от kasan Посмотреть сообщение
но этот адский ад должен сортировать символы между первым числом и последним (последние скрины). В теме бардак)
Так а нафига столько переменных, да еще и однобуквенных? Вынес бы сортировку в отдельную процедуру, сразу стало бы проще.

Че-то все скриншотят, фиг скопипастишь примеры входных данных. =)
Миниатюры
В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию  
0
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
14.03.2014, 12:41 35
Сознаю свою вину, степень, меру, глубину.
Объективно - мой код=г*но-код, можно и нужно было делать как написали коллеги выше.
Задача уже решена, пожалуйста, закройте тему
0
14.03.2014, 12:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2014, 12:41
Помогаю со студенческими работами здесь

Найти в строке фрагменты, содержащие последовательность одинаковых символов длиной более 3
Задача:Функция находит в строке фрагменты, содержащие последовательность одинаковых символов длиной...

Найти в строке два одинаковых фрагмента (не включая пробелы) длиной более 5 символов
Привет всем вопрос состоит:Найти в строке два одинаковых фрагмента (не включая пробелы) длиной...

Найти в строке два одинаковых фрагмента длиной более 5 символов и возвратить индекс начала первого из них
Всем добрый вечер. Собственно нужна ваша помощь, есть условие: &quot;Найти в строке два одинаковых...

В исходной строке а$ заменить все вхождения заданной последовательности символов x$ на другую заданную последовательность
В исходной строке а$ заменить все вхождения заданной последовательности символов x$ на другую...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru