- 1
- 2
- 3
- 4
- 5
- 6
for (int i = 1; i <= s.Length; ++i) {
if (s[i] == '/') {
s = s.SubString(1, i) + s.SubString(i, MaxInt);
++i;
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+53
for (int i = 1; i <= s.Length; ++i) {
if (s[i] == '/') {
s = s.SubString(1, i) + s.SubString(i, MaxInt);
++i;
}
}
Кручу-верчу запутать хочу. Кто с первого раза догадается, в чём задача кода - получит пирожок с полочки.
P.S. Строки билдеровские, нумерация с 1. SubString принимает индекс начала и количество символов.
+136
private static string RemoveInvalidChars(string source)
{
foreach (var c in invalidChars)
source = source.Replace(c.ToString(), "");
return source;
}
public static string Validate(string source)
{
source = RemoveInvalidChars(source);
return source;
}
+64
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class PolynomialParser {
public Polynomial parse(String rawPolynomial) {
String source = normalizeSourceString(rawPolynomial);
Map<Integer, Integer> result = new HashMap<>();
StringTokenizer tokenizer = new StringTokenizer(source, "[+-]", true);
boolean isCurrentNegative = false;
int currentDegree;
int currentCoefficient;
while (tokenizer.hasMoreTokens()) {
String currentToken = tokenizer.nextToken();
if ("-".equals(currentToken)) {
isCurrentNegative = true;
} else if ("+".equals(currentToken)) {
isCurrentNegative = false;
} else {
if (currentToken.contains("x")) {
if (currentToken.contains("^")) {
String[] tmp = currentToken.split("x\\^");
currentDegree = Integer.parseInt(tmp[1]);
int draftCoefficient = Integer.parseInt(tmp[0]);
currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
} else {
currentDegree = 1;
String[] tmp = currentToken.split("x");
int draftCoefficient = (tmp.length == 0) ? 1 : Integer.parseInt(tmp[0]);
currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
}
} else {
currentDegree = 0;
int draftCoefficient = Integer.parseInt(currentToken);
currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
}
result.put(currentDegree, currentCoefficient);
}
}
return new Polynomial(result);
}
private String normalizeSourceString(String source) {
String result = source.replaceAll("\\s+","");
return result.toLowerCase();
}
}
Из сегодняшнего. Парсинг многочленов.
+108
void Data3Fill(string _TownCheck, string _StreetCheck, string _HouseCheck, string _FlatCheck, string _BloodCheck,
string _InsuranceCheck, string _EndPolCheck, string _DateFutureCheck, string _DoctorCheck, string _DiagnosisCheck, string _ComplaintsCheck, string _VichCheck, string _CancerCheck, string _SurnameCheck, string _NameCheck, string _MidnameCheck,
string _SexCheck, string _StatusCheck, string _HighStatusCheck)
{
...
}
Одному моему другу такой подход кажется нормальным.
+143
#include <stdio.h>
int main(void)
{
int d2[3][3][3];
int i,i2,i3;
for(i = 0; i <= 3; ++i)
for(i2 = 0; i2 <= 3; ++i2)
for(i3 = 0; i3 <= 3; ++i3)
d2[i][i2][i3]=5;
i=0,i2=0,i3=0;
for(i = 0; i <= 3; ++i)
for(i2 = 0; i2 <= 3; ++i2)
for(i3 = 0; i3 <= 3; ++i3)
printf("%d\n",d2[i][i2][i3]);
return 0;
}
играюсь я короче с массивом, этот код компилируется,все печатает но в конце Segmentation fault, почему?
gcc -Wall -Wextra -Werror -Wpedantic -ftrapv -fwrapv -fdiagnostics-show-option -std=gnu11 -o "test" "test.c"
+130
char* obrab_stroki(char*, int);
int move(char*);
int action_register(char*);
int speed(char*);
int condition(char*);
char answer1[25];
uint8_t Output[512];
uint32_t number_for_output=16;
typedef struct { char *name; uint8_t adress; } struct_label;
typedef struct { char *name; uint8_t adress; } struct_goto_label;
//----------------------------------------------------------------------------------------
while (strcmp(qwerty[++string_count],""))
{
str=obrab_stroki(qwerty[string_count], 0);
printf("s:%s\n",str);
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,"{")) fig_skob++;
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,"}")) fig_skob--;
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,"{") && !strcmp(str,"if")) { fig_skob_if++; adres_return[fig_skob_if]=number_for_output+3; }
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,"}") && fig_skob_if>0) { Output[adres_return[fig_skob_if]]=number_for_output; fig_skob_if--;}
if (fig_skob==0)
{
Output[number_for_output++]=0;
Output[number_for_output++]=0;
}
if (!strcmp(qwerty[string_count]+strlen(qwerty[string_count])-1,":"))
{
label[number_label].name=qwerty[string_count];
label[number_label++].adress = number_for_output;
continue;
}
//-------------------------------------------------------------------------------------------
if (!strcmp(str,"r")) if (action_register(qwerty[string_count]) == 1) {printf("ERROR in string: %d", string_count); return 1;} else continue;
if (!strcmp(str,"move")) if (move(qwerty[string_count]) == 1) {printf("ERROR in string: %d", string_count); return 1;} else continue;
if (!strcmp(str,"speed")) if (speed(qwerty[string_count]) == 1) {printf("ERROR in string: %d", string_count); return 1;} else continue;
if (!strcmp(str,"if")) if (condition(qwerty[string_count]) == 1) {printf("ERROR in string: %d", string_count); return 1;} else continue;
//-----------------------------------------------------------------------------------------
char* obrab_stroki(char* qwerty, int i)
{
int count;
char asnwer1[25];
for (count=0; (qwerty[count+i]<='z' && qwerty[count+i]>='a') || (qwerty[count+i]<='Z' && qwerty[count+i]>='A'); count++)
{
answer1[count]=qwerty[count+i];
}
answer1[count]='\0';
return answer1;
}//тут как бы нет ошибок =)
//----------------------------------------------------------------------------------------------
if (qwerty[i]=='-')
{
if (qwerty[i+1]=='1' && qwerty[i+2]=='0')
{
Output[number_for_output++]=answer|MOTOR_SPEC_SPEED_DEC;
Output[number_for_output++]=0;
return 0;
}
else
return 1;
}
Человек писал компилятор. Самые эпичные моменты
−99
def append_card(cards, new_card)
if cards.nil?
new_card == GameEvent::YELLOW_CARD ? 'yellow' : 'red'
elsif cards == 'yellow'
new_card == GameEvent::YELLOW_CARD ? 'two_yellow' : 'yellow_red'
elsif cards == 'red'
new_card == GameEvent::YELLOW_CARD ? 'yellow_red' : 'red'
elsif cards == 'two_yellow'
'two_yellow'
elsif cards == 'yellow_red'
new_card == GameEvent::YELLOW_CARD ? 'two_yellow' : 'yellow_red'
end
end
ничего особенного, просто подсчитываем, какую карточку получил игрок футбольной команды.
а я думал, что что-то понимаю в футболе... я никогда в жизни так не ошибался
−120
//определяем сумму начисленной амортизации+ремонтов на заказы документом "РаспределениеАмортизацииНаЗаказы"
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| НезавершенноеПроизводствоБухгалтерскийУчетОбороты.СчетУчета КАК СчетУчета,
| НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Заказ,
| НезавершенноеПроизводствоБухгалтерскийУчетОбороты.СтоимостьПриход КАК СтоимостьПриход,
| НАЧАЛОПЕРИОДА(НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Период, МЕСЯЦ) КАК Период,
| НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления.НезавершенноеПроизводствоБухгалтерскийУчет.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК НезавершенноеПроизводствоБухгалтерскийУчетОбороты
|ГДЕ
| (НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Регистратор ССЫЛКА Документ.РаспределениеАмортизацииНаЗаказы
| ИЛИ НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Регистратор = &Корректировка)
| И НезавершенноеПроизводствоБухгалтерскийУчетОбороты.СчетУчета = &СчетУчета
|ИТОГИ
| СУММА(СтоимостьПриход)
|ПО
| ОБЩИЕ";
Запрос.УстановитьПараметр("ДатаНач",НачалоМесяца(ДатаНач));
Запрос.УстановитьПараметр("ДатаКон",КонецМесяца(ДатаКон));
Запрос.УстановитьПараметр("СчетУчета", ПланыСчетов.Хозрасчетный.НайтиПоКоду("231"));
Запрос.УстановитьПараметр("Корректировка", Документы.ОперацияБух.НайтиПоНомеру("00000056",Дата(2011,05,01)));
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
СуммаНачисления = Выборка.СтоимостьПриход;
Есть специальная супер секретная бухгалтерская операция которую нужно исключить )))
+65
std::string Operations::getLastError()
{
return "Произошла неизвестная ошибка при выполнении криптооперации";
}
−118
Если Сумма<=0 тогда
НС = Док.СуммыДолга.Добавить();
НС.ВидЗадолженности = Перечисления.ВидыЗадолженности.Кредиторская;
НС.ДоговорКонтрагента = ПолучитьДоговор(Клиент,Док.ВалютаДокумента);
НС.КурсВзаиморасчетов = Док.КурсДокумента;
НС.КратностьВзаиморасчетов=Док.КратностьДокумента;
НС.Сумма = -Сумма;
НС.СуммаРегл = НС.Сумма*НС.КурсВзаиморасчетов/НС.КратностьВзаиморасчетов;
НС.СчетУчетаАвансов = СчетКонтрагента;
НС.СчетУчетаРасчетов = СчетКонтрагента;
Иначе
НС = Док.СуммыДолга.Добавить();
НС.ВидЗадолженности = Перечисления.ВидыЗадолженности.Дебиторская;
НС.ДоговорКонтрагента = ПолучитьДоговор(Клиент,Док.ВалютаДокумента);
НС.КурсВзаиморасчетов = Док.КурсДокумента;
НС.КратностьВзаиморасчетов=Док.КратностьДокумента;
НС.Сумма = Сумма;
НС.СуммаРегл = НС.Сумма*НС.КурсВзаиморасчетов/НС.КратностьВзаиморасчетов;
НС.СчетУчетаАвансов = СчетКонтрагента;
НС.СчетУчетаРасчетов = СчетКонтрагента;
КонецЕсли;
Код исправный, но... любит один наш программер "чтоб побольше строк"... а если добавить дополнительные отступы ("для удобства прочтения"), то будет казаться, что программа невообразимо длинная и сложная