Форум программистов, компьютерный форум CyberForum.ru

Найти ошибку в цикле - C++

Восстановить пароль Регистрация
 
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
30.04.2013, 10:32     Найти ошибку в цикле #1
Программа находит слова из массива MS и заменяет их цифрами из cif, в данном случае MS[0] это для слова ZERO
И все работает правильно, кроме, того, что цикл пытается выполнится лишний раз и это вызывает ошибку, то есть мне нужно написать какое-то дополнительное условие выхода из цикла, чтобы цикл не пытался выполниться еще раз, помогите пожалуйста


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  char *MS[]={"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"};
  char text[]="kTWOZEROkloSEVENZEROjONEjZEROkFIVEFOURFIVEFIVEFIVEZEROTHRONEEE", cif[]="0123456789";
  int i=0,j=0, z=0, k=0;
 
while(i<strlen(text)){ 
 
          while(i+j<strlen(text))
      {  if(text[i+j]==MS[0][j])
          {j++; 
              if(j==strlen(MS[0]))
              {text[i]=cif[0];
               while(z<strlen(text)-j)
               {text[i+z+1]=text[i+j+z];
                z++;
            };  break;}  } 
          else i++;  } 
   cout<<text<<endl;  
   j=0; z=0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2013, 10:32     Найти ошибку в цикле
Посмотрите здесь:

C++ Не могу понять ошибку в цикле for
найти ошибку(в одномерном массиве найти количество различных элементов) C++
C++ Замена слов в цикле. Найти недочеты в коде
C++ Найти смещение точки координаты которой находятся в цикле
C++ Найти сумму первых n-четных натуральных чисел (найти ошибку)
Найти ошибку в цикле C++
C++ Помогите найти ошибку: По двум сторонам и углу найти все остальное
String::insert() в цикле выдает ошибку сегментации C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
30.04.2013, 14:09     Найти ошибку в цикле #2
Цитата Сообщение от Wladius Посмотреть сообщение
помогите пожалуйста
- хорошо держи
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
46
47
48
49
#include <iostream>
using namespace std;
 
struct
{
    const char * sDIGIT;
    char  chDIGIT;
}DIGITS [] = 
{   
    {"ZERO", '0'},
    {"ONE" , '1'},
    {"TWO" , '2'},
    {"THREE",'3'}, 
    {"FOUR", '4'},
    {"FIVE", '5'},
    {"SIX",  '6'},
    {"SEVEN",'7'}, 
    {"EIGHT",'8'}, 
    {"NINE", '9'},
    {NULL ,  '\0'}
};
 
int main()
{
    char text[]=
        "kTWOZEROkloSEVENZEROjONE"
        "jZEROkFIVEFOURFIVEFIVEFI"
        "VEZEROTHRONEEE";
    char * fnd = NULL;
    long fpos  = -1;
    long slen  = strlen(text);
    cout<<"Input  : "<<text<<endl;
    for(int i = 0; DIGITS[i].sDIGIT; i++)
    {
        fnd = strstr(text, DIGITS[i].sDIGIT);
        while( fnd )
        {
            fpos = slen - strlen( fnd );
            strcpy(&text[fpos], &text[fpos + strlen(DIGITS[i].sDIGIT) - 1]);
            text[fpos] = DIGITS[i].chDIGIT;
            fnd = strstr(text, DIGITS[i].sDIGIT);
            slen= strlen(text);
        }
        
    }
    cout<<"Output : "<<text<<endl;
    cin.get();
    return 0;
}
Миниатюры
Найти ошибку в цикле  
Yandex
Объявления
30.04.2013, 14:09     Найти ошибку в цикле
Ответ Создать тему
Опции темы

Текущее время: 02:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru