crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

kvak
  опции профиля:
сообщение 5.5.2010, 4:22
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 51
Регистрация: 5.5.2010
Пользователь №: 1690

Спасибо сказали: 1 раз(а)




Репутация:   0  


Здравствуйте. Не могли бы вы посмотреть на исходники во вложении и сказать что в них неправильно. И поправить. Там маленькая программка. Задача в том, чтобы открыть log.txt и отобрать из него вхождения для каждого случая, если они встретятся. Мне кажется, что по идее все должно работать, но что-то я недопонимаю. После компиляции почему-то не хочет выполнять цикл и приложение не отвечает.
Кстати, в с++ можно задавать в цикле for по два инициализатора и два инкримента, типа такого ?
for (int index = 0, int c =0 ; index != -1; index++, c++ )
{
...
}
Если да, то почему-то при компиляции это считалось ошибочным.
Прикрепленные файлы
Прикрепленный файл  PACKAGE.zip ( 7.54 килобайт ) Кол-во скачиваний: 144
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
kvak
  опции профиля:
сообщение 6.5.2010, 8:01
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 51
Регистрация: 5.5.2010
Пользователь №: 1690

Спасибо сказали: 1 раз(а)




Репутация:   0  


Все. Понял. Спасибо.
Попробывал сегодня поменять этот же проблемный цикл, и заработало, когда стал использовать слово break для выхода. Но вот реально все равно не пойму почему в том случае, когда не работает, не срабатывает условие
index =-1;

Не работает и зависает

while  (!file.atEnd()) 
{

Engine = file.readLine();

for (int a = 0; a < size; a++)
  {
            int c = 0;
            for (int index = 0; index =-1; index++ ) {
            index = Engine.indexOf(vxod[a], index);
            summary[a] += c;
            c++;            
        }  
  }          
}



Работает как надо и очень быстро

while  (!file.atEnd()) 
{

Engine = file.readLine();

for (int a = 0; a < size; a++)
   {
            for (int index = 0;; index++ ) {
            index = Engine.indexOf(vxod[a], index);
            if (index == - 1)
            break;
            summary[a]++;
        }  
   }          
}




Блин. Все. Теперь понял. Я вместо условия задал приравнивание. Тогда почему он вообще скомпилировал...

Хотя нет. все-таки у меня все-таки было изначально index !=1 И это условие получается не выполнялось.


for (int index = 0 ; index != -1; index++ ) {
index = Engine.indexOf(vxod[a], index);
...
Т.е. я понимаю так , что цикл должен прерываться в том случае, когда index станет равен - 1
Т.е. как я понял ошибка в том, что когда index становится - 1, то перед проверкой условия происходит index++
и поэтому он всегда 0. Так получается ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 17.6.2025, 7:06