Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Оцени свой опыт программирования на Си/Си++


Автор: Thunderbolt 17.9.2014, 21:17
Оцени свой опыт программирования на Си/Си++

Авторы анализатора PVS-Studio предлагают вам проверить свою внимательность. Мы отобрали некоторые фрагменты Си/Си++ кода, в которых мы выявили ошибки с помощью PVS-Studio. Все фрагменты взяты из известных Open-Source проектов. Предлагаем вам посоревноваться с анализаторами в прозорливости и попробовать самостоятельно найти ошибки. Вам будет предложено 15 случайно выбранных заданий.

Начать игру: http://q.viva64.com/

Автор: feodorv 2.10.2014, 07:15
Спасибо за тест!

Одно но: не всегда понятно, куда именно нужно указать. Например:
Код

 if (areacode & sC0Min1Max) 
 {
     limit[0] = fAxisMin[0];
     limit[1] = fAxisMin[1];
 } 
 else if (areacode & sC0Max1Min) 
 {
     limit[0] = fAxisMax[0];
     limit[1] = fAxisMin[1];
 } 
 else if (areacode & sC0Max1Max) 
 {
     limit[0] = fAxisMax[0];
     limit[1] = fAxisMax[1];
 } 
 else if (areacode & sC0Min1Max) 
 {
     limit[0] = fAxisMin[0];
     limit[1] = fAxisMax[1];
  }
  ....
}

Я, естественно, ткнул мышью во второй экземпляр sC0Min1Max, на что тест мне написал "Incorrect", нужно было в первый. А какая разница?)))

Автор: Guinness 2.10.2014, 14:54
sC0Min1Max - MIN и  MAX, меняем fAxisMin[0] и fAxisMin[1]. А должны были бы fAxisMin[0] и fAxisMax[1]. я так понимаю.

Автор: borisbn 2.10.2014, 15:59
Я понял, что в первой строке должно быть
if (areacode & sC0Min1Min) 

Автор: Guinness 2.10.2014, 16:04
Цитата(borisbn @  2.10.2014,  16:59 Найти цитируемый пост)
Я понял, что в первой строке должно быть
if (areacode & sC0Min1Min) 

В смысле, да, неправильно объяснил.

Автор: feodorv 2.10.2014, 16:30
Цитата(Guinness @  2.10.2014,  15:54 Найти цитируемый пост)
sC0Min1Max - MIN и  MAX, меняем fAxisMin[0] и fAxisMin[1]. А должны были бы fAxisMin[0] и fAxisMax[1]. я так понимаю

Хотя да, нужен именно первый экземпляр sC0Min1Max (вместо которого нужен sC0Min1Min). Прошу прощения)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)