Автор: Пользователь скрыл имя, 12 Ноября 2011 в 16:17, задача
Определить из каких цифр состоит число
Определить из каких цифр состоит число
Программа на языке
Паскаль:
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} Для того, чтобы
найти одинаковые цифры в
{4} Берем очередной
элемент массива первого числа.
{5} Количество одинаковых
цифр в равносильных разрядах
равно количеству единиц в
массиве a_dig.
{6} Количество одинаковых
цифр в различных разрядах
равно количеству двоек в
Массив 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).