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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
#1

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

30.04.2013, 10:32. Просмотров 230. Ответов 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++
Помогите найти ошибку в цикле.Не циклирует. #include &lt;iostream&gt; using namespace std; int main() { setlocale...

Не могу понять ошибку в цикле for - C++
#include &lt;iostream&gt; using namespace std; class object { public: int num_obj; int num_of_line; int...

String::insert() в цикле выдает ошибку сегментации - C++
Добрый вечер, есть такой вот кусок кода: string t = &quot;c-++a+--b&quot;; std::string::iterator itt; for (itt = t.begin(); itt!= t.end();...

Замена слов в цикле. Найти недочеты в коде - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstring&gt; using namespace std; int main(){ char temp; cout &lt;&lt; &quot;vvedite...

Найти в цикле значение ряда, большее заданного - C++
Дано действительное число а. Среди чисел 1, 1 + 1/2, 1 + 1/2 + 1/3 ... найти первое, которое больше а. Указать такое наименьшее n, для...

Найти смещение точки координаты которой находятся в цикле - C++
Товарищи помогите! Есть задача найти смещение точки координаты которой находятся в цикле for(int i = 0; i &lt; faces.size(); i++) ...

Найти произведение положительных элементов массива, используя оператор ветвления if else в цикле for - C++
Подскажите, пожалуйста. Не получается корректно вставить в цикл for оператор ветвления else к задачке &quot;Найти произведение положительных...

Std::getline() пропускает итерацию в цикле: найти и исправить ошибки в коде - C++
Цикл for принимает на одну строку меньше чем должен. Я так понимаю это getline() воспринимает введенную перед этим переменную &quot;int n&quot; как...

найти ошибку - C++
немогу найти ошибку помогите пожалуйста.

Найти ошибку - 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     Найти ошибку в цикле
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru