Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
1

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

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

Не могу понять в чем ошибка... Прога не работает... Задание такое: В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию (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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 15:39
Ответы с готовыми решениями:

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

В строке символов заменить все вхождения подстроки p на не более чем n символов подстроки q
Составить функцию Zam(s,p,q,n), которая в строке символов s заменяет все вхождения подстроки p на...

Оставить в строке фрагменты, симметричные центрального символа, длиной более 5 символов
(СИ)Оставить в строке фрагменты, симметричные центрального символа, длиной более 5 символов...

Оставить в строке фрагменты, симметричные центрального символа, длиной более 5 символов
Не могу понять почему при реализации у меня распечатывается одно и тоже несколько раз, хотя по...

Оставить в строке фрагменты, симметричные центрального символа, длиной более 5 символов
Не получается то, что должно получится. В задаче следует: Оставить в строке фрагменты, симметричные...

34
zer0mail
2469 / 2102 / 219
Регистрация: 03.07.2012
Сообщений: 7,637
Записей в блоге: 1
11.03.2014, 18:12 2
Не можешь понять- используй отладчик и печать.
0
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
11.03.2014, 18:14  [ТС] 3
так я не знаю как эту ошибку исправить
0
zer0mail
2469 / 2102 / 219
Регистрация: 03.07.2012
Сообщений: 7,637
Записей в блоге: 1
11.03.2014, 18:23 4
Знаешь, где и в чем ошибка и не можешь исправить?
0
11.03.2014, 18:23
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
11.03.2014, 18:28  [ТС] 5
ну да, я просто только учусь...

Добавлено через 2 минуты
вот рабочий код Паскаль
Pascal
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
Program Variant_8;
Uses crt;
Var i,n,s: Integer;
s0,s1,s2,s3,s4,s5,s6: String; 
 
Begin
Writeln('Laboratornya rabota №5_1');
Writeln('Variant №8’);
Writeln('IS-12-2);
Writeln('Hamchuk Evgeniy’);
Writeln;
Writeln('Entrance data’);
Write(' Enter a line of symbols:  ');
Readln(s1);
n:=length(s1);
s0:=('()');
s:=1;
 
Begin
 For i:=1 to n do
Begin
  s2:=s1[i];
  s3:=s1[i+1];
  s4:=s1[i+2];
  If (s2=s3) 
  Then s:=s+1;
 
  If(s3<>s4)
 Then
   Begin
    If (s>2)
   Then
    Begin
     str(s,s5);
     Insert (s5,s0,2);
     s6:=concat (s6,s0);
     s0:=('()');
     s:=1;
     End
    Else
     s6:=concat(s6,s2)
    End
  Else
   Begin
    If (s2<>s3)
    Then
     Begin
      s6:=concat(s6,s2);
      s:=1;
     End;
   End;
 End;
End;
Writeln;
Writeln('Target data: ',s6);
Readln;
End.
0
zer0mail
2469 / 2102 / 219
Регистрация: 03.07.2012
Сообщений: 7,637
Записей в блоге: 1
11.03.2014, 18:34 6
Про паскаль мне неинтересно. Где и в чем ошибка в сишной программе?
0
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
11.03.2014, 18:36  [ТС] 7
среда не показывает на какой именно строке ошибка, но внизу в списке ошибок 7 ошибок выдает
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16768 / 6655 / 869
Регистрация: 12.06.2012
Сообщений: 19,894
Завершенные тесты: 1
11.03.2014, 18:48 8
Цитата Сообщение от steamangarsk Посмотреть сообщение
среда не показывает на какой именно строке ошибка
да ну? что за среда такая?
Ну вот вам ошибки с указанием строк
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
gcc -Wall -c "test.c" (в каталоге: /home/kopoji/Documents/C)
test.c: In function ‘main’:
test.c:18:7: warning: assignment makes integer from pointer without a cast [enabled by default]
     s0=("()");
       ^
test.c:23:18: error: subscripted value is neither array nor pointer nor vector
             s2=s1[i];
                  ^
test.c:24:18: error: subscripted value is neither array nor pointer nor vector
             s3=s1[i+1];
                  ^
test.c:25:18: error: subscripted value is neither array nor pointer nor vector
             s4=s1[i+2];
                  ^
test.c:28:20: error: expected expression before ‘>’ token
             if (s3<>s4)
                    ^
test.c:32:24: error: called object ‘str’ is not a function or function pointer
                     str(s, s5);
                        ^
test.c:8:10: note: declared here
     char str[50],  s0,s1,s2,s3,s4,s5,s6;
          ^
test.c:33:21: warning: implicit declaration of function ‘insert’ [-Wimplicit-function-declaration]
                     insert(s5, s0, 2);
                     ^
test.c:34:21: warning: implicit declaration of function ‘concat’ [-Wimplicit-function-declaration]
                     s6=concat(s6, s0);
                     ^
test.c:35:23: warning: assignment makes integer from pointer without a cast [enabled by default]
                     s0=("()");
                       ^
test.c:39:13: error: expected ‘;’ before ‘}’ token
             }
             ^
test.c:41:24: error: expected expression before ‘>’ token
                 if (s2<>s3)
                        ^
test.c:50:5: warning: too many arguments for format [-Wformat-extra-args]
     printf("Target data: ", s6);
     ^
test.c:8:32: warning: variable ‘s4’ set but not used [-Wunused-but-set-variable]
     char str[50],  s0,s1,s2,s3,s4,s5,s6;
                                ^
test.c:8:23: warning: variable ‘s1’ set but not used [-Wunused-but-set-variable]
     char str[50],  s0,s1,s2,s3,s4,s5,s6;
                       ^
test.c:51:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
Добавлено через 1 минуту
З.Ы. Это без conio.h, у меня его нет.
0
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
11.03.2014, 18:49  [ТС] 9
CodeBlocks

Добавлено через 28 секунд
вот я и не знаю как их исправить
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16768 / 6655 / 869
Регистрация: 12.06.2012
Сообщений: 19,894
Завершенные тесты: 1
11.03.2014, 18:51 10
Вы же сказали, что не знаете строки с ошибками
0
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
11.03.2014, 18:54  [ТС] 11
я ещё сказал что не знаю как их исправить... помогите если знаете...
0
Boleon
Guardian of Asgaard
373 / 316 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
11.03.2014, 18:58 12
вижу строку for (i=1.0; i<n; i++)
но не вижу чему равно n
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16768 / 6655 / 869
Регистрация: 12.06.2012
Сообщений: 19,894
Завершенные тесты: 1
11.03.2014, 19:02 13
Типы данных смотрели?
Цитата Сообщение от steamangarsk Посмотреть сообщение
unsigned int i, n, s;
Цитата Сообщение от steamangarsk Посмотреть сообщение
s=1.0;
Вопрос. Зачем?
Чему равно n ?
Цитата Сообщение от steamangarsk Посмотреть сообщение
char str[50], *s0,s1,s2,s3,s4,s5,s6;
Цитата Сообщение от steamangarsk Посмотреть сообщение
s0=("()");
s0 - это один символ, а не массив символов, как str.
Цитата Сообщение от steamangarsk Посмотреть сообщение
s2=s1[i];
Тоже самое, это символ, а не массив символов
Цитата Сообщение от steamangarsk Посмотреть сообщение
s3=s1[i+1];
* * * * * * s4=s1[i+2];
тоже самое
Цитата Сообщение от steamangarsk Посмотреть сообщение
s++;
нелогично, хотя и может быть не будет ошибки. Char != int, всего 255 символов
Цитата Сообщение от steamangarsk Посмотреть сообщение
if (s3<>s4)
в си "не равно" - это символы "!=", а не "<>".
Цитата Сообщение от steamangarsk Посмотреть сообщение
insert(s5, s0, 2);
что за функция insert ?
Цитата Сообщение от steamangarsk Посмотреть сообщение
s0=("()");
бессмысленная строчка, да еще и с ошибкой, внутри цикла.
Цитата Сообщение от steamangarsk Посмотреть сообщение
s6=concat(s6,s2)
1) s6 - это символ, только один.
2) что за функция concat ?
Цитата Сообщение от steamangarsk Посмотреть сообщение
}
функция должна возвращать целое число. 0 в случае успеха и другое в случае ошибки.
0
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
11.03.2014, 19:05  [ТС] 14
переделывал с Паскаля... говорю же что только учусь, помогите исправить если не сложно...
0
IrineK
Заблокирован
12.03.2014, 11:18 15
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
#include <stdio.h>
#include <string.h>
 
int main()
{   const char *in = "abbcdddeeffffghh";
    int len = strlen(in), i = 0, j = 0, found = 0, count = 0;
    char out[30];
 
    for (; i<len-2; i++)
    {   if(in[i] == in [i+1] && in[i+1] == in [i+2])
        {   if(!found)
            {   found = 1;
                count = 3;
            }
            else
                count++;
        }
        else
        {   if(found)
            {   out[j++] = '(';
                out[j++] = count + 48;
                out[j++] = ')';
                found = count = 0;
            }
            else
                out[j++] = in[i];
        }
    }
 
    if (!found)
    {   out[j++] = in[i];
        out[j++] = in[i+1];
    }
    else
    {   out[j++] = '(';
        out[j++] = count + 48;
        out[j++] = ')';
        out[j++] = in[i];
    }
    out[j] = '\0';
    puts(out);
 
    getchar();
    return 0;
}
Ограничение: к-во повторений - не больше 9
0
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
12.03.2014, 13:43  [ТС] 16
должно получиться вот так... а в этой программе он просто выводит строку с символами
0
Миниатюры
В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию  
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
12.03.2014, 14:15  [ТС] 17
нужно вводить строку любых символов и чтобы он повторяющийся более 2-х раз символы выдавал как на скрине
0
IrineK
12.03.2014, 14:26
  #18

Не по теме:

Цитата Сообщение от steamangarsk Посмотреть сообщение
он просто выводит
Всегда интересовало, кто этот "он"?
Внеземная сущность 6-го порядка?
Трепещите ]:->

0
steamangarsk
2 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 115
12.03.2014, 14:45  [ТС] 19
ну я имею в виду компилятор)
0
korvin_
2441 / 1918 / 346
Регистрация: 28.04.2012
Сообщений: 6,573
12.03.2014, 15:00 20
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
#include <u.h>
#include <libc.h>
#include <bio.h>
 
#define NOZIPN 2
 
void
putrunes(Biobuf *out, Rune r, int count)
{
    if (count > NOZIPN) {
        Bprint(out, "(%d)", count);
        count = 1;
    }
    for (; count > 0; count--)
        Bputrune(out, r);
}
 
void
main(void)
{
    int n;
    Rune p, r;
    Biobuf bstdin, bstdout;
 
    if (Binit(&bstdin, 0, OREAD) == Beof) {
        fprint(2, "can't connect stdin to bio: %r");
        exits("Binit");
    }
    if (Binit(&bstdout, 1, OWRITE) == Beof) {
        fprint(2, "can't connect stdout to bio: %r");
        exits("Binit");
    }
 
    n = 0;
    p = Beof;
    while ((r = Bgetrune(&bstdin)) != Beof)
        if (r == p)
            ++n;
        else {
            putrunes(&bstdout, p, n);
            p = r;
            n = 1;
        }
    putrunes(&bstdout, p, n);
 
    Bterm(&bstdin);
    Bterm(&bstdout);
    exits(0);
}
=>
Bash
1
2
3
4
5
6
7
~/prog/c $ cat zip.in
1231233
qweweewasdwwwwweewwwwr
~/prog/c $ cat zip.in | ./zip
1231233
qweweewasd(5)wee(4)wr
~/prog/c $
0
12.03.2014, 15:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2014, 15:00

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

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

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


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

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

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