1. 1C / Говнокод #8247

    −154

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    case 2: //редактирование таблицы
    			do
    			{
    				for (i = 0; i < size; i++) //вывод таблицы, чтобы видно было, что нужно изменять
    				{
    					for (j = 0; j < 4; j++)
    					{
    						for (k = 0; k < 4; k++)
    						{
    							adres[k] = ((maska << (24 - 8 * k)) & bin_adres[i][j]) >> (24 - 8 * k);
    						}
    						cout << adres [0] << "." << adres [1] << "." << adres [2] << "." << adres [3] << "\t";
    					}
    					cout << endl;
    				}
    				cto ("Наберите необходимый адрес назначения" , s);
    				cout << s << endl;
    				for (j = 0; j < 4; j++)
    				{
    					cin >> adres [j];
    					if (adres[j] < 0 || adres[i] > 255) //проверка каждой введенной цифры на соответствие интервалу
    					{
    						cto ("Вы ввели неверное число. Введите число в диапазонe 0-255" , s);
    						cout << s << endl;
    						j--;
    					}
    					else
    						crv = (adres[0] << 24) + (adres[1] << 16) + (adres[2] << 8) + adres[3]; 
    				}
    				for (i = 0; i < size; i++) //перебор по строкам всего массива
    				{
    					if (crv == bin_adres[i][0]) //сравниваем первый элемент каждой строки, с введенным значением
    					{
    						temp = i; //получаем номер строки, которую необходимо редактировать
    						break;
    					}
    				}
    				cto ("Что необходимо изменить?\n Адрес назначения (нажмите 1)\n Адрес источника (нажмите 2)\n Шлюз(Нажмите 3)\n Маску(нажмите 4)\n", s);
    				cout << s << endl;
    				number = 0;
    				cin >> number; //получаем номер столбца для изменения
    				number--; //для правильного определения индекса элемента в массиве
    				cto ("Введите элемент", s);
    				cout << s << endl;
    				for (i = 0; i < 4; i++)
    				{
    					cin >> adres[i];
    					if (adres[i] < 0 || adres[i] > 255)
    					{
    						cto ("Вы выпали из диапазона 0-255. Введите нормальное число", s);
    						cout << s << endl;
    						i--;
    					}
    				}
    				bin_adres[temp][number] = (adres[0] << 24) + (adres[1] << 16) + (adres[2] << 8) + adres[3]; //записываем данный элемент в заданную строку
    				cto ("Для выхода из редактирования нажмите 1 (продолжить - любая цифра)", s);
    				cout << s << endl;
    				cin >> number;
    			}
    			while (number != 1);
    			system("cls"); //очиста окна командной строки
    			break;

    Команда стажеров писала маршрутизатор на базе 1С предприятия и вот что получилось.

    alexoy, 19 Октября 2011

    Комментарии (3)
  2. 1C / Говнокод #8241

    −137

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    Для Каждого Стр0 из ДеревоНаФорме.Строки Цикл
    		Сум0 =0;
    	Для Каждого Стр1 из	Стр0.Строки Цикл
    		Сум1 =0;
    		Для Каждого Стр2 из Стр1.Строки Цикл;
    			 Попытка
    		Стр2.СуммаВсего = Стр2.Количество * Стр2.Нормочасы*ЦенаНормочаса *(1-Стр2.СкидкаНаРаботы/100)+ Стр2.Количество * Стр2.Цена *(1-Стр2.СкидкаНаЗапчасти/100) ;
    		Стр2.СтоимостьУстановки = Стр2.Количество * Стр2.Нормочасы*ЦенаНормочаса;		
    				Сум1=Сум1+ Стр2.СуммаВсего;
    		 	 исключение КонецПопытки;
    		 КонецЦикла;
    		 Стр1.СуммаВсего = Сум1;
    		 Сум0 = Сум0+Сум1;
    	 КонецЦикла;
    	 Стр0.СуммаВсего = Сум0; 
    КонецЦикла;

    Умопомрачительный подсчёт итога по колонке "СуммаВсего" в дереве.
    ДеревоНаФорме - дерево на форме. При интеркативном изменении числовых реквизитов - пересчитывается строка, но! на всякий случай здесь - в Попытке-Исключении пересчитываем СуммуВсего по строке ещё раз... Ну и конечно порадовала изящность конструкции....

    Pauchog, 19 Октября 2011

    Комментарии (7)
  3. 1C / Говнокод #8200

    −155

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Девушкой, которую я любил
    Оказался педофил
    Он на 1С все показал
    И научил
    Теперь я здесь настраиваю все
    Прямо как во сне

    Александр Сергеевич Пушкин-Блок

    alexoy, 14 Октября 2011

    Комментарии (15)
  4. 1C / Говнокод #8190

    −155

    1. 1
    1

    Минимальная программа на 1С

    alexoy, 14 Октября 2011

    Комментарии (19)
  5. 1C / Говнокод #8180

    −143

    1. 1
    2. 2
    1С.................
    Когда копро уже не вставляет.

    ReallyBugMeNot, 13 Октября 2011

    Комментарии (2)
  6. 1C / Говнокод #8176

    −154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Исходные коды на 1С!
    На джаву перейти мы рады,
    Но не стерплю такой утраты,
    Я снова перейду на 1С
    
    А мой товарищ одинокий
    Нам закодирует EE

    Ну и кто сказал, что Маяковский умер?

    alexoy, 12 Октября 2011

    Комментарии (6)
  7. 1C / Говнокод #8171

    −134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    Для Каждого ТекущаяСтрока Из ОтработанноеВремя Цикл
            ТекущаяСтрока.ИтогоЧасов=0;
    		ТекущаяСтрока.ИтогоЧасов=ТекущаяСтрока.ПервыйЧасов1+ТекущаяСтрока.ПервыйЧасов2+ТекущаяСтрока.ПервыйЧасов3+
    		ТекущаяСтрока.ПервыйЧасов4+ТекущаяСтрока.ПервыйЧасов5+ТекущаяСтрока.ПервыйЧасов6+ТекущаяСтрока.ПервыйЧасов7+
    		ТекущаяСтрока.ПервыйЧасов8+ТекущаяСтрока.ПервыйЧасов9+ТекущаяСтрока.ПервыйЧасов10+ТекущаяСтрока.ПервыйЧасов11+
    		ТекущаяСтрока.ПервыйЧасов12+ТекущаяСтрока.ПервыйЧасов13+ТекущаяСтрока.ПервыйЧасов14+ТекущаяСтрока.ПервыйЧасов15+
    		ТекущаяСтрока.ПервыйЧасов16+ТекущаяСтрока.ПервыйЧасов17+ТекущаяСтрока.ПервыйЧасов18+ТекущаяСтрока.ПервыйЧасов19+
    		ТекущаяСтрока.ПервыйЧасов20+ТекущаяСтрока.ПервыйЧасов21+ТекущаяСтрока.ПервыйЧасов22+ТекущаяСтрока.ПервыйЧасов23+
    		ТекущаяСтрока.ПервыйЧасов24+ТекущаяСтрока.ПервыйЧасов25+ТекущаяСтрока.ПервыйЧасов26+ТекущаяСтрока.ПервыйЧасов27+
    		ТекущаяСтрока.ПервыйЧасов28+ТекущаяСтрока.ПервыйЧасов29+ТекущаяСтрока.ПервыйЧасов30+ТекущаяСтрока.ПервыйЧасов31;	
    		
    		ТекущаяСтрока.ИтогоОклад=0;
    		ТекущаяСтрока.ИтогоОклад= ОКр(ТекущаяСтрока.ИтогоЧасов/ТекущаяСтрока.НормаЧасов*ТекущаяСтрока.Оклад,2);
    		
    		ТекущаяСтрока.Выручка=0;
    		
    		Если ТекущаяСтрока.ПервыйЧасов1>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(1, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;	
    		Если ТекущаяСтрока.ПервыйЧасов2>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(2, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе	
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;	
    		Если ТекущаяСтрока.ПервыйЧасов3>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(3, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;	
    		Если ТекущаяСтрока.ПервыйЧасов4>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(4, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;
    		Если ТекущаяСтрока.ПервыйЧасов5>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(5, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;	
    
    ************************************************************  и так далее :)

    Почти 300 строк говнокода превращаются в 10 :D

    Для Инд = 1 По 31 Цикл
    Если ТекущаяСтрока["ПервыйЧасов" + Инд] > 0 Тогда
    ТекущаяСтрока.ИтогоЧасов = ТекущаяСтрока.ИтогоЧасов + ТекущаяСтрока["ПервыйЧасов" + Инд];

    НайденнаяСтрока = РабочаяТаблица.Найти(Инд, "День");
    Если НайденнаяСтрока <> Неопределено Тогда
    ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Пр одано;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    VikUp, 12 Октября 2011

    Комментарии (7)
  8. 1C / Говнокод #8149

    −154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Мое решение является эффективным и уникальным.
    Решение задачи базируется на принципе двойственности.
    В первом стеке будем хранить сами числа, а во втором - результат XOR над ними.
    [] []
    push a ->[a] [a]
    push b -> [b a] [a^b a]
    pop -> b^(a^b) = a [a] [a]
    Однако после такого pop пропадает b.
    Как с этим бороться я расскажу через 24 часа.

    Задача о двух стеках. Поэтапное решение для повышения слюноотделения.

    alexoy, 10 Октября 2011

    Комментарии (24)
  9. 1C / Говнокод #8136

    −154

    1. 1
    2. 2
    Задача о двух стеках. Как продвигается решение?
    Через 2 часа будет рабочий вариант.

    alexoy, 09 Октября 2011

    Комментарии (28)
  10. 1C / Говнокод #8128

    −153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Итак, у вас есть два стека с ограничением на размер - N. Стеки поддерживают операции push, pop, top.
    pop пустого стека, как и push заполненного стека вызывает соответствующее исключение.
    Необходимо из этих двух стеков смоделировать стек с таким же размером, но с дополнительным свойством -\
    push заполненного стека вызывает затирание последнего элемента стека, push(41,[1,2,3]) -> [41,1,2] ,\
    где N=3.
    Время пошло. Язык программирования любой.

    Да, это не говнокод, но 90% кандидатов не могут ее решить. (Наверное, потому, что язык собеседования - 1С)

    alexoy, 08 Октября 2011

    Комментарии (78)