Здравствуйте! Прохожу ГТО для 5-того класса. Не могу решить один уровень. Суть задания: ты играешь за робота, который должен дойти до финиша. Есть кнопки ‘шагнуть вперёд’, ‘повернуть направо’, ‘повернуть налево’, и ‘повторить ... раз (максимум 12)’. По поводу последней кнопки: к примеру, роботу нужно шагнуть вперёд пять раз. Что бы не вставлять в пустой бланк пять раз кнопку ‘шагнуть вперёд’, можно вставить кнопку ‘повторить’, выставить на ней ‘5’ и в эту кнопку ‘засунуть’ одну кнопку ‘шагнуть вперёд’. Фото уровня находиться в вопросе. Место старта - левый квадрат на самом верху. Лимит кнопок - 13 штук (токсин можно поставить не более 13 кнопок).
Если на C++, то вот процедуры: если с библиотеки graphics.h x и y нужно передавать левого верхнего угла буквы
#include <graphics.h> #include <stdio.h> #include <conio.h> int x=50,y=50; void M(int x,int y) { // длина буквы 44, высота тоже 44 x+=50; line(x,y,x,y+44); line(x,y,x+22,y+44); line(x+22,y+44,x+44,y); line(x+22,y+44,x+44,y+44); } void I(int x,int y) { // длина буквы 22, высота тоже 44 x+=28; line(x,y,x,y+44); line(x,y+44,x+22,y); line(x+22,y,x+22,y+44); } void R(int x,int y) { // длина буквы 22, высота тоже 44 x+=28; line(x,y,x,y+44); line(x,y,x+22,y); line(x,y+22,x+22,y+22); line(x+22,y,x+22,y+22); }
Чтобы получить ответ надо число сотрудников (вводится в самом начале) разделить на число отделов. Число отделов определяется различным числом последних цифр телефона: от 00 до 99. Номер отдела связываем с индексом массива А, в который будем ставить 1 если отдел с таким номером есть. Поскольку в задаче не ставится вопрос о проверке входных данных и сохранении их значения, то составляем такой код: Sub z() Dim a(99) As Integer n = InputBox("Введите N") For i = 1 To n s = InputBox("Введите данные сотрудника") k = Val(Right(s, 2)) a(k) = 1 Next i k = 0 'считаем число отделов For i = 1 To 100 If a(i) > 0 Then k = k + 1 Next i MsgBox (n / k) End Sub
если с библиотеки graphics.h
x и y нужно передавать левого верхнего угла буквы
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
int x=50,y=50;
void M(int x,int y)
{ // длина буквы 44, высота тоже 44
x+=50;
line(x,y,x,y+44);
line(x,y,x+22,y+44);
line(x+22,y+44,x+44,y);
line(x+22,y+44,x+44,y+44);
}
void I(int x,int y)
{ // длина буквы 22, высота тоже 44
x+=28;
line(x,y,x,y+44);
line(x,y+44,x+22,y);
line(x+22,y,x+22,y+44);
}
void R(int x,int y)
{ // длина буквы 22, высота тоже 44
x+=28;
line(x,y,x,y+44);
line(x,y,x+22,y);
line(x,y+22,x+22,y+22);
line(x+22,y,x+22,y+22);
}
main()
{
initwindow(800,600);
M(x,y); I(x,y); R(x,y);
x=50;y=100;
R(x,y); I(x,y); M(x,y);
x=50;y=150;
M(x,y); I(x,y); M(x,y);
getch();
closegraph();
}
P.S. я старался
Sub z()
Dim a(99) As Integer
n = InputBox("Введите N")
For i = 1 To n
s = InputBox("Введите данные сотрудника")
k = Val(Right(s, 2))
a(k) = 1
Next i
k = 0 'считаем число отделов
For i = 1 To 100
If a(i) > 0 Then k = k + 1
Next i
MsgBox (n / k)
End Sub