Compare commits
No commits in common. 'main' and 'lab1' have entirely different histories.
@ -1,68 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
def find_min_element_for(arr)
|
|
||||||
min_element = arr[0]
|
|
||||||
for element in arr
|
|
||||||
min_element = element if element < min_element
|
|
||||||
end
|
|
||||||
min_element
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def find_min_element_while(arr)
|
|
||||||
min_element = arr[0]
|
|
||||||
index = 0
|
|
||||||
while index < arr.size
|
|
||||||
min_element = arr[index] if arr[index] < min_element
|
|
||||||
index += 1
|
|
||||||
end
|
|
||||||
min_element
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def find_first_positive_index_for(arr)
|
|
||||||
for index in 0...arr.size
|
|
||||||
return index if arr[index] > 0
|
|
||||||
end
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def find_first_positive_index_while(arr)
|
|
||||||
index = 0
|
|
||||||
while index < arr.size
|
|
||||||
return index if arr[index] > 0
|
|
||||||
index += 1
|
|
||||||
end
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def find_first_positive_for(arr)
|
|
||||||
for element in arr
|
|
||||||
return element if element > 0
|
|
||||||
end
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def find_first_positive_while(arr)
|
|
||||||
index = 0
|
|
||||||
while index < arr.size
|
|
||||||
return arr[index] if arr[index] > 0
|
|
||||||
index += 1
|
|
||||||
end
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
# INPUT
|
|
||||||
array = [-10, -5, 0, 3, 5, -2]
|
|
||||||
|
|
||||||
puts "Минимальный элемент (for): #{find_min_element_for(array)}"
|
|
||||||
puts "Минимальный элемент (while): #{find_min_element_while(array)}"
|
|
||||||
|
|
||||||
puts "Индекс первого положительного элемента (for): #{find_first_positive_index_for(array)}"
|
|
||||||
puts "Индекс первого положительного элемента (while): #{find_first_positive_index_while(array)}"
|
|
||||||
|
|
||||||
puts "Первый положительный элемент (for): #{find_first_positive_for(array)}"
|
|
||||||
puts "Первый положительный элемент (while): #{find_first_positive_while(array)}"
|
|
@ -1,62 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
def find_min_element(arr)
|
|
||||||
min_element = arr[0]
|
|
||||||
arr.each do |element|
|
|
||||||
min_element = element if element < min_element
|
|
||||||
end
|
|
||||||
min_element
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def find_first_positive_index(arr)
|
|
||||||
arr.each_with_index do |element, index|
|
|
||||||
return index if element > 0
|
|
||||||
end
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def find_first_positive(arr)
|
|
||||||
arr.each do |element|
|
|
||||||
return element if element > 0
|
|
||||||
end
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def main
|
|
||||||
method_name = ARGV[0]
|
|
||||||
file_path = ARGV[1]
|
|
||||||
|
|
||||||
if method_name.nil? || file_path.nil?
|
|
||||||
puts "Неправльный формат ввода. Использование: ruby program.rb <method_name> <file_path>"
|
|
||||||
puts "method_name: 'min', 'first_positive_index' или 'first_positive'"
|
|
||||||
exit
|
|
||||||
end
|
|
||||||
|
|
||||||
begin
|
|
||||||
array = File.read(file_path).split.map(&:to_i)
|
|
||||||
rescue Errno::ENOENT
|
|
||||||
puts "Файл не найден: #{file_path}"
|
|
||||||
exit
|
|
||||||
end
|
|
||||||
|
|
||||||
case method_name
|
|
||||||
when 'min'
|
|
||||||
result = find_min_element(array)
|
|
||||||
puts "Минимальный элемент: #{result}"
|
|
||||||
when 'first_positive_index'
|
|
||||||
result = find_first_positive_index(array)
|
|
||||||
puts "Индекс первого положительного элемента: #{result.nil? ? 'Нет положительного элемента' : result}"
|
|
||||||
when 'first_positive'
|
|
||||||
result = find_first_positive(array)
|
|
||||||
puts "Первый положительный элемент: #{result.nil? ? 'Нет положительного элемента' : result}"
|
|
||||||
else
|
|
||||||
puts "Неизвестный метод: #{method_name}"
|
|
||||||
puts "Доступные методы: 'min', 'first_positive_index', 'first_positive'"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
main if __FILE__ == $0
|
|
@ -1 +0,0 @@
|
|||||||
-10 -5 0 3 5 -2
|
|
@ -1,4 +0,0 @@
|
|||||||
# Lab 2
|
|
||||||
|
|
||||||
> "И тут я обнаружил что случайно сделал 3-5 задачи в 1-2"
|
|
||||||
|
|
@ -1,92 +0,0 @@
|
|||||||
require_relative 'person'
|
|
||||||
|
|
||||||
class Student < Person
|
|
||||||
attr_accessor :surname, :name, :patronymic
|
|
||||||
|
|
||||||
def initialize(args = {})
|
|
||||||
super(args)
|
|
||||||
@surname = args.fetch(:surname)
|
|
||||||
raise ArgumentError, "Invalid surname format: #{@surname}" unless self.class.valid_name?(@surname)
|
|
||||||
|
|
||||||
@name = args.fetch(:name)
|
|
||||||
raise ArgumentError, "Invalid name format: #{@name}" unless self.class.valid_name?(@name)
|
|
||||||
|
|
||||||
@patronymic = args.fetch(:patronymic)
|
|
||||||
raise ArgumentError, "Invalid patronymic format: #{@patronymic}" unless self.class.valid_name?(@patronymic)
|
|
||||||
|
|
||||||
set_contacts(
|
|
||||||
phone: args[:phone],
|
|
||||||
telegram: args[:telegram],
|
|
||||||
email: args[:email]
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.from_string(student_string)
|
|
||||||
parts = student_string.split('|').map(&:strip)
|
|
||||||
surname, name, patronymic = parts[0].split(' ')
|
|
||||||
id = parts[1].split(': ').last.to_i
|
|
||||||
phone = parts[2].split(': ').last
|
|
||||||
telegram = parts[3].split(': ').last
|
|
||||||
email = parts[4].split(': ').last
|
|
||||||
git = parts[5].split(': ').last
|
|
||||||
|
|
||||||
new(
|
|
||||||
surname: surname,
|
|
||||||
name: name,
|
|
||||||
patronymic: patronymic,
|
|
||||||
id: id,
|
|
||||||
phone: phone,
|
|
||||||
telegram: telegram,
|
|
||||||
email: email,
|
|
||||||
git: git
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.read_from_txt(file_path)
|
|
||||||
raise IOError, "File path is invalid or file does not exist: #{file_path}" unless File.exist?(file_path)
|
|
||||||
|
|
||||||
students = []
|
|
||||||
|
|
||||||
File.foreach(file_path) do |line|
|
|
||||||
line.strip!
|
|
||||||
next if line.empty?
|
|
||||||
|
|
||||||
begin
|
|
||||||
student = from_string(line)
|
|
||||||
students << student
|
|
||||||
rescue ArgumentError => e
|
|
||||||
puts "Error processing line: '#{line}'. Reason: #{e.message}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
students
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.write_to_txt(file_path, students)
|
|
||||||
raise ArgumentError, "Expected an array of Student objects" unless students.is_a?(Array) && students.all? { |s| s.is_a?(Student) }
|
|
||||||
|
|
||||||
File.open(file_path, 'w') do |file|
|
|
||||||
students.each do |student|
|
|
||||||
file.puts student.to_s
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
puts "Data successfully written to #{file_path}"
|
|
||||||
rescue IOError => e
|
|
||||||
puts "An error occurred while writing to the file: #{e.message}"
|
|
||||||
end
|
|
||||||
|
|
||||||
def surname_and_initials
|
|
||||||
"#{@surname} #{name[0]}.#{patronymic[0]}."
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_s
|
|
||||||
"#{@surname} #{@name} #{@patronymic} | ID: #{@id || 'N/A'} | " \
|
|
||||||
"Phone: #{@phone || 'N/A'} | Telegram: #{@telegram || 'N/A'} | " \
|
|
||||||
"Email: #{@email || 'N/A'} | Git: #{@git || 'N/A'}"
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_info
|
|
||||||
"#{surname_and_initials}, Git: #{git_info}, Contact: #{contact_info}"
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,31 +0,0 @@
|
|||||||
require_relative 'person'
|
|
||||||
|
|
||||||
class StudentShort < Person
|
|
||||||
attr_reader :surname_initials, :contact
|
|
||||||
|
|
||||||
def initialize(student)
|
|
||||||
super(id: student.id, git: student.git_info)
|
|
||||||
@surname_initials = student.surname_and_initials
|
|
||||||
@contact = student.contact_info
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.from_string(id, info_string)
|
|
||||||
parts = info_string.split(', ').map(&:strip)
|
|
||||||
surname_initials = parts[0]
|
|
||||||
git = parts[1].split(': ').last
|
|
||||||
contact = parts[2].split(': ').last
|
|
||||||
|
|
||||||
new_instance = allocate
|
|
||||||
new_instance.send(:initialize_from_data, id, surname_initials, git, contact)
|
|
||||||
new_instance
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def initialize_from_data(id, surname_initials, git, contact)
|
|
||||||
@id = id
|
|
||||||
@surname_initials = surname_initials
|
|
||||||
@git = git
|
|
||||||
@contact = contact
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in new issue