Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массивы и прочее.

Автор: wilin 1.11.2007 16:41

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 1.11.2007 17:02

willin, практически все задачи уже решались (или обсуждались) на форуме:

1. Принцип решения - здесь: http://forum.pascal.net.ru/index.php?showtopic=17090
2. и 3. - вообще встречаются довольно часто... Например, http://forum.pascal.net.ru/index.php?showtopic=14959 - для третьей задачи...
4. см. здесь: http://forum.pascal.net.ru/index.php?showtopic=18406

Автор: wilin 1.11.2007 17:11

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 2.11.2007 12:09

Цитата(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.