ЙажаСценарий / Говнокод #18876 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Neopolitan, (Updated )

Комментарии (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, вывернуть мозг наизнанку при работе с асинхронными вызовами, осознать их преимущества и недостатки" и общепрограммистские советы "Следует придерживаться единого стиля и следить за пробелами", "Понятный код важнее знания всех особенностей применения операторов", "Если не нравится язык, лучше не изучать его, а подождать, если есть возможность, до того момента, пока он понравится".
          Ответить
  • Кстати, комменты я начал писать не с начала. Вся херня, которая написана в первых строках там и была. Сам еле понял, что надо сделать
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8