Помогите с задачами

  • Автор темы Lilith
  • Дата начала
L

Lilith

Гость
#1
Есть три задачи:
1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-95,95]. Удалить из него все отрицательные элементы кратные 5 и принадлежащие промежутку [a,b].
2. Вставить число К между всеми соседними элементами, которые имеют разные знаки.
3. Переставить в обратном порядке часть массива между элементами с номерами К1 и К2, включая их.
Есть код к первой и части второй
Код:
var
Form1: TForm1;
V: array of integer;
F: array of integer;
a,b,i,N,K,c,j:integer;
d:String;
implementation

{$R *.dfm}



procedure TForm1.Zadanie1Execute(Sender: TObject); // первая задача
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
N:=StrToInt(Edit3.Text);
SetLength(V,N);
j:=0;
Randomize;

for i:=0 to N-1 do
begin
V[i]:=random(b-a)+a;
end;
for i:=0 to N-1 do
begin
If (N mod 5 <> 0) then
begin
F[j]:=V[i];
j:=j+1;
end;
RichEdit1.Clear;
for i:=0 to N-1 do
begin
d:='F['+IntToStr(i)+']='+IntToStr(F[i]);
RichEdit1.Lines.Add(d);
end;
end;
end;

procedure TForm1.Zadanie2Execute(Sender: TObject); // вторая задача, а точнее ее часть
Var c:String;
begin
K:=StrToInt(Edit4.Text);
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
N:=StrToInt(Edit3.Text);
SetLength(V,N);
Randomize;

for i:=0 to N-1 do
begin
V[i]:=random(b-a)+a;
N:=V[i];
end;
for i:=0 DownTo N-2 do
begin
If V[i]<N then
V[i+1]:=V[i];
V[N-1]:=K;
end;
RichEdit2.Clear;
for i:=0 to N-1 do
begin
c:='V['+IntToStr(i)+']='+IntToStr(V[i]);
RichEdit2.Lines.Add(c);
end;
end;

end.
И очень прошу исправить ошибки в коде, и помочь с написанием второй и третьей задачами...
 
L

Lilith

Гость
#2
Покрайней мере, я сомневаюсь с этой частью программы:
Код:
begin
If (N mod 5 <> 0) then
begin
F[j]:=V[i];
j:=j+1;
end;
 
L

Lilith

Гость
#3
Откуда, откуда... задали по учебе...

Программа "работает", но, (хех) криво :) тем более, в части которую я выделила, есть уже отклонение от задание - это раз, а два, нарушается логика...
 
L

Lilith

Гость
#4
1. Учусь, 2 курс, на спецэфическую специальность экономист-программист (ну еще есть варианты на выбор: экономист-информатик, менеджер-программист, менеджер-информатик) %). Предмет Информатика и программирование.
2. Согласна, с delphi общаюсь пока "на Вы", и сложнее простого канкулятора, ни чего еще не писала... Так что начинаем братся за ум... но... без совета и помощи более опытных сложно, вот и обратилась сюда за помощью.
4. То что логику нарушала я, с этим не спорю.
 
L

Lilith

Гость
#5
ну, почти все задала в глобальные переменные, а так
глобальные
Код:
V: array of integer;
F: array of integer;
N,a, b, i,j:integer;
локальные:
Код:
K,c:integer;
d:String;
c:String;
P.S. ну а дальше, я уже врят ли что-то смогу ответить...
 
L

Lilith

Гость
#7
Учимся, учимся, да и не расчитывала на код готовый :)
Теперь глупые вопросы, что делает функция формат Format?
И... еще хотелось бы, что бы узнать:
из первой задачи: что надо прописать что бы программа удаляла (а то она не делает этого...) элементы?
вторая задача: как происходит вставка заданного элемента в массив?
третья: вот тут я даже не могу представить как делать, если можно то ссылку, или какой нибудь простенький код в качестве примера...
 
L

Lilith

Гость
#8
Мне, может прозвучит странно, хотя бы простые примеры нужны... Из воздуха брать все не могу, да и трудно, когда представление только поверхностное...

Промежуточных результатов нет пока, тот код в первом посте, вся наработка, больше пока не касалась его.

С третьей задачей ступор...
 

Гость
#9
Разъеснение третей части задачи:
есть массив из n элементов:
[1,2,3,4,5,6,7,8,9,10,11,...n] - массив 1 , назавем Vector1

переставить в обратном порядке элементы с K1 по K2: - это будет промежуточный массив для содержания этих элементов K1K2Vector:
взять массив Vector1 , проверить есть ли такая размерность от K1 индекса до K2 если есть то создадим массив K1K2Vector:
Код:
int[] K1K2Vector = new int[K2-1];
int j = 0;
for(i=K2;i<=K1;i--)
{
K1K2Vector[j] = Vector1[i];
j++;
}
j=0;
for(int i=0;i<=Vector1.length();i++)
{
if((i>=K1)||(i<=K2)
{
Vector[i]=K1K2Vector[j];
j++;
}
}
Помойму вот такая логика , пример кода написанный на JAVA , но не пробывал его :rolleyes:.. так что примерно должно быть ясно.
Да , ПС: у меня блокируются проксей кнопки нажатия для ввода кода , напишите мне теги , я буду красиво оформлять код :rolleyes:.
 

Гость
#10
Спасибо ... будем пользоваться, а эту задачку я счас просто поробую быстренько на c++(седня начал изучать) перенести. :rolleyes: