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

не использовать do/while ? бред ! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В матрице удалить строки с элементами на главной диагонали, превышающими заданную величину http://www.cyberforum.ru/cpp-beginners/thread2772.html
В матрице удалить строки с элементами на главной диагонали, превышающими заданную величину, а затем в качестве первой вставить строку из максимальных элементов соответствующих столбцов.(Для размещения массивов следует использовать динамическую память).
C++ Поиск строк Здраствуйте, подскажите какие есть реализации или как это сделать примерно. Задача в поиске строк в файле, можно воспользоватся регулярными выражениями или алгоритмами типа бойра-Мура, но файл нельзя считать полностью, как првило, поэтому нужна адаптированная реализация которая может получать строку для поиска по частям. Вот что с сделал с БМ, недостаток в том, что если искомая строка входит в... http://www.cyberforum.ru/cpp-beginners/thread2768.html
C++ Не могу сделать exe
При компиляций моего пректа exe не создаётся.Выдаёт ошибки,которые я не знаю как исправить...http://dump.ru/files/g/g2067785368/ Программа должна выполнять функцию Надо ввести значение переменной pr с помощью клавиатуры.А другая переменная f определяется случайным значением В конце программы выдает текст типа "Переменная pr равна(значение,заданное вами) и f равна(случайное значение).Помогите...
Где можно скачать программу, чтобы начать учиться работать в С++? C++
собственно ногами не пинать...вопрос полного нуля в этой области , но подскажите где можно скачать программу для того что бы начать учиться работать в С++... может выразился сумбурно...но за рание спасибо:)
C++ Где можно скачать элекронные книги, конспекты и тд? http://www.cyberforum.ru/cpp-beginners/thread2715.html
Уважаеммые формчане, нужна помощь по основам программирования на С, ищу ссылки где можно скачать элекронные книги, конспекты и тд и тп. ничего сложного и желательно кратко. заренее благодарен
C++ WinAPI Как перезагрузить WM_CREATE? здрасти всем. у меня возник вопрос. вот есть программы (большинство), которые при нажатии на кнопку применить вокне настроек, каким то образом обновляют главное окно программы. так вот. у меня программа. я открываю окно настроек (DialogBox) меняю настройки и нажимаю на кнопку применить (или OK). так вот. настройки пишутся в .ini файл (или реестр), но главное окно не обновляется и не... подробнее

Показать сообщение отдельно
Гость
Сообщений: n/a
28.08.2007, 00:11     не использовать do/while ? бред !
да этот ответ меня действительно поразил на некоторое время, а именно проверка указанных тестов, спасибо
кстати it (0) это выполнение конструктора при инициализации, раз Вы пользуетесь компилятором gcc, то я могу сделать предположение что в C нету конструкторов из за отсутствия классов (если я не ошибаюсь) - далее я использую компилятор g++ 4.1.2 и чтож пусть будет it = 0, теперь к делу )

меня действительно поразило то, что указанные времена почти совпали, но я не мог понять как такое может быть, если цикл for это тот же while только с другим синтаксисом

сразу замечу что зачастую я выбираю цикл while если ситуация того требует, а не if { do { } while (); }; , но если я пишу программу не спеша я её маниакально пытаюсь ускорить во времени но в любом случае в первую очередь - выше скорости стоит чёткая и стабильная робота программы, и я никогда бы не написал бы так
C++
1
for( it = 0; [b]it < 4 && (major[it] = 1)[/b]; ++it );
что выполниться первым ? 4 И то что в скобках или сравнение с it ? несмотря на что, что якобы это можно определить по приоритетам операций я всегда стараюсь такого избегать после всех испытанных различий компиляторов в таких тонких моментах

и ещё - в первом варианте инкремент i постфиксный, в другом префиксный, по моему мнению префиксный инкремент лучше - он быстрее и возвращает указатель, потому использую его

затем мне бросилось в глаза вот что - после итераций в внутреннем цикле Вы не онуляете переменную i - ведь далее с её помощью будет попытка доступа к несуществующим элементам 5, 6, 7 .. 39999999

таким образом я внёс некоторые правки в код - я добавил скобки к (it < 4) а также добавил онуление i, изменил i++ на ++i и как - то более структурно записал всё, иначе для меня код просто нечитабельный
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main( void ) {
   int i = 0, j = 0, major[4];
#ifdef TEST
   do {
      i = 0;
      do {
         major[i] = 1;
     ++i;
      } while ( i < 4 );
      ++j;
   } while( j < 10000000 );
#else
   for( ; j < 10000000; ++j ) {
      for( i = 0; (i < 4) && ( major[i] = 1 ); ++i );
   };
#endif
   return 0;
};
пробую теперь
g++ sol.cpp -o sol && time ./sol = 0.23s
g++ sol.cpp -o sol -D TEST && time ./sol = 0.20s

хм...
всётаки for медленнее ...
чтоже так затормозило его ? скобки или онуление i ?

ах да насчёт двойной проверки - это да, я просто хотел показать что условие копируется в обе части кода и работает структура так же как while

я конечно не спорю что это всё не актуально при олимпиадном программировании, или при написании курсовых робот, но для больших проектов ... написанный код будет выполняться миллионы раз и экономия миллисекунды даст ведь о себе знать
хехе снять розовые очки ?
 
Текущее время: 22:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru