1) Задача об изобретателе шахмат
N = Val(InputBox("Введите число клеток на одной стороне доски"))
V = N * N
S = 0
K = 1
For I = 1 To V
S = S + K
K = K * 2
Next I
Print S
End Sub
2) Найти разницу между наибольшей и наименьшей зарплатами трёх работников фирмы.
Dim P(1 To 3) As Integer
For I = 1 To 3
P(I) = Val(InputBox("Вводите размеры зарплат"))
Next I
Min = P(1)
Max = P(1)
For I = 2 To 3
If Min P(I) Then
Min = P(I)
Else
End If
Next I
For I = 2 To 3
If Max
Max = P(I)
Else
End If
Next I
R = Max - Min
Print R
3) На столе лежат N монеток. Некоторые из них лежат вверх номиналом, другие гербом. Определите число монеток, которые лежат вверх номиналом.
Формат входных данных
В компьютер сначала ввести число всех монеток N, затем ввести для каждой монеты 1, если монетка лежит вверх номиналом или 0, если монетка лежит вверх гербом.
Решение:
Dim A(), S As Integer
' Вводим число монет и задаём массив А() из стольких элементов
N=Val(InputBox(“Сколько всего монет”))
ReDim M(N)
‘ Вводим номиналы
For I = 1 To N
A(I)= Val(InputBox(“Введите 1 или 0 ”))
Next I
' переменной S присваиваем значение 0
S=0
For I=1 To N
If A(I)=1 Then
‘ если элемент массива равен 1, к переменной S прибавляем 1
S=S+1
Next I
Print “Монет номиналом вверх”, S
4) Есть некоторый текст, состоящий из n маленьких латинских букв. Какое количество различных слов длины m можно из них составить?
Вводим два числа n и m (1mn
Программа выводит одно число – количество разных слов длины m, которые можно выделить из текста.
Например:
Ввод | Вывод |
10 3 bbaabbbabb | 6 |
Dim F() As String
A$ = InputBox("Введите текст")
C = Val(InputBox("Сколько всего букв в речи?"))
P = Val(InputBox("По сколько букв в словах?"))
L = C - P + 1
ReDim F(L)
Print A$
For I = 1 To L
F(I) = Mid(A$, I, P)
Print F(I)
Next I
S = L
For K = 1 To C - P
For N = K + 1 To L
If F(K) = F(N) And F(N) " " Then
F(N) = " "
S = S - 1
Else
End If
Next N
Next K
Print "Таких слов всего", S, "эти слова:"
For I = 1 To L
Print F(I)
Next I
5) По координатам n точек найти две самые близкие. Вводим сначала число точек, затем их координаты, например: если ввести 4; 3; 6; 2; 5, выйдет число 1.
Dim M() As Single: Dim A, B, M, N, Min, L, I, R As Integer
N = Val(InputBox("Сколько всего точек?"))
ReDim M(N)
For I = 1 To N
M(I) = Val(InputBox("Введите координаты точек"))
Next I
Min = (M(2) - M(1))
A = 1: B = 2
If Min
Min = -Min
Else
End If
For L = 1 To N - 1
For I = L + 1 To N
R = M(I) - M(L)
If R
R = -R
Else
End If
If R
Min = R
A = L: B = I
Else
End If
Next I
Next L
Print Min
End Sub
6) Программа «Фальшивая монета»
Из нескольких монет найти одну фальшивую. Определить, она легче или тяжелее остальных.
Решение:
Алгоритм:
В компьютер вводим массы монет.
Затем массу первой монеты сравниваем с массой второй. Если массы не равны, значит одна из них фальшивая. Массу первой монеты сравниваем с массой третьей. Если их массы равны, значит вторая фальшивая. Если массы не равны, то первая фальшивая.
Если массы первой и второй монет равны, то массу первой монеты сравниваем с массой третьей, четвёртой и т. д., если массы не равны, то очередная монета фальшивая.
Затем сравниваем массу фальшивой монеты с подлинной и делаем вывод, она легче или тяжелее остальных.
Программа:
Dim M() As Single
' Вводим, сколько всего монет
N = Val(InputBox("Сколько всего монет?"))
' Задаём линейный массив из этого числа элементов
ReDim M(N)
' Вводим массы монет, они будут элементами массива
For I = 1 To N
M(I) = Val(InputBox("Введите массы монет"))
Next I
' Сравним массы первой и второй монет
If M(1) = M(2) Then
' Если их массы равны, они обе подлинные
For I = 3 To N
' Сравниваем первую монету с третьей и т. д.
If M(1) M(I) Then
' Если массы не равны, значит, очередная монета фальшивая
Print "Номер фальшивой", I
If M(I) M(1) Then
Print "Фальшивая легче остальных"
Else
Print "Фальшивая тяжелее остальных"
End If
Else
End If
Next I
Else
' Если массы первой и второй монет не равны, одна из них фальшивая,
тогда сравниваем массы первой и третьей монет
If M(1) = M(3) Then
' Если их массы равны, то вторая монета фальшивая
Print "Номер фальшивой", 2
If M(2) M(1) Then
Print "Фальшивая легче остальных"
Else
Print "Фальшивая тяжелее остальных"
End If
Else
' Если массы первой и третьей монет не равны, то первая монета фальшивая
Print "Номер фальшивой", 1
If M(1) M(2) Then
Print "Фальшивая легче остальных"
Else
Print "Фальшивая тяжелее остальных"
End If
End If
End If
7) Пример программы на языке Паскаль:
Задача 4.
Program Falsh;
{Из нескольких монет одна фальшивая. Найти её номер.}
uses crt; {*для удобства ввода данных*}
const n=5; {*переменной n обозначаем количество монет*}
var i: integer;
Min, Max, Raz : real;
var m: array [1..n] of real;
begin
for I:=1 to n do
begin
writeln ('сколько составляет вес',i,'монеты');
read(m[i])
end;
if m[1]=m[2] then begin
for i:=3 to n do
begin
If m[1]m[i] then writeln ('номер фальшивой', i);
If m[i]фальшивая легче остальных');
If m[i]m[1] then writeln ('фальшивая тяжелее остальных')
end
end
else begin
if m[1]=m[3] then begin
writeln ('номер фальшивой 2');
if m[2]фальшивая легче остальных')
else writeln ('фальшивая тяжелее остальных');
end
else begin
writeln ('номер фальшивой 1');
if m[1]
else writeln ('фальшивая тяжелее остальных')
end
end
end.