- 1
- 2
- 3
- 4
Class1* c1 = (Class1*)malloc(sizeof(Class1)*N);
Class2* c2 = (Class2*)malloc(sizeof(Class2)*N);
for (long i = 0; i < N; i++) c1[i] = Class1();
for (long i = 0; i < N; i++) c2[i] = Class2();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+19
Class1* c1 = (Class1*)malloc(sizeof(Class1)*N);
Class2* c2 = (Class2*)malloc(sizeof(Class2)*N);
for (long i = 0; i < N; i++) c1[i] = Class1();
for (long i = 0; i < N; i++) c2[i] = Class2();
Рассказать ему про new[] / delete[]?
+140
if (maxWidth < 96) {maxWidth = 96 }
Большой Брат следит за тобой, переменная.
+102
switch (occupation.name)
{
case "architecture and engineering occupations:":
if (occupation.isNB)
{
if (occupation.maleId == ex_nb_id)
{
model.ArchitectureAndEngineeringOccupationsMalePercentageNB = occupation.percent;
}
if (occupation.femaleId == ex_nb_id)
{
model.ArchitectureAndEngineeringOccupationsFemalePercentageNB = occupation.percent;
}
}
else
{
if (occupation.maleId == ex_city_id)
{
model.ArchitectureAndEngineeringOccupationsMalePercentageCity = occupation.percent;
}
if (occupation.femaleId == ex_city_id)
{
model.ArchitectureAndEngineeringOccupationsFemalePercentageCity = occupation.percent;
}
}
break;
case "arts, design, entertainment, sports, and media occupations:":
if (occupation.isNB)
{
if (occupation.maleId == ex_nb_id)
{
model.ArtsDesignEntertainmentSportsAndMediaOccupationsMalePercentageNB = occupation.percent;
}
if (occupation.femaleId == ex_nb_id)
{
model.ArtsDesignEntertainmentSportsAndMediaOccupationsFemalePercentageNB = occupation.percent;
}
}
else
{
if (occupation.maleId == ex_city_id)
{
model.ArtsDesignEntertainmentSportsAndMediaOccupationsMalePercentageCity = occupation.percent;
}
if (occupation.femaleId == ex_city_id)
{
model.ArtsDesignEntertainmentSportsAndMediaOccupationsFemalePercentageCity = occupation.percent;
}
}
break;
case "business and financial operations occupations:":
if (occupation.isNB)
{
if (occupation.maleId == ex_nb_id)
{
model.BusinessAndFinancialOperationsOccupationsMalePercentageNB = occupation.percent;
}
if (occupation.femaleId == ex_nb_id)
{
model.BusinessAndFinancialOperationsOccupationsFemalePercentageNB = occupation.percent;
}
}
else
{
if (occupation.maleId == ex_city_id)
{
model.BusinessAndFinancialOperationsOccupationsMalePercentageCity = occupation.percent;
}
if (occupation.femaleId == ex_city_id)
{
model.BusinessAndFinancialOperationsOccupationsFemalePercentageCity = occupation.percent;
}
}
break;
case "community and social services occupations:":
if (occupation.isNB)
{
if (occupation.maleId == ex_nb_id)
{
model.CommunityAndSocialServicesOccupationsMalePercentageNB = occupation.percent;
}
if (occupation.femaleId == ex_nb_id)
{
model.CommunityAndSocialServicesOccupationsFemalePercentageNB = occupation.percent;
}
}
else
{
if (occupation.maleId == ex_city_id)
{
model.CommunityAndSocialServicesOccupationsMalePercentageCity = occupation.percent;
}
if (occupation.femaleId == ex_city_id)
{
model.CommunityAndSocialServicesOccupationsFemalePercentageCity = occupation.percent;
}
}
эх жаль здесь ограничение на 100 строк всего лишь...не поместилось всего 200+ отборного ветвления. известный до боли мегапрограммер наваял очередной шедевр)))) по мотивам http://govnokod.ru/10448 и http://govnokod.ru/10313 и еще http://govnokod.ru/12136...
−119
ВЫБРАТЬ
ЕСТЬNULL(СрокПолезногоИспользования, 0) КАК СрокПолезногоИспользования
ИЗ
РегистрСведений.РасчетАмортизацииОС.СрезПоследних
ГДЕ
ОС = &ОсновноеСредство
Типовая конфигурация. Там такой запрос используют в печатной форме Основных средств... Думает по 10-15 минут
2 глупых ошибки:
1. Проверка на NULL, в данном случае его быть не может (хотя это особо ни на что не влияет)
2. Условие по законам 1С должно применяться в РегистрСведений.РасчетАмортизацииОС.Срез Последних(,ОС = &ОсновноеСредство), иначе сильно падает скорость выполнения.
−120
Пока ТЗРаспределения.ТаблицаРеализацийИВозвратовНеСвернутая.ТаблицаНоменклатур.ТаблицаРеализацийНеСв.ТаблицаВозвратовНеСв.ПолучитьСтроку()=1 Цикл
СтрокаВозвратов = СтрокаВозвратов + ТЗРаспределения.ТаблицаРеализацийИВозвратовНеСвернутая.ТаблицаНоменклатур.ТаблицаРеализацийНеСв.ТаблицаВозвратовНеСв.Возврат + ";" ;
КонецЦикла;
Очередной шедевр... Живем в 6(!!!)-мерном мире. У меня чуть мозг не взорвался.
−122
Пока Выборка1...
...Выборка2...
...
Выборка7 = ПрименяемостьНаПрибор_ПоискВхождений(Выборка6.НомерЗаписиРСДСЕГл, НаДату).Выбрать();
Пока Выборка7.Следующий() Цикл
ПрименяемостьПоВхождению = ПрименяемостьПоВхождению * Выборка7.Применяемость;
Если Выборка7.НомерЗаписиРСДСЕГл = 0 Тогда
// Достигнут прибор
Применяемость = Применяемость + ПрименяемостьПоВхождению;
Иначе
Выборка8 = ПрименяемостьНаПрибор_ПоискВхождений(Выборка7.НомерЗаписиРСДСЕГл, НаДату).Выбрать();
Пока Выборка8.Следующий() Цикл
ПрименяемостьПоВхождению = ПрименяемостьПоВхождению * Выборка8.Применяемость;
Если Выборка8.НомерЗаписиРСДСЕГл = 0 Тогда
// Достигнут прибор
Применяемость = Применяемость + ПрименяемостьПоВхождению;
Иначе
Сообщить("Превышение значения выборки... Странная ситуация, вообще не должна возникать!!!");
Сообщить("Срочно обратитесь в Отдел ВТ. Постарайтесь записать ситуацию в которой возникла эта ошибка... !!!");
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
...
...
По мотивам предыдущих постов. Все из одной конфигурации.
−125
Если СтрНВрОбщ.Действия = Перечисления.Действия.Удалить Тогда
// Такого быть не должно...
Сообщить("Это сообщение не должно появиться... Обратитесь в отдел ИТ! ");
ИначеЕсли СтрНВрОбщ.Действия = Перечисления.Действия.Добавить Тогда
//Тру-ля-ля... другой говнокод
КонецЕсли;
При чем такого действительно "быть не должно", т.к. проверка есть и в другом модуле.
−121
Для каждого СтрГотИзд Из ГотовыеИзделия Цикл
СсылкаДСЕ = ОпределитьДСЕГотовоеИзделиеПоНаименованию(СтрГотИзд.Значение);
СсылкаЗаписьРС = НайтиПервуюЗаписьРС_ПоДСЕ(СсылкаДСЕ, ЭтотОбъект.НаДату);
Если СсылкаЗаписьРС = Неопределено Тогда
Предупреждение("На эту дату данных не существует!");
Иначе
ФормаИндикатора.КомментарийОбработкиДанных = "Построение отчета: " + СсылкаДСЕ.ВидПредмета + " - " + СсылкаДСЕ.Наименование + "";
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные1, 1, СсылкаДСЕ, СсылкаЗаписьРС.Применяемость, Неопределено, ФормаИндикатора);
Выборка2Ур = НайтиЗаписиРС_ПоКодуДСЕГл(СсылкаЗаписьРС.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
Пока Выборка2Ур.Следующий() цикл
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные2, 2, Выборка2Ур.ДСЕВходящий, Выборка2Ур.Применяемость, Выборка2Ур, ФормаИндикатора);
Выборка3Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка2Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
Пока Выборка3Ур.Следующий() цикл
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные3, 3, Выборка3Ур.ДСЕВходящий, Выборка3Ур.Применяемость, Выборка3Ур, ФормаИндикатора);
Выборка4Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка3Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
Пока Выборка4Ур.Следующий() цикл
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные4, 4, Выборка4Ур.ДСЕВходящий, Выборка4Ур.Применяемость, Выборка4Ур, ФормаИндикатора);
Выборка5Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка4Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
Пока Выборка5Ур.Следующий() цикл
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные5, 5, Выборка5Ур.ДСЕВходящий, Выборка5Ур.Применяемость, Выборка5Ур, ФормаИндикатора);
Выборка6Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка5Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
Пока Выборка6Ур.Следующий() цикл
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные6, 6, Выборка6Ур.ДСЕВходящий, Выборка6Ур.Применяемость, Выборка6Ур, ФормаИндикатора);
Выборка7Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка6Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
Пока Выборка7Ур.Следующий() цикл
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные7, 7, Выборка7Ур.ДСЕВходящий, Выборка7Ур.Применяемость, Выборка7Ур, ФормаИндикатора);
Выборка8Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка7Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
Пока Выборка8Ур.Следующий() цикл
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные8, 8, Выборка8Ур.ДСЕВходящий, Выборка8Ур.Применяемость, Выборка8Ур, ФормаИндикатора);
Выборка9Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка8Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
Пока Выборка9Ур.Следующий() цикл
ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные9, 9, Выборка9Ур.ДСЕВходящий, Выборка9Ур.Применяемость, Выборка9Ур, ФормаИндикатора);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Функция НайтиЗаписиРС_ПоКодуДСЕГл(КодДСЕГл, НаДату, ДопустимаяЗамена = 0) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СтруктураПриборов1СрезПоследних.ДСЕГлавный,
| СтруктураПриборов1СрезПоследних.ДСЕВходящий КАК ДСЕВходящий,
| СтруктураПриборов1СрезПоследних.Прибор,
| СтруктураПриборов1СрезПоследних.НомерЗаписиРСДСЕВх,
| СтруктураПриборов1СрезПоследних.НомерЗаписиРСДСЕГл,
| СтруктураПриборов1СрезПоследних.ДопустимаяЗамена,
| СтруктураПриборов1СрезПоследних.Применяемость,
| СтруктураПриборов1СрезПоследних.ДСЕВходящий.Ссылка,
| СтруктураПриборов1СрезПоследних.ДСЕВходящий.ВидПредмета КАК ВидПредмета,
| СтруктураПриборов1СрезПоследних.ДСЕВходящий.ВидПредмета.Порядок КАК ДСЕВходящийВидПредметаПорядок,
| СтруктураПриборов1СрезПоследних.ДСЕВходящий.Код КАК Код,
| СтруктураПриборов1СрезПоследних.Заимствованные,
| СтруктураПриборов1СрезПоследних.Период,
| СтруктураПриборов1СрезПоследних.ДатаОкончанияИспользования,
| СтруктураПриборов1СрезПоследних.ВводНового,
| СтруктураПриборов1СрезПоследних.ИзменениеСоставаИзделия
|ИЗ
| РегистрСведений.СтруктураПриборов1.СрезПоследних(
| &НаДату,
| НомерЗаписиРСДСЕГл = &КодДСЕГл
| И (ДатаОкончанияИспользования = &ПустаяДата
| ИЛИ ДатаОкончанияИспользования > &НаДату)
| И ДопустимаяЗамена = &ДопустимаяЗамена) КАК СтруктураПриборов1СрезПоследних
|
|УПОРЯДОЧИТЬ ПО
| ДСЕВходящийВидПредметаПорядок,
| Код";
Запрос.УстановитьПараметр("НаДату", НаДату);
Запрос.УстановитьПараметр("КодДСЕГл", КодДСЕГл);
Запрос.УстановитьПараметр("ПустаяДата", '00010101');
Запрос.УстановитьПараметр("ДопустимаяЗамена", ДопустимаяЗамена);
Возврат(Запрос.Выполнить());
КонецФункции
Прелесть! Выполняется около минуты. При чем этот код дублируется почти во всех отчетах.
После оптимизации объем кода сократился в 3 раза, а время выполнения составило 1-2 сек.
−122
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() > 0 Цикл
// что-то делаем
КонецЦикла;
+139
/* В комментариях то что хотел Автор от своей программы */
/* Радует однако, что она компилируется и во время */
/* работы не выдает ни каких ошибок */
/* Порядок операторов сохранен. */
/* Тот же код только вырезанно "лишнее". */
/* Эта ф-ия находится в другом cpp файле */
float f(float x, float y)
{
/* Тут что-то происходит с x и y */
return x, y;
}
void main(void)
{
float **m;
/* ... */
float f(float x, float y);
/* ... */
/* Задается N */
float N;
/* ... */
/* Выделяется память под массив m[N][2] */
m = (float **)malloc(sizeof(float*));
for(i = 0; i < N; i++)
{
m[i] = (float*)malloc(sizeof(float*) * 2);
}
/* ... */
for(i = 0; i < N; i++)
{
/* Массив заполняется числами */
/* В m[i][] должны быть записанны числа x, y измененый ф-ей f */
/* т. е. m[i][0] = xf */
/* m[i][1] = yf */
for(j = 0; j < 2; j++)
{
m[i][j] = f(x, y);
/* ... */
}
}
/* ... */
}