Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы и прочее.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
wilin
1. Дано натуральное числоN. Требуется написать программу для определения наименьшего из целых чисел, больших числа N и составленных из тех же цифр, что и N.

2. Для заданной числовой последовательности A[1..N] найти максимальную длину строго возрастающей подпоследовательности элементов (не обязательно подряд идущих) последовательности A.

3. Даны два массива чисел. Создать третий массив теми элементами из первого массива, которых нет во втором массиве.

4. Дан угол в градусах между часовой стрелкой и линией, проходящей через центр циферблата и точку, соотв. 12 часам. Требуется определить текущее время с точностью до минуты. Используя полученные числа, определить, сколько времени пройдет прежде чем часовая и минутная стрелки
а) будут перпендикулярны
б) будут взаимно противоположны
в) совпадут

5. Для некоторого целого числа N определить такое число a, не кратное 10, котрое при зачеркивании первой цифры уменьшается в n раз.


Катастрофически не хватает времени, очень надеюсь на вашу помощь... unsure.gif

Добавлено через 19 мин.
2. Пока что сделала так...

const  a:array[1..10] of integer=(1,2,0,6,8,3,6,4,2,0);  
var b:array[1..10] of integer;
i,j,k,max:integer;
begin
for j:=1 to 6 do
begin for i:=1 to 6 do
if a[i+1]>a[i] then inc(k);
b[j]:=k;
end;
max:=1;
for j:=2 to 5 do if b[j]>b[max] then max:=j;
writeln(max-1);
readln;
end.


Вроде выходит, но, думается, есть тут какая-то жопа... unsure.gif
volvo
willin, практически все задачи уже решались (или обсуждались) на форуме:

1. Принцип решения - здесь: Число
2. и 3. - вообще встречаются довольно часто... Например, 3 массива - для третьей задачи...
4. см. здесь: Задача о времени без алгоритма. Как?
wilin
volvo, видимо, неправильно искала, так как ничего не нашла... Попробую перейти по ссылкам

Добавлено через 11 мин.
эх, добрые люди, не поможете ли написать код, голова совсем пухнет, времени не хватает анализировать задачи...

Добавлено через 4 мин.
для третьей задачи не работает...
Uses Crt ;

Var
A: Array[1..20] of Integer;
B: Array[1..20] of Integer;
C: Array[1..20] of Integer;
n,i,j,k:Integer;
Begin
ClrScr;
Writeln('n=');
Readln (N);
Writeln('a');
For I := 1 to N do
Begin
Write('A[',I,']=');
Readln(A[I]);
End;
Writeln('B');

For I := 1 to N do
Begin
Write('B[',I,']=');
Readln(B[I]);
End;


j:=0;
For i:=1 to n do
Begin
if (a[i]<>b[i]) then
begin
c[j]:=a[i];
inc(j)
end; end;

for i:=1 to n do
write(c[i],' ');
readln;
end.

Lapp
Цитата(wilin @ 1.11.2007 13:11) *

для третьей задачи не работает...

Ты сравниваешь A[i] с B[i], то есть только элементы с одинаковыми номерами. А надо каждый A[i] сравнивать со всеми B[k]. Посмотри исправленный вариант. Заодно, поучись форматированию программы (отступы). И еще на некоторые мелочи обрати внимание, которые я подправил.

Вводить массивы руками было утомительно, поэтому я вставил заполнение случайными числами - извини уж. Надеюсь, ты сможешь вернуть обратно, если нужно..
Var
A,B,C: Array[1..20] of Integer;
n,i,j,k:Integer;
flag:boolean;

Begin
Write('n=');
Readln (N);
Writeln('a');
For I := 1 to N do Begin
A[I]:=Random(N);
Write(A[I]:4)
End;
WriteLn;
Writeln('B');
For I := 1 to N do Begin
B[I]:=Random(N);
Write(B[I]:3)
End;
WriteLn;
j:=0;
For i:=1 to n do Begin
{устанавливаем флажок и..}
flag:=true;
{в цикле сравниваем со всеми элементами B }
{если хотя бы один равен - флаг сбрасывается}
for k:=1 to N do flag:=flag and (a[i]<>b[k]);
{если флаг не упал, то A[i] не встречается в B }
if flag then begin
{строчки в этом цикле я переставил. Почему?}
inc(j);
c[j]:=a[i]
end;
end;
{вывод массива только до j}
for i:=1 to j do write(c[i],' ');
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.