Задача по информатике

Автор: Пользователь скрыл имя, 12 Ноября 2011 в 16:17, задача

Описание работы

Определить из каких цифр состоит число

Работа содержит 1 файл

Определить из каких цифр состоит число.docx

— 16.71 Кб (Скачать)

Определить  из каких цифр состоит  число

Программа на языке  Паскаль:  

var

    n:integer;

begin

    write('Type integer: ');

    readln(n);

    if n<0 then

        n:=-n; // уничтожение знака числа 

    repeat

        writeln(n mod 10); // вывод последней цифры  числа

        n:= n div 10; // удаление последней цифры  числа

    until n=0;

readln

end.

Вводятся целые  числа до первого числа, которое  меньше двух. Определить, сколько простых  чисел было введено.

Программа на языке  Паскаль:  

var

    n,i,q: integer;

    f: boolean;

begin

    q:=0;

    write('Number: ');

    readln(n);

    while n > 2 do begin

        f:=true;

        for i:=2 to n div 2 do

            if n mod i = 0 then

                f:=false;

        if f then

            q:=q+1;

        write('Number: ');

        readln(n);

    end;

    writeln(q,' prime numbers');

readln;

end.

Найти сумму n-го количества элементов ряда 1, -0.5, 0.25, -0.125, …

Алгоритм решения  задачи:  

var

    a,sum: real;

    n,i:integer;

begin

    write('Количество  элементов ряда: ');

    readln(n);

    a:=1;

    sum:=0;

    for i:=1 to n do begin

        sum:=sum+a;

        a:=-a/2

    end;

    writeln(sum:4:3);

readln

end.

Поменять местами  слова в строках, состоящих из двух слов.

Описание переменных:  

s – массив введенных  строк;

f_word, s_word – первое  и второе слово в каждой  строке;

k – позиция пробела-разделителя  слов в строке.

Алгоритм решения  задачи:

Считывается очередная  строка в текущий элемент массива.

Определяется позиция  пробела с помощью функции pos.

В переменную f_word копируется часть строки с первого символа  до пробела.

В переменную s_word копируется часть строки от пробела (не включая  его) до ее конца.

В текущий элемент  массива записывается строка, состоящая  сначала из второго слова, пробела  и затем первого слова.

Программа на языке  Паскаль:  

var

    s: array[1..5] of string;

    f_word, s_word: string;

    k,i: byte;

begin

    writeln('Введите  пять строк с двумя словами  в каждой.');

    for i:=1 to 5 do begin

        readln(s[i]);

        k:= pos(' ',s[i]);

        f_word:= copy(s[i],1,k-1);

        s_word:= copy(s[i],k+1,length(s[i]));

        s[i]:= concat(s_word,' ',f_word)

    end;

    for i:=1 to 5 do

        writeln(s[i]);

readln

end.

Какие различные  цифры входят в целое число.

Описание переменных:  

n – анализируемое  число;

digits – массив различных  цифр, из которых состоит число  n;

q_digits – количество  цифр в массиве;

digit – извлеченная  из числа цифра;

flag – проверка  наличия цифры в массиве (если  цифра в массиве уже есть, то  она не будет в него добавлена.

Алгоритм решения  задачи:

Избавляемся от знака  числа с помощью функции abs.

Обнуляем количество цифр в массиве (изначально массив пуст).

После извлечения очередной  цифры числа с конца (n mod 10) предполагаем, что ее еще нет в массиве (flag:= false).

Перебираются элементы массива цифр. Если текущая извлеченная  цифра уже есть в нем, то меняем значение флага. Для первой извлеченной  цифры данный цикл не работает, что  правильно.

Если флаг остался  в значении false, то увеличиваем количество цифр в массиве на единицу и  записываем очередную цифру в  массив.

Избавляемся от последней  цифры числа (n div 10).

Цифры в массив записаны в обратном порядке. Для их вывода на экран в порядке следования в числе следует использовать вариант цикла for с downto.

Программа на языке  Паскаль:  

var

    n: longint;

    digits: array[1..10] of byte;

    q_digits: byte;

    digit: byte;

    i: byte;

    flag: boolean;

begin

    write('Input number: ');

    readln(n);

    if n < 0 then

        n:= abs(n);

    q_digits:= 0;

    repeat

        digit:= n mod 10;

        flag:= false;

        for i:=1 to q_digits do

            if digit = digits[i] then begin

                flag:= true;

                break

            end;

        if flag = false then begin

            q_digits:= q_digits + 1;

            digits[q_digits]:= digit;

        end;

        n:= n div 10

    until n = 0;

    for i:=q_digits downto 1 do

        write(digits[i]:3);

readln

end.

Определить из каких  цифр состоит число

Программа на языке  Паскаль:  

var

    n:integer;

begin

    write('Type integer: ');

    readln(n);

    if n<0 then

        n:=-n; // уничтожение знака числа 

    repeat

        writeln(n mod 10); // вывод последней цифры  числа

        n:= n div 10; // удаление последней цифры  числа

    until n=0;

readln

end.

Даны два пятизначных  числа, необходимо найти количество совпадений по две одинаковые цифры  в равносильных разрядах чисел, а  так же количество совпадений по две  одинаковые цифры в различных  разрядах этих чисел. Цифра, которая  уже участвовала в одной паре совпадения, не учитывается повторно. Например, даны числа 12345 и 27376. Количество совпадений одинаковых цифр в равносильном разряде равно 1 (это цифра 3), количество совпадений одинаковых цифр в различных  разрядах равно 1 (это цифра 2).

Описание переменных:  

a, b – заданные  числа;

a_arr, b_arr – массивы  цифр, из которых состоят числа;

a_dig, b_dig – массивы  для хранения информации о  совпавших цифрах.

Алгоритм решения  задачи:  

{2} Числа раскладываются  на цифры, которые размещаются  в массивах. Нахождение остатка  по основанию 10 дает младший  разряд числа. При этом сами  числа постепенно уменьшаются,  избавляясь от текущих младших  разрядов (div 10). Поскольку извлечение  цифр происходит с конца, массивы,  куда они заносятся, "прокручиваются" с конца: сначала заполняются  пятые элементы массива, затем  четверные и т.д.  

{3} Для того, чтобы  найти одинаковые цифры в равносильных  разрядах, достаточно сравнить элементы  массивов, находящиеся в одинаковых  позициях двух массивов. При этом  надо где-то сохранить информацию  о разрядах, цифры которых совпали.  Введем два дополнительных массива  (a_dig и b_dig). Изначально в языке  программирования Pascal массивы заполнены  нулями. Пусть элементы этих массивов  соответствуют разрядам чисел.  Если цифра числа нашла себе  пару среди такого же разряда  второго числа, то в соответствующие  разрядам ячейки массивов записываются  единицы. 

{4} Берем очередной  элемент массива первого числа.  Если соответствующий ему элемент  из массива a_dig равен нулю (что  значит, совпадений не было), то  сравниваем его со всеми элементами  второго массива числа, которые  также не нашли себе пару. Если  при переборе совпадение находится,  то в соответствующие ячейки  массивов a_dig и b_dig помещаются цифры  2. 

{5} Количество одинаковых  цифр в равносильных разрядах  равно количеству единиц в  массиве a_dig. 

{6} Количество одинаковых  цифр в различных разрядах  равно количеству двоек в массиве  a_dig. 

Массив b_dig содержит туже информацию о количестве единиц и двоек. Однако двойки находятся  в иных элементах массива.

Программа на языке  Паскаль:  

const n = 5;

var

    a, b: longint;

    a_arr, b_arr: array[1..n] of byte;

    a_dig, b_dig: array[1..n] of byte;

    i,j: byte;

 

begin

{1} write('Первое число: ');

    readln(a);

    write('Второе  число: ');

    readln(b);

 

{2} for i:=n downto 1 do begin

        a_arr[i] := a mod 10;

        a := a div 10;

        b_arr[i] := b mod 10;

        b := b div 10;

    end;

 

{3} for i:=1 to n do

        if a_arr[i] = b_arr[i] then begin

            a_dig[i] := 1;

            b_dig[i] := 1;

        end;

 

{4} for i:=1 to n do

        if a_dig[i] = 0 then

            for j:=1 to n do

                if b_dig[j] = 0 then

                    if a_arr[i] = b_arr[j] then begin

                        a_dig[i] := 2;

                        b_dig[j] := 2;

                    end;

 

{5} write('Кол-во одинаковых  цифр в равносильных разрядах: ');

    j := 0;

    for i:=1 to n do

        if a_dig[i] = 1 then

            j := j + 1;

    writeln(j);

 

{6} write('Кол-во одинаковых  цифр в различных разрядах: ');

    j := 0;

    for i:=1 to n do

        if a_dig[i] = 2 then

            j := j + 1;

    writeln(j);

 

readln;

end.

Получить изображение, состоящее из одной повторяющейся  геометрической фигуры.

Алгоритм решения  задачи:  

Повторяющиеся элементы изображения в сумме представляют собой орнамент. Используя правила  переноса, можно создавать как  простые, так и достаточно сложные  орнаменты. 

Количество повторений базовой фигуры определяется переменной цикла, для которой задаются начальное  и конечное значения, а также шаг (значение сдвига по оси 0X и/или по оси 0Y).  

Если перенос базовой  фигуры осуществляется в одном направлении (например, по оси 0X), то достаточно использовать одну циклическую конструкцию. Переменной цикла может служить координата x или y, которая изменяется от начального значения до конечного с заданным шагом (обычно равным ширине или высоте базовой фигуры).  

Если перенос базовой  фигуры производится по обеим осям (по горизонтали и вертикали), то используется два цикла, один из которых  вложен в другой. Например, внутренний цикл прорисовывает каждую строку (изменяется только координата x), а внешний осуществляет переход на новую строку (изменяется координата y).

Информация о работе Задача по информатике