Практическая информатика


         

и напечатать сумму всех элементов.


Пример

Пусть нужно ввести с клавиатуры массив чисел и напечатать сумму всех элементов. Приведем несколько решений этой задачи.

  1. Сначала введем количество элементов массива, а затем заполним его элементами, одним за другим. Обратите внимание, что первый элемент массива имеет индекс 0, а последний - на единицу меньший, чем размерность массива. print "Введите число элементов массива: " sn = gets.chop!; n = sn.to_i b = Array.new(n) # создали массив из n элементов s = 0 # обнулили сумму for i in 0 .. n - 1 print "Введите #{i+1}-й элемент массива: " b[i] = gets.chop!.to_f; s = s + b[i] end print "Сумма всех элементов массива равна ", s, "\n"
  2. В этой версии программы все числа вводятся сразу в виде одной строки, в которой числа отделяется друг от друга пробелом (например, 23 -34.67 100.5).


Встроенный метод split разделяет строку на элементы массива, аргументом этого метода является разделитель (если разделителем является пробел, то можно вызвать этот метод без аргумента). Таким образом, если бы мы договорились разделять числа, например, точкой с запятой, то вызов метода выглядел бы так: a.split(';').

Для определения длины массива мы применили метод length (можно заменить на эквивалентный ему метод size).

puts "Введите массив чисел (разделяя их пробелами):" a = gets.chop! b = a.split # разбили строку на отдельные числа s = 0 for i in 0 .. b.length - 1 s += b[i].to_f end puts "Сумма всех элементов массива равна #{s}"

В Ruby имеются четыре конструкции, задаваемые ключевыми словами break, redo, next и retry, которые изменяют обычный порядок выполнения циклов. Их действие описано в следующей таблице.

breakНемедленно прекращает выполнение цикла; управление передается на утверждение, расположенное сразу за циклом
redoПовторяет тело цикла с начала, не пересчитывая условие выполнения цикла (не переходя к следующему элементу в случае итератора)
nextПропускает часть тела цикла, следующую за ним, и переходит к следующей итерации
retryНачинает выполнение цикла с самого начала



Содержание  Назад  Вперед