Оч-оч нада! Пжлалста, помогите!

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Аватара пользователя
†M@MOHT^eHoK†
Сообщения: 2
Зарегистрирован: 18 дек 2007, 16:23

Ребят, оч нада! Воть задачки по Паскалю... Ну никак решить не могу! Пж, мне до послезавтра сдать надо! А я потом свои решённые выложу на сайте! Воть! Заранее спасибо!

1. Дан одномерный целочисленный массив B(n) и натуральное число n. Для каждого из элементов массива B выяснить, сколько раз оно входит в эту последовательность. Результат представить в виде:
"a1 встречается k1 раз" При печати не должно быть повторяющихся строк.

2. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке: все звонкие согласные буквы, которые входят более чем в одно слово; все гласные буквы, которые не входят более чем в одно слово.

3. Дана строка символов и число N. Произвести ротацию строки на N символов (например: если исходная строка равна '1x2y3z4a', а N=3, то результирующая строка будет равна ' z4a1x2y3').

...и самое главное:

4. Два натуральных числа называются "дружественными", если каждое из них равно сумме всех делителей другого, за исключением его самого (таковы, например, числа 220 и 284). Напечатать все пары "дружественных" чисел, не превосходящих заданного натурального числа.

5. Элемент двумерного массива называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером NxN найти максимум среди всех локальных минимумов.

Я надеюсь на вашу помошь!
Прост Мамонтёнок! Воть! :-)
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

"Дружественные числа"

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

uses crt;

var x,  n: Integer;
    s1,s2: Integer;

Function GetDividersSumm(x:integer):Integer;
var i, s: integer;
begin
GetDividersSumm := 0;
If X < 2 then exit;
S := 0;
For i := 1 to x div 2 do
	If x mod i = 0 then S := S + i;
GetDividersSumm := S;
end;

begin
ClrScr;
Write('N = '); Readln(N);
For X:=2 to N do
	begin
        s1 := GetDividersSumm(x);
        s2 := GetDividersSumm(s1);
        If (x=s2) and (x<>s1) then Writeln(x:8,s1:8);
        end;
end.
It's a long way to the top if you wanna rock'n'roll
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Ротация строки:
l:=length(s);
s:=copy(s,l-N+1,N)+copy(s,1,l);

Локальный минимум:

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

function is_local_minimum(i,j:integer);
begin
  is_local_minimum:=
     ((i=1) or (A[i,j]<A[i-1,j])) and
     ((j=1) or (A[i,j]<A[i,j-1])) and
     ((i=N) or (A[i,j]<A[i+1,j])) and
     ((j=N) or (A[i,j]<A[i,j+1]));
end;
Дальше с этой функцией пройти в двойном цикле по всему массиву.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
†M@MOHT^eHoK†
Сообщения: 2
Зарегистрирован: 18 дек 2007, 16:23

Ребять! Вы меня прост выручили! Огромное спасибо! :p
Прост Мамонтёнок! Воть! :-)
Ответить