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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2009, 19:30   #1
kritik
 
Регистрация: 19.07.2009
Сообщений: 5
По умолчанию работа с массивом

Помогите пожалуйста написать программку:
Упорядочить по убыванию только положительные элементы массива,
оставив другие элементы в прежних ячейках.
kritik вне форума Ответить с цитированием
Старый 19.07.2009, 20:07   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Я думаю, что нужно написать процедуру которая будет упорядочнивать элементы массива "с" и "до" указанной позиции.

Проходим по массиву в цикле for и ищём элемент отличный от положительного. Как только находим, мы передаём процедуре начальный и конечный номер элемента нужной последовательности. Процедура упорядочнивает эти элементы.
Дальше цикл for продолжает свои прогулки по массиву.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 19.07.2009, 20:24   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
uses crt;
const nmax=100;{максимальный размер массива}
var a:array[1..nmax] of integer;
    n,i,j:byte;
    x:integer;
begin
clrscr;
randomize;
repeat
write('Введите размер массива n=');
readln(n);
until n in [1..nmax];{проверяем правильность ввода}
writeln('Исходный массив:');
for i:=1 to n do
 begin
  a[i]:=random(50)-20;
  write(a[i]:4);
 end;
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if(a[i]<a[j])and(a[i]>0)then{если число положительное и меньше встреченного}
 begin
  x:=a[i];{меняем их местами через буфер
  a[i]:=a[j];
  a[j]:=x;
 end;
writeln('Отсортированный массив:');
for i:=1 to n do
write(a[i]:4);
readln
end.
puporev вне форума Ответить с цитированием
Старый 19.07.2009, 22:53   #4
kritik
 
Регистрация: 19.07.2009
Сообщений: 5
По умолчанию

получается массив состоит из чисел от 1 до 100? а отрицательные числа уже не получится ввести?
kritik вне форума Ответить с цитированием
Старый 20.07.2009, 00:22   #5
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Массив содержит в себе 100 чисел которые могут быть от -20 до 30.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 20.07.2009, 06:04   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
получается массив состоит из чисел от 1 до 100? а отрицательные числа уже не получится ввести?
А прогнать программу и посмотреть влом?
Цитата:
которые могут быть от -20 до 30.
Точнее от -20 до 29
puporev вне форума Ответить с цитированием
Старый 20.07.2009, 13:45   #7
kritik
 
Регистрация: 19.07.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
А прогнать программу и посмотреть влом?
не было возможности просто, а так большое вам спасибо за помощь

я так поняла строчка

Код:
  a[i]:=random(50)-20;
  write(a[i]:4);
выводит рандомно заданное количество чисел массива, как сделать чтобы эти числа вводить вручную?

Последний раз редактировалось Stilet; 23.07.2009 в 08:17.
kritik вне форума Ответить с цитированием
Старый 22.07.2009, 08:20   #8
Ser@Fim
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 19
По умолчанию

Замени
Код:
for i:=1 to n do
 begin
  a[i]:=random(50)-20;
  write(a[i]:4);
 end;
на
Код:
for i:=1 to n do
 begin
  write('Введите a[',i,']= ');
  readln(a[i])
 end;
Можешь еще у пользователя спросить, каким способом заполнять

Последний раз редактировалось Ser@Fim; 22.07.2009 в 08:26.
Ser@Fim вне форума Ответить с цитированием
Старый 22.07.2009, 19:56   #9
kritik
 
Регистрация: 19.07.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Ser@Fim Посмотреть сообщение
Замени
Код:
for i:=1 to n do
 begin
  a[i]:=random(50)-20;
  write(a[i]:4);
 end;
на
Код:
for i:=1 to n do
 begin
  write('Введите a[',i,']= ');
  readln(a[i])
 end;
Можешь еще у пользователя спросить, каким способом заполнять
это то что нужно!! спасибо тебе огромное!!
kritik вне форума Ответить с цитированием
Старый 22.07.2009, 19:58   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
выводит рандомно заданное количество чисел массива, как сделать чтобы эти числа вводить вручную?
Просто поражает, как можно год проучиться и таких основ не знать.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивом GaSST Microsoft Office Excel 5 04.06.2009 07:57
Работа с массивом Horknee Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 14.04.2009 18:02
работа с массивом begemotikdin Паскаль, Turbo Pascal, PascalABC.NET 2 21.06.2008 21:40
Работа с массивом: n на n ! Angst Помощь студентам 1 24.01.2008 22:14