В помощь программисту
язык программирования Питон Языки
Справочник по Питону
Олимпиада по программированию
Еще всероссийская олимпиада
Готовимся к областной олимпиаде
по информатике
изучаем срочно vb studio 2008
вызов из файла:
Open "aaa.txt" For Input As #1
Line Input #1, Stroka
Close #1
End Sub
это если что-то нужно считать. Для записи в файл в команде "Open" нужно указывать "For Print"
"#1" - это ячейка файла в папке, особо преобразуемый в VB адрес файла. То есть фактически
это порядковый номер файла, если упорядочить все файлы в папке по дате создания.
Как ни странно, программы в VB будут работать, даже если ячейку указать неправильно.
Поэтому для первого файла, который Вы открываете, используется "#1", для второго "#2" и т.д..
Но при следующем обращении к этому же файлу ячейку нужно указывать правильно.
"aaa.txt" - полный путь к файлу, начиная от корневого каталога, заканчивая расширением файла.
Эта штука может не работать, если Вы обращаетесь к несуществующему файлу (например,
Вас нужно, чтобы Бейсик сам его создал). Тогда в программном коде перед "Open" должна стоять строчка
"On Error Resume Next"
а сама команда "Open" выглядеть как "Open App.Path & "\aaa.txt" For Output As #1"
"On Error Resume Next" нужна для обхождения ошибки при запросе несуществующего файла.
итого:
Private Sub что_нибудь()
On Error Resume Next
Open App.Path & "\aaa.txt" For Output As #1
Close #1
Text1.Text = "Создан файл aaa.txt"
End Sub
учебник
Например, если надо считать первую строку из какого-нибудь файла в переменную S, то код будет таким:
Dim MyFile 'Объявляем переменную для свободного файла
Dim S As String 'Переменная для хранения считанных данных
MyFile = FreeFile ' Присваиваем свободный канал, для работы с файлами
Open ("C:TEST.txt") For Input As #MyFile 'Открываем файл TEST.TXT для чтения
Line Input #MyFile, S 'Считываем первую строку из файла TEST.TXT в переменную S
Close #MyFile 'Закрываем файл
А если надо считать все данные из файла, то:
Dim MyFile 'Объявляем переменную для свободного файла
Dim S As String 'Переменная для хранения считанных данных
MyFile = FreeFile ' Присваиваем свободный канал, для работы с файлами
Open ("C:TEST.txt") For Input As #MyFile 'Открываем файл TEST.TXT для чтения
S = Input$(LOG(1), 1) 'Считываем весь файл в переменную S
Close #MyFile 'Закрываем файл
Для записи в файл существуют операторы Print #Номер_файла, Данные и Write #Номер_файла,
Данные. Отличает эти операторы только то, что Write записывает данные в кавычках, а Print без кавычек.
Ниже следующий код создаст на диске C: новый файл TEST.TXT и запишет в него две строки,
первую без кавычек, а вторую в кавычках:
Dim MyFile 'Объявляем переменную для свободного файла
MyFile = FreeFile ' Присваиваем свободный канал, для работы с файлами
Open ("C:TEST.txt") For Output As #MyFile 'Открываем файл TEST.TXT для записи
Print #MyFile, "Эта строка записана оператором Print, она без кавычек…"
Write #MyFile, "Эта строка записана оператором Write, она в кавычках…"
Close #MyFile 'Закрываем файл
Язык программирования Visual Basic
Module Module1
Sub Main()
Dim c, V1, V2, x As String
Dim n, m, x1, x2 As Integer
Dim i As Integer
V1 = "C:\Olymps\Entina\Entina1\Z1\Test16.txt"
V2 = "C:\Olymps\Entina\Entina1\Z1\rez16.txt"
FileOpen(1, V1, OpenMode.Input) : FileOpen(2, V2, OpenMode.Output)
Input(1, n)
Input(1, m)
If n > m Then
x1 = Int(n / 2)
If n / 2 <> Int(n / 2) Then x1 = x1 + 1
x2 = m
End If
If m > n Or m = n Then
x1 = Int(m / 2)
If m / 2 <> Int(m / 2) Then x1 = x1 + 1
x2 = n
End If
Print(2, x1)
Print(2, x2)
FileClose(1)
FileClose(2)
End Sub
End Module
|
2Круглый стол
В клуб приходят на занятия m мальчиков и n девочек. Иван Петрович заметил, что мальчик активно участвует в обсуждении только тогда, когда непосредственно рядом с ним с обеих сторон от него сидят девочки, а девочка активно участвует в обсуждении только тогда, когда непосредственно рядом с ней с одной стороны от нее сидит мальчик, а с другой — девочка.
Требуется написать программу, которая по заданным числам m и n выведет такой способ размещения m мальчиков и n девочек за круглым столом, при котором максимальное количество членов клуба будет активно участвовать в обсуждении.
Module Module1
Sub Main()
Dim c, V1, V2, x As String
Dim n, m, x1, x2 As Integer
Dim i As Integer
V1 = "C:\Olymps\Entina\Entina2\Z2\test201.txt"
V2 = "C:\Olymps\Entina\Entina2\Z2\rez201.txt"
FileOpen(1, V1, OpenMode.Input) : FileOpen(2, V2, OpenMode.Output)
Input(1, n)
Input(1, m)
FileClose(1)
x1 = n
x2 = m
x = ""
Do While n > 0 And m > 0
x = x + "B"
n = n - 1
x = x + "G"
m = m - 1
If m > 0 Then x = x + "G"
If m > 0 Then m = m - 1
Loop
If m = 0 And n > 0 Then
For i = 1 To n
x = x + "B"
Next
End If
If n = 0 And m > 0 Then
For i = 1 To m
x = x + "G"
Next
End If
Print(2, x)
FileClose(2)
End Sub
End Module
|
3Поврежденный XML
Формат XML является распространенным способом обмена данными между различными программами. Недавно программист Иванов написал небольшую программу, которая сохраняет некоторую важную информацию в виде XML-строки.
XML-строка состоит из открывающих и закрывающих тегов.
Открывающий тег начинается с открывающей угловой скобки (<), за ней следует имя тега — непустая строка из строчных букв латинского алфавита, а затем закрывающая угловая скобка (>). Примеры открывающих тегов: <a>, <dog>.
Закрывающий тег начинается с открывающей угловой скобки, за ней следует прямой слеш (/), затем имя тега — непустая строка из строчных букв латинского алфавита, а затем закрывающая угловая скобка. Примеры закрывающихся тегов: </a>, </dog>.
XML-строка называется корректной, если она может быть получена по следующим правилам:
· Пустая строка является корректной XML-строкой.
· Если A и B — корректные XML-строки, то строка AB, получающаяся приписыванием строки B в конец строки A, также является корректной
XML-строкой.
· Если A — корректная XML-строка, то строка <X>A</X>, получающаяся приписыванием в начало A открывающегося тега, а в конец — закрывающегося с таким же именем, также является корректной XML-строкой. Здесь X — любая непустая строка из строчных букв латинского алфавита.
Например, представленные ниже строки:
<a></a>
<a><ab></ab><c></c></a>
<a></a><a></a><a></a>
являются корректными XML-строками, а такие строки как:
<a></b>
<a><b>
<a><b></a></b>
не являются корректными XML-строками. Иванов отправил файл с сохраненной XML-строкой по электронной почте своему коллеге Петрову. Однако, к сожалению, файл повредился в процессе пересылки: ровно один символ в строке заменился на некоторый другой символ. Требуется написать программу, которая по строке, которую получил Петров, восстановит исходную XML-строку, которую отправлял Иванов.
Формат входного файла. Входной файл содержит одну строку, которая заменой ровно одного символа может быть превращена в корректную XML-строку. Длина строки лежит в пределах от 7 до 1000, включительно. Строка содержит только строчные буквы латинского алфавита и символы «<» (ASCII код 60), «>»(ASCII код 62) и «/»(ASCII код 47). Строка во входном файле заканчивается переводом строки.
Формат выходного файла. Выходной файл должен содержать корректную XML-строку, которая может быть получена из строки во входном файле заменой ровно одного символа на другой. Если вариантов ответа несколько, можно вывести любой.
Примеры входных и выходных файлов
Test301.txt – Test304.txt
|
Result301.txt – Result304.txt
|
<a></b>
|
<a></a>
|
<a><aa>
|
<a></a>
|
<a><>a>
|
<a></a>
|
<a/</a>
|
<a></a>
|
Система оценивания. Правильные решения для тестов, в которых одна буква заменена на другую букву, оцениваются из 50 баллов.
Module Module1
Sub Main()
Dim c, V1, V2, x As String
Dim n, m, x1, x2 As Integer
Dim i As Integer
V1 = "C:\Olymps\Entina\Entina4\Z4\test401.txt"
V2 = "C:\Olymps\Entina\Entina4\Z4\rez401.txt"
FileOpen(1, V1, OpenMode.Input) : FileOpen(2, V2, OpenMode.Output)
Input(1, n)
Dim a(n)
For i = 1 To n
Input(1, a(i))
Next
For i = 1 To n
Print(2, a(i))
Next i
FileClose(1)
FileClose(2)
End Sub
End Module
|
4 Игра с числами
Сегодня на уроке математики Петя и Вася изучали понятие арифметической прогрессии. Арифметической прогрессией с разностью d называется последовательность чисел a1, a2, …, ak, в которой разность между любыми двумя последовательными числами равна d. Например, последовательность 2, 5, 8, 11 является арифметической прогрессией с разностью 3. После урока Петя и Вася придумали новую игру с числами. Игра проходит следующим образом. В корзине находятся n фишек, на которых написаны различные целые числа a1, a2, …, an. По ходу игры игроки выкладывают фишки из корзины на стол. Петя и Вася делают ходы по очереди, первым ходит Петя. Ход состоит в том, что игрок берет одну фишку из корзины и выкладывает ее на стол. Игрок может сам решить, какую фишку взять. После этого он должен назвать целое число d ≥ 2 такое, что все числа на выбранных к данному моменту фишках являются членами некоторой арифметической прогрессии с разностью d, не обязательно последовательными. Например, если на столе выложены фишки с числами 2, 8 и 11, то можно назвать число 3, поскольку эти числа являются членами приведенной в начале условия арифметической прогрессии с разностью 3.
Игрок проигрывает, если он не может сделать ход из-за отсутствия фишек в корзине или из-за того, что добавление любой фишки из корзины на стол приводит к тому, что он не сможет подобрать соответствующее число d. Например, если в корзине имеются числа 2, 3, 5 и 7, то Петя может выиграть. Для этого ему необходимо первым ходом выложить на стол число 3. После первого хода у него много вариантов назвать число d, например он может назвать d = 3. Теперь у Васи два варианта хода.
1) Вася может вторым ходом выложить фишку с числом 5 и назвать d = 2. Тогда Петя выкладывает фишку с числом 7, называя d = 2. На столе оказываются фишки с числами 3, 5 и 7, а в корзине осталась только фишка с числом 2. Вася не может ее выложить, поскольку после этого он не сможет назвать корректное число d. В этом случае Вася проигрывает.
2) Вася может вторым ходом выложить фишку с числом 7 и также назвать, например, d = 2. Тогда Петя выкладывает фишку с числом 5, называя также d = 2. Вася снова попадает в ситуацию, когда на столе оказываются фишки с числами 3, 5 и 7, а в корзине осталась только фишка с числом 2, и он также проигрывает.
Заметим, что любой другой первый ход Пети приводит к его проигрышу. Если он выкладывает число 2, то Вася отвечает числом 7, и Петя не может выложить ни одной фишки. Если Петя выкладывает фишку с числом 5 или 7, то Вася выкладывает фишку с числом 2, и у Пети также нет допустимого хода.
Требуется написать программу, которая по заданному количеству фишек n и числам на фишках a1, a2, …, an определяет, сможет ли Петя выиграть вне зависимости от действий Васи, и находит все возможные первые ходы Пети, ведущие к выигрышу.
Формат входного файла. Первая строка входного файла содержит целое число n (1 ≤ n ≤ 200). Вторая строка содержит n различных целых чисел a1, a2, …, an (для всех i от 1 до n выполняется неравенство 1 ≤ ai ≤ 105). Соседние числа разделены ровно одним пробелом.
Формат выходного файла. Первая строка выходного файла должна содержать число k — количество различных первых ходов, которые может сделать Петя, чтобы выиграть. Если Вася может выиграть вне зависимости от действий Пети, строка должна содержать цифру 0. Во второй строке должно содержаться k различных целых чисел — все выигрышные числа в порядке возрастания. Будем называть число выигрышным, если, выложив в качестве первого хода фишку, содержащую это число, Петя может выиграть вне зависимости от действий Васи. Соседние числа в строке должны быть разделены ровно одним пробелом.
Примеры входных и выходных файлов
Test401.txt, Test402.txt
|
Result401.txt, Result402.txt
|
4
2 3 5 7
|
1
3
|
2
2 4
|
0
|
Пояснения к примерам. Первый пример рассматривается в тексте условия этой задачи. Во втором примере, какую бы фишку не выложил Петя первым ходом, Вася в ответ выкладывает другую фишку, и Петя не может сделать ход из-за отсутствия фишек в корзине.
Система оценивания. Правильные решения для тестов, в которых 1 ≤ n ≤ 15, будут оцениваться из 40 баллов.
Module Module1
Sub Main()
Dim V1, V2, x As String
Dim n, m, x1, x2, d, c As Integer
Dim i As Integer
V1 = "C:\Olymps\Entina\Entina4\Z4\test401.txt"
V2 = "C:\Olymps\Entina\Entina4\Z4\rez401.txt"
FileOpen(1, V1, OpenMode.Input) : FileOpen(2, V2, OpenMode.Output)
Input(1, n)
Dim a(n), b(n, n)
For i = 1 To n
Input(1, a(i))
Next
FileClose(1)
For i = 1 To n
For j = 1 To n - 1
c = a(i)
b(i, j) = a(i + j - 1)
Next
Next
FileClose(2)
End Sub
End Module
|
5Задача 5. Кондиционер Имя входного файла: Test5X.txt. Имя выходного файла: Result5X.txt. X = 01, 02, 1 - 20 Ограничение по времени: 2 секунды. Ограничение по памяти: 256 мегабайт. В офисе, где работает программист Петр, установили кондиционер нового типа. Этот кондиционер отличается особой простотой в управлении. У кондиционера есть всего лишь два управляемых параметра: желаемая температура и режим работы. Кондиционер может работать в следующих четырех режимах: · «freeze» — охлаждение. В этом режиме кондиционер может только уменьшать температуру. Если температура в комнате и так не больше желаемой, то он выключается. · «heat» — нагрев. В этом режиме кондиционер может только увеличивать температуру. Если температура в комнате и так не меньше желаемой, то он выключается. · «auto» — автоматический режим. В этом режиме кондиционер может как увеличивать, так и уменьшать температуру в комнате до желаемой. · «fan» — вентиляция. В этом режиме кондиционер осуществляет только вентиляцию воздуха и не изменяет температуру в комнате. Кондиционер достаточно мощный, поэтому при настройке на правильный режим работы он за час доводит температуру в комнате до желаемой. Требуется написать программу, которая по заданной температуре в комнате troom, установленным на кондиционере желаемой температуре tcond и режиму работы определяет температуру, которая установится в комнате через час. Формат входного файла Первая строка входного файла содержит два целых числа troom, и tcond, разделенных ровно одним пробелом (–50 ≤ troom ≤ 50, –50 ≤ tcond ≤ 50). Вторая строка содержит одно слово, записанное строчными буквами латинского алфавита — режим работы кондиционера. Формат выходного файла Выходной файл должен содержать одно целое число — температуру, которая установится в комнате через час. Примеры входных и выходных файлов Test501.txt, Test502.txtResult501.txt, Result502.txt
10 20 heat 20
10 20 freeze 10
Module Module1
Sub Main()
Dim c, V1, V2, x As String
Dim n, m, x1, x2 As Integer
Dim i As Integer
V1 = "C:\Olymps\Entina\Entina5\Z5\Test502.txt"
V2 = "C:\Olymps\Entina\Entina5\Z5\rez502.txt"
FileOpen(1, V1, OpenMode.Input) : FileOpen(2, V2, OpenMode.Output)
Input(1, n)
Input(1, m)
Input(1, c)
If n = m Then x1 = n
If c = "fan" Then x1 = n
If c = "freeze" Then
If n > m Then x1 = m
If n < m Then x1 = n
End If
If c = "heat" Then
If n > m Then x1 = n
If n < m Then x1 = m
End If
If c = "auto" Then x1 = m
Print(2, x1)
FileClose(1)
FileClose(2)
End Sub
End Module
6 Праздничный ужин
Рядом с офисом компании, в которой работает программист Джон, открылось новое кафе. Директор компании решил провести там новогодний ужин. Меню праздничного новогоднего ужина в кафе состоит из k типов блюд. Для каждого типа блюда есть несколько вариантов на выбор. Всего есть a1 вариантов для первого типа блюда, a2 вариантов для второго типа блюда, и так далее, ak вариантов для k-го типа блюда. Всего, таким образом, предлагается a1×a2×…×ak различных заказов праздничного ужина.
|
Всего на ужине будут присутств
|
|
|