Есть массив, проверить, является ли он перестановкой - QBasic
Формулировка задачи:
Проблема!
Есть массив, проверить, является ли он перестановкой.Не работае программа при вводе одинаковых чисел((((
Подскажите, как узнать, есть ли одинаковые элементы?
Решение задачи: «Есть массив, проверить, является ли он перестановкой»
textual
Листинг программы
CLS RANDOMIZE TIMER n = 10 DIM a(n) FOR i = 1 TO n a(i) = FIX(90 * RND) PRINT a(i); NEXT PRINT : PRINT FOR i = 1 TO n k = 0 FOR j = 1 TO n IF a(i) = a(j) THEN k = k + 1 IF k > 1 THEN PRINT "NO": END NEXT j, i PRINT "YES" END
Объяснение кода листинга программы
CLS— очистка экранаRANDOMIZE TIMER— установка генератора случайных чиселn = 10— размер массиваDIM a(n)— создание массива a размером nFOR i = 1 TO n— цикл по индексам массива aa(i) = FIX(90 * RND)— заполнение массива a случайными числами от 0 до 90PRINT a(i);— печать значения элемента массива aNEXT— переход к следующему элементу массиваPRINT : PRINT— печать двух знаков:, для разделения выводаFOR i = 1 TO n— цикл по индексам массива ak = 0— инициализация переменной k для подсчета повторяющихся элементовFOR j = 1 TO n— цикл по индексам массива aIF a(i) = a(j) THEN k = k + 1— увеличение переменной k, если текущий элемент массива a(i) равен любому другому элементу массива a(j)IF k > 1 THEN PRINTNO: END— печатьNO, если количество повторяющихся элементов больше 1NEXT j, i— переход к следующим элементам массива aPRINTYES` — печатьYES`, если все элементы массива уникальныEND— завершение программы