1. JavaScript / Говнокод #18876

    +1

    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
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    /*дан набор целых чисел. задача: написать функцию.
     которая вернет наибольшее значение из ряда
     неделимое на заданное число. числитель указывается в виде
     порядкового номера, который равен позиции в этом же ряде.
     Позиция в ряде начинается с 1, не с 0.
     */
    do{
    	var prog="true";
    
    	var numlen, div,div0=1, nums=[], res=0, out=[];
    
    // выбор режима заполнения
    
    	var filling= confirm("Хотите заполнить числовой ряд автоматически?");
    
    	if (filling === true)
    	{   
    //определение длинны нового ряда
    	//с проверкой на нулевую длинну ряда
    	
    	do{	
    	var numlen=+((Math.random() * 10).toFixed(0)||10);
    	}
    	while(numlen===0);
    		alert("длинна числового ряда: " + numlen);
    		
    		// автоопределение данных нового ряда
    	for (numlenI = 0;numlenI < numlen;numlenI++)
    	{
    		nums[numlenI] = +((Math.random() * 10).toFixed(0)||"10");
    		alert(nums);
    	};
    
    	}
    	else  // ручное определение данных ряда
    	{
    // что будет. если нажать cancel?
    		nums= ((prompt("Введите новый ряд целых чисел")) || "1");
    		alert("длинна числового ряда: " + nums.length);
    	};
    
    	
    	/*варианты добавления: 
    	 1) добавить подциклы if с alert'ами в виде
    	 //вертикального меню
    	 
    	 */
    	//выбираем порядковый номер числителя с валидатором
    	do {
    		div0 = Number((prompt("Задайте порядковый номер числителя из ряда", 1))||1);
    		var control=0;
    		if(div0<1||div0>numlen||isNaN(div0)){
    			alert("Нужно ввести в пределах диапазона ряда");
    		}
    		else control=1;
    	}
    	while ( control===0);
    	// проверяем деление на ноль
    	do{
    		control=0;
    		
    		if(nums[div0-1]===0){
    			div0=+prompt("Задайте другой порядковый номер числителя");
    		}
    		else{
    		control=1;
    		div = (nums[div0 - 1]);
    		}
    		
    	}
    	while(control===0);
    	
    	
    	
    //заносим неделемы числа
    	alert(" числитель: " + div);
    	for (i = 0;i < nums.length;i++)
    	{
    		if (nums[i] % +div != 0)
    		{
    			out.push(+nums[i]);
    		}
    	};
    
    
    //вычисляем наибольшее значение с валидаторами
    
    res=Math.max.apply(null,out);
    	if(isNaN(res)){
    		alert(div);
    		alert("Делятся все числа \n или что-то пошло не так");
    	}
    	else alert("наибольшее неделимое число из ряда: " + res);
    	prog = confirm("хотите продолжить?");
    } while(prog === true);
    
    alert("Спасибо за тестирование программы 8-) ®©");

    Прошу обливать кодец критикой. Как уменьшить это ковно? Код писался намеренно без использования обьектов, функций и рег выражений. Вся лажа в процессе изучения.

    Запостил: Neopolitan, 16 Октября 2015

    Комментарии (11) RSS

    • Выложил, как было. Даже ревью не делал, чтобы было смешнее
      Ответить
    • > задача: написать функцию.
      Почему написана куча говна с алертами вместо одной функции?
      Ответить
    • Alert т.к. пишу на андроид ide и aletr максимально комфортно выводит результат. Задание - то еще говно. Функции, рег выражения и прочую прелесть использовать нельзя по условию задачи. Я тоже спросил: нафига тогда написали "написать функцию"? В ответ получил утупленный взгляд
      Ответить
      • Где бы это говно не просили написать - валить оттуда надо!
        Ответить
        • Говночую.
          Ответить
        • Свалил. И решил навалить сюда т.к. сам понял его методы обучения. Но критика - вещь упертая. Написал, забыл, положил. Что еще не так?
          Ответить
    • > Задание - то еще говно
      > Функции <...> использовать нельзя по условию задачи.
      Действительно

      > prog="true";
      > if (filling === true)
      > control===0
      1. Нелогичные логические метания (true/false, if(filling))

      > длинны
      2. Русский язык: длины

      > +((Math.random() * 10).toFixed(0)||10)
      3. Болезнетворное использование слабой типизации
      Math.floor(Math.random() * 10) + 1
      или путь JS с |0: (Math.random() * 10 | 0) + 1
      Кстати, этот код работает не так, как выглядит, поскольку 0..toFixed(0)||10 === '0'||10 === '0'.

      > numlenI
      > i
      4. Переменная не определена. (Стоит попробовать 'use strict')

      > nums= ((prompt("Введите новый ряд целых чисел")) || "1");
      Это баг или фича для того, чтобы ввести цифры вместо чисел?
      Ответить
      • > дан набор целых чисел. задача: написать функцию.
        > которая вернет наибольшее значение из ряда
        > неделимое на заданное число. числитель указывается в виде
        > порядкового номера, который равен позиции в этом же ряде.
        > Позиция в ряде начинается с 1, не с 0.
        Питушня какая-то.

        > числитель указывается в виде порядкового номера
        Кто числитель-то?! К кому ты обращаешься, блядь?! Натуральные числа здесь, нахуй! Кто числитель-то, бля? Я уже не набор, бля, я ряд, нахуй!
        Ответить
        • Лучше и не скажешь. Думаешь я в нормальном состоянии от этой херни. Про числа, цифры и сукаблядьнахуйвротегоебать ебаный ряд я в курсе. Что еще сажешь по сути? Да. Забыл написать. Я ж, мать его, первак недоучка. Учу только пару месяцев эту лажу (JS). Оттуда ноги и растут)
          Ответить
          • > Что еще сажешь по сути?
            По коду я, хоть и кратко, но почти всё сказал. Про логические значения упомянул, про важность объявления переменных - тоже, про необходимость аккуратного обращения с типами - тоже.

            Остаются только общие комментарии к задаче вроде "Без функций - это неправильно, даже для обучения", JS-советы вроде "Пусть тип переменной будет известен, даже если можно пихнуть строку вместо числа, пусть это будет число, если по смыслу требуется число", "Стоит попробовать поиграть с Node.js, вывернуть мозг наизнанку при работе с асинхронными вызовами, осознать их преимущества и недостатки" и общепрограммистские советы "Следует придерживаться единого стиля и следить за пробелами", "Понятный код важнее знания всех особенностей применения операторов", "Если не нравится язык, лучше не изучать его, а подождать, если есть возможность, до того момента, пока он понравится".
            Ответить
    • Кстати, комменты я начал писать не с начала. Вся херня, которая написана в первых строках там и была. Сам еле понял, что надо сделать
      Ответить

    Добавить комментарий