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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2010, 22:46   #1
Gosser
Новичок
Джуниор
 
Регистрация: 08.01.2010
Сообщений: 4
По умолчанию Массивы в Delphi 7

Здравствуйте, уважаемые программеры!!
Задали задачки, помогите пожалуйста сделать...

1. Дан массив чисел а1,...,аn. Выяснить, имеются ли в данном массиве 2 идущих подряд положительных элемента. Подсчитать количество таких пар. (Тут често говоря не совсем понял, а что могут быть и отрицательные?? И какой массив - не уточняют, одномерный или двумерный...)

2. Отобразить элементы массива относительно центра a1 ↔ an, a2↔ an-1, a3↔ an-2,…)

Для меня немного туманно, я только начал изучать языки высокого уровня... Если не сложно, помогите)
Gosser вне форума Ответить с цитированием
Старый 08.01.2010, 23:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
И какой массив - не уточняют, одномерный или двумерный...)
Как это не уточняют? Там же написано а1,...,аn - это одномерный.
Ну например так:
Код:
var cnt,i:integer;a:array[0..1000] of integer;
begin
// Набиваем массив
 for i:=0 to n do begin
  a[i]:=20-random(20);
 end;
...
 for i:=1 to n do begin
  if (a[i]=a[i-1])and(a[i]>0)and(a[i-1]>0) then inc(cnt);
 end;
writeln(cnt);

end.
вот то cnt и должно дать тебе кол-во таких пар

p.s. - не оптимально но надеюсь ниче не пропустил
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.01.2010, 23:09   #3
Gosser
Новичок
Джуниор
 
Регистрация: 08.01.2010
Сообщений: 4
По умолчанию

Спасибо, а почему массив до 1000? Если одномерный, то тогда до 10 кажется)
Gosser вне форума Ответить с цитированием
Старый 08.01.2010, 23:53   #4
Fantazerishka
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Gosser Посмотреть сообщение
Спасибо, а почему массив до 1000? Если одномерный, то тогда до 10 кажется)
Понятие одномерный не подразумевает его размерность, а скорее положение в пространстве... Эту цифру (1000 или 10 или 13122) вы указываете сами...
Fantazerishka вне форума Ответить с цитированием
Старый 09.01.2010, 14:30   #5
ilgar-90
 
Регистрация: 08.01.2010
Сообщений: 8
По умолчанию

procedure TForm1.Button1Click(Sender: TObject);
var i,j,s,p,k:integer; z:string;
a:array[1..16,1..16] of integer;
begin
for i:=1 to 16 do begin
for j:=1 to 16 do begin
a[i,j]:=StrToInt(StringGrid1.cells[i,j]);


end;
end;

for j:=1 to 16 do begin
for i:=1 to 16 do begin
StringGRid2.Cells[i,j]:=StringGrid1.Cells[i,j];
end;
end;

for j:=1 to 16 do begin
for i:=1 to 16 do begin
k:=StrToInt(StringGrid2.cells[i,j]);
if k>192 then begin
z:=StringGrid2.Cells[i,j];
StringGrid2.Cells[i,j]:='193';
StringGrid2.Cells[i+1,j]:=z;
end;
end;
end;
end;
end;




for j:=1 to 16 do begin
s:=193;
for i:=1 to 16 do begin
if a[i,j]=a[i+1,j] then begin
s:=s+1;
StringGrid2.cells[i,j]:=IntToStr(s);
if a[i-1,j]=a[i,j] then begin
StringGrid2.Cells[i-1,j]:='';
end;
end;
if a[i,j]<>a[i+1,j] then begin
StringGrid2.Cells[i,j]:=IntToStr(a[i,j]);
end;
end;
end;
for p:=1 to s do begin
for j:=1 to 16 do begin
for i:=1 to 16 do begin
If StringGrid2.Cells[i,j]='' then begin
z:=StringGrid2.Cells[i,j];
StringGrid2.Cells[i,j]:=StringGrid2.Cells[i+1,j];
StringGrid2.Cells[i+1,j]:=z;
end;
end;
end;
end;


Вот к примеру этот код для двумерного массива. Находит в каждой строке повторяющиеся цифры, и выводит во второй массив Счетчик и само число. Признаком счетчика является число больше 192. Т.е. строка
1 2 2 2 3 3 4 6 5 заменяется строкой 1 195 2 194 3 4 6 5.
ilgar-90 вне форума Ответить с цитированием
Старый 09.01.2010, 14:59   #6
Gosser
Новичок
Джуниор
 
Регистрация: 08.01.2010
Сообщений: 4
По умолчанию

Здравствуйте, всем спасибо!)) Реализовал так:
(количество положительных пар записывается в memo
Код:
Procedure TForm1.Button1Click(Sender:TObject);
var
n,i:Integer;
a: array[1..10] of Integer;
begin
n:=StrToInt(Edit1.Text);
  for i:=1 to n-1 do
    a[i]:=StrToInt(StringGrid1.Cells[i, 1]);
  for i:=1 to n-1 do
    a[i+1]:=StrToInt(StringGrid1.Cells[i+1,1]);
  for i:=1 to n-1 do
    if (a[i]>0) and (a[i+1]>0) then
    begin
      MessageDlg('Пара чисел '+'['+IntToStr(a[i])+' , '+IntToStr(a[i+1])+']'+' с индексами '+inttostr(i)+' и '+inttostr(i+1)+' удовлетворяют условию(>0)',mtInformation,[mbOk],0);
    end
    else
    MessageDlg('Пара чисел с индексами '+IntToStr(i)+' и '+inttostr(i+1)+' не удовлетворяют условию(>0)',mtInformation,[mbOk],0);

end;

Procedure TForm1.Button2Click(Sender:TObject);
var
n,i:Integer;
a: array[1..10] of Integer;
begin
Memo1.Clear;
Memo1.Lines[0]:='Результаты:';
n:=StrToInt(Edit1.Text);
  for i:=1 to n-1 do
    a[i]:=StrToInt(StringGrid1.Cells[i, 1]);
  for i:=1 to n-1 do
    a[i+1]:=StrToInt(StringGrid1.Cells[i+1,1]);
  for i:=1 to n-1 do
    if (a[i]>0) and (a[i+1]>0) then
Memo1.Lines.Append('Числа '+'['+IntToStr(a[i])+', '+IntToStr(a[i+1])+']'+' с индексами '+IntToStr(i)+' и '+IntToStr(i+1));

end;

end.
Gosser вне форума Ответить с цитированием
Старый 10.01.2010, 14:35   #7
Gosser
Новичок
Джуниор
 
Регистрация: 08.01.2010
Сообщений: 4
По умолчанию

Мне опять нужен ваш совет, уважаемые форумчане!
Циклический сдвиг элементов двумерного массива влево на 1 элемент

у меня пока пусто совсем(( как можно это реализовать? Циклический, насколько я понимаю, это сдвиг без потери... т.е. a1,a2,a3...an -> a2,a3,...an,a1 ?

Массив вводится в StringGrid1
Код:
procedure TForm1.Button1Click(Sender:TObject);
var
x,i,n:Integer;
begin
  if Edit1.Text='' then
  begin
    MessageDlg('нет N',mtInformation,[mbOK],0);
    Edit1.SetFocus;
  end
  else
 begin
Gosser вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi - массивы dForm Помощь студентам 2 30.11.2009 17:57
массивы в delphi grozzy Помощь студентам 5 22.10.2009 02:22
Delphi массивы Misty Помощь студентам 2 25.05.2009 07:51
Массивы. Delphi gree Помощь студентам 10 11.05.2009 22:11