Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: exp   (21.12.2008 в 03:43)
вот такой вариант вроде получше
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
char str[512] = "01110001 1110110 0000001110000 0100100101\0";
char x;
int i, group=0, a=0, ln=0, ones[2];
/*
ones[2]- первый элемент длинна группы из ln 
второй колличество едениц из a
group - только 0 или 1 или 2
*/

cout << "enter digit:"<< endl;
 cout << " 1 new string"<< endl; 
 cout << " 2 default string:"<< endl;
 cout << " '"<< str <<"'"<< endl; // если лениво вводить строку
 cout << " 0 exit"<< endl;
cin >> i;
cout << endl;

switch(i) {
 case 1:
   cout << "(Notice: only ' ', 1, 0 characters)"
   <<endl<<"enter string:"<< endl;

   cout.flush();
   cin.getline(&x, 1); // лишний cin думаю баг devCpp 
   cin.getline(str,511);
 break;
 case 2:
 break;
 default:
   i = 0;
}// end of switch

if (i) {
 i=0;

for (i=0; (x = str[i]) != 0x00; i++) {

   switch (x) {
   case '1':
     ln++;
     a++;
     group=2;
   break;
   case '0':
     ln++;
     group=2;
   break;
   default:
    if (group>1 && (!ones[0] || ones[0]>ln)) {
       ones[0] = ln;
       ones[1] = a;
     }
  group = (group)? 1: 0;
  ln = a = 0;

 }// end of switch
}// end of while

    if (group>1 && (!ones[0] || ones[0]>ln)) {
       ones[0] = ln;
       ones[1] = a;
     } // последнее возможное нахождение

cout <<endl<<"result: "<< ones[1]<< endl;
cout <<"length group = "<< ones[0]<< endl;
cout <<"string = "<< str << endl;
}
   // system("PAUSE");

cin.getline(&x, 1); // // лишний cin думаю баг devCpp 
cin.getline(&x, 1); // типа getch();
 return 0;
}

какие ошибки выдаёт ?


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: