8. На вход алгоритма подаѐтся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) Справа дописывается бит чѐтности.
3) Справа дописывается ещѐ один бит чѐтности.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N)
является двоичной записью искомого числа R. Укажите минимальное число N, после обработки
которого с этого алгоритма получается число, большее, чем 103. В ответе это число
запишите в десятичной системе.
//Максимальная длина вводимой строки#define Mx_s 255
//Массив символов, которые //необходиом удалить в начале и конце строкиchar sim[] = { '\t', ' '};//Функция проверяющая входит ли данный символ c в массив simint char_in_arr(char c) { int f = 0; for (int i = 0; i < strlen(sim); i++) { if (c == sim[i]) { f = 1; break; } } return f;}
int main(){ setlocale(LC_ALL, "rus"); //Вводимая строка char s[Mx_s]; //Ввод данных printf("\n >> Введите строку\n <<"); fgets(s, Mx_s, stdin); int l = strlen(s) - 1; //Переменные для определения отсечений в начале и конце строки int pos_b = 0; int pos_e = l-1; //Проверяем начало строки //Если нам попадаются удаляемые символы то увеличиваем значение pos_b for (;(pos_b < l) && char_in_arr(s[pos_b]); pos_b++) {}
//Проверяем конец строки //Если нам попадаются удаляемые символы то уменьшаем значение pos_e for (;(pos_e >= 0) && (char_in_arr(s[pos_e])); pos_e--) {}
//Длина отсеченного отрезка int l2 = pos_e - pos_b + 1; //Если длина корректа то if (l2 > 0) { //Строка для результата char s2[Mx_s];
//Идем по строке s1 int pos = 0; for (int i = pos_b, k_s = 0; i <= pos_e; i++) { //Считаем пробелы, идущие подряд if (s[i] == ' ') k_s++; else k_s = 0;
//Если это не подряд идущие пробел if (k_s < 2) { //записываем символ в s2 s2[pos] = s[i]; pos++; } } s2[pos] = '\0';
//Вывод результат printf("\n >> Результат\n <<"); fputs(s2,stdout); } else //Строка пуста/Содержит только символы из массива sim printf("\n >> Ошибка в строке\n");
system("pause>>void"); return 0;}
var
i: integer;
x, y: real;
function f(x: real): real;
begin
f := sqrt(3 * x);
end;
begin
Line(0, 240, 620, 240);
Line(300, 0, 300, 900);
TextOut(310, 10, 'y=sqrt(3x)');
x := 0;
repeat
x := x + 0.03;
y := f(x);
SetPixel(round(300 + 10 * x), round(240 - 10 * f(x)), clGreen);
until 300 + 10 * x > 620
end.
с апгрейдом
uses graphabc;
const
scale = 20;
var
i: integer;
x, y: real;
function f(x: real): real;
begin
if x < 0 then
f := 0
else
f := sqrt(3 * x);
end;
begin
Window.Init(0, 0, 1000, 1000, clMoneyGreen);
Window.CenterOnScreen;
Line(0, Window.Height div 2, Window.Width, Window.Height div 2);
Line(Window.Width div 2, 0, Window.Width div 2, Window.Height);
TextOut(Window.Width div 2 + 5, 10, 'y=sqrt(3x)');
x := -1;
repeat
SetPixel(round(Window.Width div 2 + scale * x), round(Window.Height div 2 - scale * f(x)), clRed);
x := x + 0.03;
until scale * x > Window.Width div 2
end.