HELP!!!

Suslik
Сообщения: 8
Зарегистрирован: 16 окт 2009, 22:24
Контактная информация:

Спасите ребят! препод дал задание на паскале, а я его вообще не шарю в нем! :(
((((((((Дана последовательность чисел A размерности N.
Выбрать среди них числа больше заданного числа в последовательность B и расположить их по возростанию.
Найти номер первого и последнего членов полученой последовательности в исходной последовательности.
Вывести исходную и полученую последовательность и найденные номера.
Расположение чисел по возростанию оформить подпрограммой.))))))))
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
в общем, суть проги заключается в следующем...
1) ты вводишь число, равное размерности послед-ти А (кол-ву чисел в ней) (не больше 50)
2) появляется послед-ть А из рандомных чисел (от 0 до 50)
3) вбиваешь любое число (от 0 до 50) которое является минимальным числом послед-ти В
прога выписывает всю посл-ть А, посл-ть В (в упоряжоченном виде) и номера первого и последнего членов полученой последовательности В в исходной последовательности А

т.е....
'Введите кол-во чисел в последовательности A' - вводишь 12 (к примеру)
'Введите любое число от 0 до 50' - пишешь 15
прога выводит:
Последовательность A: 3 10 8 15 20 19 34 42 11 6 4 8 (к примеру)
Последовательность В: 15 19 20 34 42
номер первого члена послед-ти В в исходной пос-ти: 4
номер последнего члена послед-ти В в исходной пос-ти: 8
т.е., если 3-1 10-2 8-3 15-4 20-5 и т.д., то прога выводит номер расположения числа в последовательности
Аватара пользователя
Sheka
Сообщения: 246
Зарегистрирован: 17 май 2009, 15:48
Контактная информация:

Спасите ребят! препод дал задание на паскале, а я его вообще не шарю в нем!
:) в таком случае надо писать во фриланс.
Могу сделать 255507394.
Мои мысли настолько гениальны, что санитары уже приехали!
Ася 255507394.
Suslik
Сообщения: 8
Зарегистрирован: 16 окт 2009, 22:24
Контактная информация:

имеются наброски, но он выводит не те числа

Program Suslik;
Uses crt;
Const
_COUNT = 20;
Type
maxArr = record
index,value: integer;
end;
Var
i,b_len,num:integer;
A:array[0.._COUNT] of integer;
B:array[0.._COUNT] of maxArr;

Procedure fillArr(var A:array[0.._COUNT] of integer);

Begin
randomize;
for i:=0 to _COUNT do A:=random(100);
end;

procedure Compare(number:integer; A:array[0.._COUNT] of integer;
var b_len:integer; var B:array[0.._COUNT] of maxArr);
var
index:integer;
begin
for i:=0 to _COUNT-1 do
if A > number then
begin
B[b_len].value:=A;
B[b_len].index:=i;
inc(b_len);
end;
end;

procedure sortSwap(var x,y: maxArr);
var t:integer;
begin
{Value}
t:=x.value;
x.value:=y.value;
y.value:=t;
{Index}
t:=x.index;
x.index:=y.index;
y.index:=t;
end;

procedure Sort(var B:array[0.._COUNT] of maxArr);
var
i,j: integer;
begin
for i:=0 to b_len-1 do
for j:=i+1 to b_len-1 do
if B.value < B[j].value then
sortSwap(B, B[j]);
end;

procedure writeA(A:array[0.._COUNT] of integer);
var i:integer;
begin
writeln('====>>Posledovatelnost "A"<<====');
for i:=0 to _COUNT-2 do
write(A,', ');
write(A[_COUNT-1]);
writeln;
writeln;
end;

procedure writeB(B:array[0.._COUNT] of maxArr);
var i:integer;
begin
writeln('====>>Posledovatelsnost "B"<<====');
for i:=0 to b_len-1 do
write(B.value,' ');
writeln;
writeln;
end;

procedure writeElements(B:array[0.._COUNT] of maxArr);
begin
writeln('====>>NUMBERS<<====');
writeln('Nomer pervogo elem: ', B[0].index+1);
writeln('Nomer poslednego elem: ', B[b_len-1].index+1);
end;

BEGIN
ClrScr;
fillArr(A);
writeA(A);
write('Vvedite 4islo dlya sravneniya: ');
read(num);
b_len:=0;
Compare(num, A, b_len, B);
Sort(B);

writeB(B);
writeElements(B);
{writeln('Dlina B: ', b_len);}
readln;
readln;

END.


исправьте плз :)
Аватара пользователя
Sheka
Сообщения: 246
Зарегистрирован: 17 май 2009, 15:48
Контактная информация:

все намного проще!
Suslik, я вижу ты шаришь намного больше чем тебе надо для решения этой задачи, что тебя и путает.
вот кое что:
var a:array [1..50] of integer;
b:array [1..50] of integer;
begin
n1=0;
nposl=0;
for i:=1 to 50 do a:=random(100);
j:=0;
for i:=1 to 50 do
if a> zad then begin inc(j); b[j]:=a; nposl:=i; if n1=0 then n1:=i; end;
{забей в поисковике сортировку по возрастанию- более 5 разных видов выбъет в миллионе страниц!}
for i:=1 to j do write(b,' ');writeln;
writeln('pervii =',n1,' posl=',nposl;
end.

вот и все! должно работать :)
Мои мысли настолько гениальны, что санитары уже приехали!
Ася 255507394.
Suslik
Сообщения: 8
Зарегистрирован: 16 окт 2009, 22:24
Контактная информация:

Sheka писал(а):все намного проще!
Suslik, я вижу ты шаришь намного больше чем тебе надо для решения
вот и все! должно работать :)
на самом деле это писал не я :)
единственное на что я способен в паскале - это примитивный калькулятор :D
ylika
Сообщения: 6
Зарегистрирован: 17 окт 2009, 20:19

у меня не получается программа помогите позязя!!!!! тема: 0.3. Оператор перехода GOTO. Цикл. Метки.
34) Напечатать 1 2 3 4 . . . 99 100 99 . . . 3 2 1.
вот моя программа:

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

program pr8;
label m1, m2, m3, m4, m5;
var f: integer;
begin
f:= 1;
m1: if f>100 then goto m2 else goto m3
m3:f:=f+1;
goto m1;
m2:f:=f-1;
m5: if f>1 then goto m2 else goto m4;
m4: writeln;
readln;
end.
Suslik
Сообщения: 8
Зарегистрирован: 16 окт 2009, 22:24
Контактная информация:

т.е. он должен тупо напечатать 1 2..99 100 99.. 2 1
и всё?? :o
ylika
Сообщения: 6
Зарегистрирован: 17 окт 2009, 20:19

Suslik писал(а):т.е. он должен тупо напечатать 1 2..99 100 99.. 2 1
и всё?? :o
да но у меня он тупо пишет конец ничего не выводя на экран((((
Suslik
Сообщения: 8
Зарегистрирован: 16 окт 2009, 22:24
Контактная информация:

добавь мою асю
(см. мой профиль)
ylika
Сообщения: 6
Зарегистрирован: 17 окт 2009, 20:19

блин может я совсем дура но я не нашла как залезть в твой профиль))))
Ответить