Страница 1 из 2

помогите лузеру)

Добавлено: 18 апр 2007, 22:53
Switchback
1.Подсчитать количество натуральных чисел, которые принадлежат интервалу [а,b), в которых младшая и старшая цифры - парные. (цикл)
2.Дана строка-предложение. Зашифровать его, поместив сначала все символы, размещенные на парных позициях, а затем в обратном порядке все символы, размещенные на непарных позициях (например, строка ‘Программа’ превратится в ‘ргамамроп’).
3.Дан вектор. Проверить, упорядочен ли он (массивы)

Re: помогите лузеру)

Добавлено: 19 апр 2007, 01:09
Колядин Максим
1) Не пойму при чём тут парные цифры. Приводи примеры как во 2-й задаче - легче вопрос восприниматься будет. А так суть здесь проста: ответом будут являтся все натуральные числа от а до (b-1).
2) Предлагаю следующий способ решения этой задачи:
(Пусть s - строка с текстом, s2 - кодированная строка)
1. Создать цикл от 1 до length(s), и если позиция (i) четна, то строке-ответу присвоить s2+s.
2. Создать цикл от length(s) вниз до 1, и если позиция (I) нечетна, тогда строке-ответу присвоить s2+s.
Код:

Код: Выделить всё

uses crt;
var s,s2: string;
i: integer;
begin
clrscr;
readln(s);
for i:= 1 to length(s) do if not odd(i) then s2:=s2+s[i];
for i:= length(s) downto 1 do if odd(i) then s2:=s2+s[i];
writeln(s2);
readkey;
end.
3) По-моему здесь всё слаживается на основе обычной сортировки одномерного массива, поэтому код писать не буду. Но смотря в каком направлении направлен вектор. Если он направлен слева на право, тогда нужно проверить, отсортирован ли массив по возрастанию (if m<m[i+1] then sort:=false) - справа на лево - по убыванию (if m>m[i+1] then sort:=false).

Re: помогите лузеру)

Добавлено: 19 апр 2007, 01:22
Switchback
спасибо за ответ.
а на счет первой задачи, например число 23456.
2 и 6 парные числа.
парность последней цифры я знаю как проверить, а последней - нет.
вот, что я написала

Код: Выделить всё

Var a,b,kol,k,j : integer;
begin
writeln('a,b');
readln(a,b);
kol:=0;
for j:=a to b-1 do
begin
k:=j mod 10;
if odd (k) then kol:= kol+1;
end;
writeln('kol: ',kol);
end.
правда, правильно или нет - хз

Re: помогите лузеру)

Добавлено: 19 апр 2007, 13:23
Колядин Максим
[quote="Switchback"]

Код: Выделить всё

for j:=a to b-1 do
begin
k:=j mod 10][/quote]
Основываясь на том, что каждый 2-ой ход число [B]k[/B] будет нечётным, то всю цитату можно заменить кодом:
[code]
kol:=(b-a) div 2;

Re: помогите лузеру)

Добавлено: 19 апр 2007, 17:58
Switchback
но нужно учитывать еще парность первой цифры числа. а как это проверить, я не знаю.

Re: помогите лузеру)

Добавлено: 20 апр 2007, 00:32
Колядин Максим
Во-первых, 2 и 6 - непарные.
Определение. Два простых числа N1 и N2, где N2> N1 называются парными, если N2 - N1 = 2.

Re: помогите лузеру)

Добавлено: 20 апр 2007, 01:47
Колядин Максим
Из указанного мною определения можно извлечь то, что если a и b парные, тогда колличество натуральных чисел в этом интервале будет = 2.
Вот код:

Код: Выделить всё

uses crt;

var a,b,sum: integer;

function simplevar(x:longint):boolean; {функция определения простых чисел}
var c: integer;
begin
simplevar:=true;
    for c:=2 to trunc(sqrt(x)) do
    if x mod c=0 then
    begin
    simplevar:=false;
    exit;
    end;
end;

begin
clrscr;
readln(a,b);
if simplevar(a) and simplevar(b) and (b-a=2) then sum:=(((b-a) div 2)+1) else 
write('Не парные! ');
writeln('Кол-во натуральных чисел в интервале - ',sum);
readkey;
end.

Re: помогите лузеру)

Добавлено: 20 апр 2007, 10:07
Хыиуду
Первая и последняя цифра парные могут быть в двух случаях:
Первая 3, последняя 5
или первая 5, последняя 7
поэтому простейший вариант:

Код: Выделить всё

count:=0;
for i:=a to b do
begin
  s:=inttostr(i);
  if (s[1]='3') and (s[length(s)]='5') or (s[1]='5') and (s[length(s)]='7')
  then inc(count);
end;
writeln(count);

Re: помогите лузеру)

Добавлено: 20 апр 2007, 15:05
Колядин Максим
Хыиуду писал(а):Первая и последняя цифра парные могут быть в двух случаях
Может быть я тебя недопонял, но первая и последняя цифры, по идее, могут быть парными во многих случаях.
Примеры: a=1, b=3]a=17, b=19[/B].
Почему обязательно 3 и 5?

Re: помогите лузеру)

Добавлено: 20 апр 2007, 15:17
Хыиуду
1 - не является простым числом по определению.
17 и 19 не являются цифрами.