1. На ленте машины Тьюринга содержится последовательностью символов “+”. Напишите программу для машины Тьюринга, которая каждый второй символ “+” заменит на “–”. Замена начинается с правого конца последовательности. Автомат в состоянии q1 обозревает один из символов указанной последовательности. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.
2. Дано число n в восьмеричной системе счисления. Разработать машину Тьюринга, которая увеличивала бы заданное число n на 1. Автомат в состоянии q1 обозревает некую цифру входного слова. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.
3. Дана десятичная запись натурального числа n > 1. Разработать машину Тьюринга, которая уменьшала бы заданное число n на 1. Автомат в состоянии q1 обозревает правую цифру числа. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.
4. Дано натуральное число n > 1. Разработать машину Тьюринга, которая уменьшала бы заданное число n на 1, при этом в выходном слове старшая цифра не должна быть 0. Например, если входным словом было “100”, то выходным словом должно быть “99”, а не “099”. Автомат в состоянии q1 обозревает правую цифру числа. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.
5. Дан массив из открывающих и закрывающих скобок. Построить машину Тьюринга, которая удаляла бы пары взаимных скобок, т.е. расположенных подряд “( )”.
Например, дано “) ( ( ) ( ( )”, надо получить “) . . . ( ( ”.
Автомат в состоянии q1 обозревает крайний левый символ строки. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.
6. Дана строка из букв “a” и “b”. Разработать машину Тьюринга, которая переместит все буквы “a” в левую, а буквы “b” — в правую части строки. Автомат в состоянии q1 обозревает крайний левый символ строки. Кроме самой программы-таблицы, описать словами, что выполняется машиной в каждом состоянии.
#include<iostream>
using namespace std;
int main() {
int down, upper, i, sum=0;
cin>>down;
cin>>upper;
for(i=down; i<=upper; i++ )
sum+=i;
cout<<sum;
}
Объяснение:
Чтобы посчитать сумму чисел от какого-то (down) до какого-то (upper), нужно использовать цикл for.
Задаёшь эти самые границы (down и upper), цикл будет повторятся до тех пор, пока значение i не будет равно upper.
В теле цикла считаешь нужную сумму цифр. Как это работает? Очень просто! Когда программа доходит до этого цикла, она присваивает i значение down, затем прибавляет это значение i к sum. Потом программа возвращается к началу цикла, чтобы проверить значение i на соответствие верхней границе upper, если соответствует, то к значению i прибавляется 1 (так как в условии задано правило i++, то есть i=i+1 ) и снова срабатывает тело цикла, где к новой сумме прибавляется новое i (sum+=i – это sum=sum+i). Когда цикл заканчивается, срабатывает оператор вывода cout, который выводит новейшее значение sum.
Когда объявляешь переменные, не забудь оператору sum присвоить значение 0, так как сумма начинается с нуля
Тоже сор? (