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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.11.2011, 16:28   #1
Olgaandsasha
Пользователь
 
Регистрация: 24.10.2011
Сообщений: 54
По умолчанию не могу разобраться с массивами

помогите что не так?
работает, но как то не правильно((
Program olga;
var
C: array [1..100] of Integer;
i, j, t, d: Integer;
begin
randomize;
writeln('massiv C=');
for i:=1 to 100 do
begin
C[i]:=-20+random(201);
writeln(C[i]:5);
end;
writeln;
for d:=1 to 99 do
begin
for i:=1 to 100-d do
begin if C[i]>C[i]+1 then
t:=C[1];
C[i]:=C[i]+1;
t:=C[1]+1;
end;
for i:=1 to 100 do
write(C[i]:5);
if i<=100 then
begin
for j:=1 to 100 do
begin
i:=i+1;
writeln(c[i]:5);
readln;
end;
end.
задание: дано 100 чиселю напечатать по 5 элементов в строке сначала все отрицательные, затем нулевые и положительные из них.
Olgaandsasha вне форума
Старый 14.11.2011, 17:05   #2
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

1) Много мелких ошибок (исправляя ошибки получим)
Код:
Program olga;
var
  C: array [1..100] of Integer;
  i, j, t, d: Integer;
begin
  randomize;
  writeln('massiv C=');
  for i:=1 to 100 do
  begin
    C[i]:=-20+random(201);
    writeln(C[i]:5);
  end;
  writeln;
  for d:=1 to 99 do
    for i:=1 to 100-d do
      if C[i]>C[i+1] then Begin
       t:=C[i];
       C[i]:=C[i+1];
       C[i+1]:=t;
      end;

  for i:=1 to 100 do Begin
    if (i mod 5)=1 then Writeln;
    write(C[i]:5);
  end;
end.
Но он просто сортирует элементы по неубыванию.

2) Скорее всего вам нужно сохранить исходный взаимный порядок отрицательных и положитльных элементов. Тогда можно сделать прмерно так (обратите внимание на условия сортировки, фактически мы сортируем числа по их знаку)

Код:
Program olga;
var
  C: array [1..100] of Integer;
  i, j, t, d: Integer;
begin
  randomize;
  writeln('massiv C=');
  for i:=1 to 100 do
  begin
    C[i]:=-20+random(201);
    writeln(C[i]:5);
  end;
  writeln;
  for d:=1 to 99 do
    for i:=1 to 100-d do
      if (C[i]>=0) and (C[i+1]<0) then Begin
       t:=C[i];
       C[i]:=C[i+1];
       C[i+1]:=t;
      end;

  for i:=1 to 100 do Begin
    if (i mod 5)=1 then Writeln;
    write(C[i]:5);
  end;
end.
Напишу тоже самое немного другим способом (может будет понятнее)
Код:
Program olga;
{ Возвращает знак числа.   т.е. если X<0  -1     если X>=0 то 1 }
function Sign(X:integer):integer; 
Begin
  if (X>=0) then Sign := 1
    else Sign := -1
End;

var
  C: array [1..100] of Integer;
  i, j, t, d: Integer;
begin
  randomize;
  writeln('massiv C=');
  for i:=1 to 100 do
  begin
    C[i]:=-20+random(201);
    writeln(C[i]:5);
  end;
  writeln;
  for d:=1 to 99 do
    for i:=1 to 100-d do
      if (Sign(C[i])>Sign(C[i+1])) then Begin
       t:=C[i];
       C[i]:=C[i+1];
       C[i+1]:=t;
      end;

  for i:=1 to 100 do Begin
    if (i mod 5)=1 then Writeln;
    write(C[i]:5);
  end;
end.
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."

Последний раз редактировалось val_nnm; 14.11.2011 в 17:09.
val_nnm вне форума
Старый 14.11.2011, 17:13   #3
Olgaandsasha
Пользователь
 
Регистрация: 24.10.2011
Сообщений: 54
По умолчанию

спасибо большое. все очень понятно)
Olgaandsasha вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу разобраться Xoksik Общие вопросы по Java, Java SE, Kotlin 4 27.03.2011 23:36
Помогите разобраться с массивами Ker_33rus Общие вопросы C/C++ 10 22.11.2009 11:24
Помогите пожалуйста разобраться с массивами в паскале! Omsk-champion Помощь студентам 11 08.04.2009 00:35
Работа с массивами, помогите разобраться. Sounds Общие вопросы C/C++ 7 09.01.2009 00:09
помогите разобраться с массивами.очень нужно катя@90 Помощь студентам 8 16.11.2008 13:48