Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 30.09.2008, 07:24   #1
!!!!!
 
Регистрация: 30.09.2008
Сообщений: 4
Вопрос Строки в С++

Помогите, пожалуйста, исправить ошибку в задаче: Для заданного текста определить длину содержащейся в нем максимальной серии символов, отличных от букв. Почему-то не выводит максимальную длину!

#include <iostream>
#include <string.h>
using namespace std;
const int size=256;
int Find (char *S);
void main ()
{
cout<<"Vvedite stroky: "<<endl;
char *S = new char [size];
cin.getline(S, size);
cout<<"Max dlina: "<< endl;
cout<<Find(S)<< endl;
delete [] S;
}
int Find (char *S)
{
int currlenght=0;
int maxlenght=0;
int i,d;
d=strlen(S);
for(i=0; i<d; i++)
{
if (((int)S[i]>=65)&&((int)S[i]<=90)||((int)S[i]>=97)&&((int)S[i]<=122))
currlenght=0;
else
{
currlenght++;
if (currlenght>maxlenght)
maxlenght=currlenght;
}
}
return maxlenght;
}
!!!!! вне форума Ответить с цитированием
Старый 30.09.2008, 09:49   #2
Gaspar312
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 10
По умолчанию

у меня все выводит, если под символами ты НЕ подразумеваешь цифры, тогда код будет таким:
ПС: в след.раз буд добр использовать тэги код и соблюдай отступы....
Код:
#include <iostream>
#include <string.h>
using namespace std;

const int size=256;
int Find (char *S);

int main ()
{   
   int beta;
   cout<<"Vvedite stroky: "<<endl;
   char *S = new char [size];
   cin.getline(S, size);
   cout<<"Max dlina: "<< endl;
   cout<<Find(S)<< endl;
   delete [] S;
   cin >> beta;
}

int Find (char *S)
{
   int currlenght=0;
   int maxlenght=0;
   int i,d;
   d=strlen(S);
   for(i=0; i<d; i++)
   {
      if (  ((int)S[i]>=65) && ((int)S[i]<=90)  || 
            ((int)S[i]>=97) && ((int)S[i]<=122) ||
            ((int)S[i]>=48) && ((int)S[i]<=57)   )      //exclude numbers: 1 .. 9
         currlenght=0;
      else
      {
         currlenght++;
         if (currlenght>maxlenght)
            maxlenght=currlenght;
      }
   }
return maxlenght;
}
Gaspar312 вне форума Ответить с цитированием
Старый 30.09.2008, 19:15   #3
ivan89
Пользователь
 
Аватар для ivan89
 
Регистрация: 22.09.2008
Сообщений: 59
По умолчанию

!!!! посмотри прога работает как надо
#include <iostream>
#include <cctype>
using namespace std;
void maximal(char *ch);
int main()
{
char st[256];
cout<<"vvedi stroky\n";
cin>>st;
maximal(st);
return 0;
}
void maximal(char *ch)
{

int max=0,j=0,k,t1,t2;
int n=strlen(ch);
for(int i=0; i<n; i++)
if(!isalpha(ch[i]))
if(ch[i]==ch[i+1])
{

j++;
k=1;
t1=i;

}
else if(j>max && k==1)
{
max=j;
t2=t1;
j=k=0;
}
cout<<ch[t2] <<" "<< max <<endl;
}
ivan89 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки Baboon Общие вопросы Delphi 1 06.06.2008 19:55
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 01:27
Строки Настена Помощь студентам 1 07.01.2008 23:47
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 19:45


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS