Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
viktorius
2 / 2 / 3
Регистрация: 24.02.2013
Сообщений: 105
1

Самая длинная последовательность в строке не используя числовые переменные

28.05.2013, 09:11. Просмотров 704. Ответов 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
42
43
44
45
#include<stdio.h>
#include<string.h>
#define A 80
void chomp(char buf[])
{
    if(buf[strlen(buf)-1]=='\n')
    buf[strlen(buf)-1]=0;
}
int main()
{
    int i=0,temp=0,max=0,quantity=0;
    char line[A]={0},*index,*basket;
    printf("Enter a line of the text\n");
    fgets(line,A,stdin);
    chomp(line);
    index=line;
    while(!(temp==1&&(*basket!=*(basket-1))))
    {
        if(temp==0)
        {
            ++quantity;
            if((index[i]!=index[i+1]||!index[i+1])&&max<quantity)
            {
                max=quantity;
                quantity=0;
                basket=&index[i-(max-1)];
            }
            if(index[i]!=index[i+1])
            {
                quantity=0;
            }
            if(!index[i+1])
            {
                temp=1;
            }
        }
        if(temp==1)
        {
            putchar(*basket++);
        }
        i++;
    }
    printf(" %d\n",max);
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 09:11
Ответы с готовыми решениями:

Самая длинная подстрока
Помогите решить задачу. Дана строка, состоящая из маленьких латинских букв. Ваша задача — найти...

Поиск строки в которой находится самая длинная серия одинаковых элементов
Не могу найти строчку с максимальной серией элементов Ребят, кто знает в чем ошибка, подскажите...

Подпрограмма: найти номер строки матрицы, в которой находится самая длинная серия
Найти номер строки заданной целочисленной матрицы размером 10х10, в которой находится самая длинная...

Определить номер строки, в которой находится самая длинная серия одинаковых элементов
Собственно, есть задание. Определить номер строки, в которой находится самая длинная серия...

Определить номер строки, в которой находится самая длинная серия одинаковых элементов
Задал матрицу,теперь нужно определить номер строки, в которой находится самая длинная серия...

2
Thinker
Эксперт С++
4236 / 2210 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.05.2013, 09:51 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
#include<stdio.h>
 
void Print(char *s, char *end)
{
   for(; s < end; ++s)
      putchar(*s);
   putchar('\n');
}
 
int Max(char *s)
{
   char *beg, *end, *a;
   beg = end = s;
   while(*s)
   {
       a = s;
       ++s;
       while(*s == *a)
          ++s;
       if (s - a > end - beg)
       {
          beg = a;
          end = s;
       }
   }
   Print(beg, end);
   return end - beg;
}
 
int main()
{
   char s[1024];
   fgets(s, 1024, stdin);
   printf("max = %d\n", Max(s));
   return 0;
}
1
viktorius
2 / 2 / 3
Регистрация: 24.02.2013
Сообщений: 105
28.05.2013, 12:37  [ТС] 3
Цитата Сообщение от Thinker Посмотреть сообщение
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
#include<stdio.h>
 
void Print(char *s, char *end)
{
   for(; s < end; ++s)
      putchar(*s);
   putchar('\n');
}
 
int Max(char *s)
{
   char *beg, *end, *a;
   beg = end = s;
   while(*s)
   {
       a = s;
       ++s;
       while(*s == *a)
          ++s;
       if (s - a > end - beg)
       {
          beg = a;
          end = s;
       }
   }
   Print(beg, end);
   return end - beg;
}
 
int main()
{
   char s[1024];
   fgets(s, 1024, stdin);
   printf("max = %d\n", Max(s));
   return 0;
}
Класно придумано, а я забыл что если указатели указывают на один и тот же масив то их можно вычитать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 12:37

В матрице определить номер строки, в которой находиться самая длинная серия одинаковых элементов
Ув форумчане проверьте решение задачи 1)в целочисленной квадратной матрице определить номер...

Наиболее длинная последовательность подряд идущих символов
Найти в массиве символов наиболее длинную последовательность подряд идущих символов. Мне нужно...

Самая длинная последовательность
с клавиатуры вводится одно число(n). Не более 10^5,дальше вводиться некая последовательность...


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

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

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