Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти наибольшую последовательность в м. 
:(
    Опции темы
Aaron
Дата 13.1.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Написал программу, которая должна находить наибольшую последовательность одинаковых символов в массиве (т.е. из массива abfdddjt_rrrrrtye она должна вернуть число 5 - по кол-ву "r"). Все работает лишь с одной посл. С многими есть сравнение и приравнивание, если промежуточный результат больше очередного сохраненного.....тем не менее - не работает. Пытается непонятным образом их складывать...

Код

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>

int find(char a[], int i, int c, int m)
{
 while(i<strlen(a))
 {
  if(a[i+1]==a[i])
  {
   do
   {
    c++;
    i++;
   }
   while(a[i+1]==a[i]);
  }
  if(c>m)
   {
    m=c;
   }
  i++;
 }
 return m+1;
}

void main()
{
 char a[80];
 int i=0;//индекс массива
 int c=0;//размер настоящей последовательности
 int m=0;//промежуточный итог
 int f=0;//функция

 cout<<"Введите строку:"<<endl;
 gets(a);

 f=find(a,i,c,m);
 cout<<f;

 getch();
}


ппомогите найти недоработку плзз....

Это сообщение отредактировал(а) Aaron - 13.1.2006, 17:36
PM MAIL ICQ   Вверх
MAKCim
Дата 13.1.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Код

int get(const char* str)
{
    int count=strlen(str), i=0, s=0;
    while (i<count)
    {
        int j=i++;
        while (i<count && str[j]==str[i]) i++;
        if (i-j>s) s=i-j;
    }
    return s;
}

думаю, должно работать (str - строка), твою не смотрел


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Aaron
Дата 13.1.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Спасибо, функция хорошо работает. smile

Но все равно, хотелось бы узнать, что с той, моей....как ее можно доделать....если кто знает..плз..а то вдруг, на похожем будет задание..
PM MAIL ICQ   Вверх
MAKCim
Дата 13.1.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



1. a[i+1] может вылезти за границы строки
2.
Цитата

Код

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
int find(char a[], int i, int c, int m)
{
 while(i<strlen(a))
 {
  if(a[i+1]==a[i])
  {
   do
   {
    c++;
    i++;
   }
   while(a[i+1]==a[i]);
  }
  if(c>m)
   {
    m=c;
    [B]c=0;[/B]
   }
  i++;
 }
 return m+1;
}
void main()
{
 char a[80];
 int i=0;//индекс массива
 int c=0;//размер настоящей последовательности
 int m=0;//промежуточный итог
 int f=0;//функция
 cout<<"Введите строку:"<<endl;
 gets(a);
 f=find(a,i,c,m);
 cout<<f;
 getch();
}




--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Aaron
Дата 13.1.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



спасибо)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1378 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.