Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2016, 18:21   #1
sasha27
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 15
По умолчанию Delphi - одномерные массивы

Ребята, помогите, пожалуйста, решить две задачки на DELPHI. Огромное спасибо.

Дан массив В, состоящий из 2n элементов. Элементы массива ввести с использованием компонента Edit. Переставить его элементы по следующему правилу: b[1], b[n+1], b[2], b[n+2], … b[n], b[2n]. Вывести новый массив в окно сообщений.

Дан массив В, состоящий из n элементов. Элементы массива ввести с использованием компонента Edit. Удалить элементы с k1-го по k2-ой, где k1 и k2 вводятся с клавиатуры. Вывести новый массив в окно сообщений.
sasha27 вне форума Ответить с цитированием
Старый 08.05.2016, 06:06   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
function GetSubStr(st:string; k:integer):integer;
var
  p, i:integer;
  r:string;
begin
   for i:=1 to k-1 do begin
      p:=pos(' ', st);
      st:=copy(st, p+1, length(st)-p);
   end;
   p:=pos(' ', st);
   if p<>0
      then r:=copy(st, 1, p-1)
      else r:=st;
   Result:=StrToInt(r);
end;

procedure TForm1.Button1Click(Sender: TObject);
const n=5;
var b:array[1..2*n] of integer;
    i,j,z:integer;
begin
   For i:=1 to 2*n do
      b[i]:=GetSubStr(Edit1.Text,i);
   For i:=1 to n-1 do
   begin
      z:=b[n+i];
      For j:=n+i downto (i-1)*2+3 do
         b[j]:=b[j-1];
      b[(i-1)*2+2]:=z;
   end;
   Edit2.Text:='';
   For i:=1 to 2*n do
      Edit2.Text:=Edit2.Text+IntToStr(b[i])+' ';
end;
Код:
function GetSubStr(st:string; k:integer):integer;
var
  p, i:integer;
  r:string;
begin
   for i:=1 to k-1 do begin
      p:=pos(' ', st);
      st:=copy(st, p+1, length(st)-p);
   end;
   p:=pos(' ', st);
   if p<>0
      then r:=copy(st, 1, p-1)
      else r:=st;
   Result:=StrToInt(r);
end;

procedure TForm1.Button1Click(Sender: TObject);
const n=5;
var b:array[1..2*n] of integer;
    i,j,z,k1,k2:integer;
begin
   For i:=1 to 2*n do
      b[i]:=GetSubStr(Edit1.Text,i);
   k1:=StrToInt(Edit2.Text);
   k2:=StrToInt(Edit3.Text);
   For i:=k1 to k2 do
   begin
      For j:=k1 to 2*n-1 do
         b[j]:=b[j+1];
      b[2*n]:=0;
   end;
   Edit4.Text:='';
   For i:=1 to 2*n-k2+k1-1 do
      Edit4.Text:=Edit4.Text+IntToStr(b[i])+' ';
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 08.05.2016, 10:58   #3
sasha27
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 15
По умолчанию

Вторая задача
Ввожу массив:1,2,3,5,4
ввожу к1=2 к2=5, мне выводится массив 1,4,4,4,4,4

ввожу к1=1 к2=5, мне выводится массив 4,4,4,4,4

ввожу к1=2 к2=4, мне выводится массив 1,4,4,4,4,4,4

Код:
procedure TForm1.btn1Click(Sender: TObject);
var
s:string;
i,n,k1,k2,k,j:integer;
B:array [1..100] of integer;
begin
 n:=StrToInt(edt1.text);
for i:=1 to 2*n do
 begin
  b[i]:=StrToInt(GetSubStr(Edt2.Text,i));
 end;
 k1:=StrToInt(edt3.text);
 k2:=StrToInt(edt4.text);
for i:=k1 to k2 do
 begin
  for j:=k1 to 2*n-1 do
  b[j]:=b[j+1];
 b[2*n]:=0;
  end;
  s:='';
 for i:=1 to 2*n-k2+k1-1  do s:=s+' '+IntToStr(b[i])+', ';

 showMessage(s);

end;
sasha27 вне форума Ответить с цитированием
Старый 08.05.2016, 11:08   #4
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Задание должно формулироваться так:
Изображения
Тип файла: jpg просить так.JPG (14.1 Кб, 160 просмотров)
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 08.05.2016, 11:14   #5
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Там просто заменить 2*n на n (забыл поменять)
Код:
begin
 n:=StrToInt(edit1.text);
for i:=1 to n do
 begin
  b[i]:=GetSubStr(Edit2.Text,i);
 end;
 k1:=StrToInt(edit3.text);
 k2:=StrToInt(edit4.text);
for i:=k1 to k2 do
 begin
  for j:=k1 to n-1 do
  b[j]:=b[j+1];
 b[2*n]:=0;
  end;
  s:='';
 for i:=1 to n-k2+k1-1  do s:=s+' '+IntToStr(b[i])+', ';

 showMessage(s);
end;
Цитата:
Сообщение от zvygin1964 Посмотреть сообщение
Задание должно формулироваться так:
Похоже, я на ящик заработал!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 08.05.2016 в 11:25.
newerow1989 вне форума Ответить с цитированием
Старый 08.05.2016, 11:35   #6
sasha27
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 15
По умолчанию

все равно также получается
Ввожу массив:1,2,3,5,4
ввожу к1=2 к2=5, мне выводится массив 1,
ввожу к1=1 к2=5, мне выводится пустое окно сообщений
ввожу к1=2 к2=4, мне выводится массив 1,4

Код:
begin
 n:=StrToInt(edt1.text);
for i:=1 to n do
 begin
  b[i]:=StrToInt(GetSubStr(Edt2.Text,i));
 end;
 k1:=StrToInt(edt3.text);
 k2:=StrToInt(edt4.text);
for i:=k1 to k2 do
 begin
  for j:=k1 to n-1 do
  b[j]:=b[j+1];
 b[2*n]:=0;
  end;
  s:='';
 for i:=1 to n-k2+k1-1  do s:=s+' '+IntToStr(b[i])+', ';

 showMessage(s);
end;
sasha27 вне форума Ответить с цитированием
Старый 08.05.2016, 11:37   #7
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

А условие задания какое?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 08.05.2016, 11:41   #8
sasha27
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 15
По умолчанию

я про то,что задаю удаление массива с 2 до 4,а выводя новый массив 4 в нем присутствует, а ее быть не должно
sasha27 вне форума Ответить с цитированием
Старый 08.05.2016, 11:43   #9
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

1,2,3,5,4
будет 1,4
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 08.05.2016, 11:48   #10
sasha27
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 15
По умолчанию

вот, показывает 1, а должно быть 1,4
Изображения
Тип файла: jpg 1.jpg (20.2 Кб, 127 просмотров)
sasha27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi Одномерные массивы azhigalieva Помощь студентам 1 30.10.2013 23:26
Delphi -одномерные массивы Griiish Помощь студентам 4 16.09.2013 23:40
Одномерные массивы Delphi MisaMisa Помощь студентам 0 02.04.2013 12:45
одномерные массивы в delphi 7 Студентос Помощь студентам 10 07.12.2012 16:18
Одномерные массивы Delphi! Kate23 Помощь студентам 0 22.01.2012 10:01