Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2008, 08: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, 10: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, 20: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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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