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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2010, 16:01   #1
Vadim123456
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 37
Восклицание Удаление, сортировка элементов массива.

1. Дан одномерный массив, размерность которого произвольна и заполенный случайным образом. Удалить все отрицательные элементы массива.

Код:
Program gg;
Uses crt;
Var
a:array [1..100] of integer;
i,k,n:integer;
Begin
Clrscr;
Randomize;
Write('Vvedite kol-vo elementov=');
Readln(N);
k:=0;
For i:=1 to n do
Begin
a[i]:=-50 +random(180);
Write(a[i]:5);
End;
Writeln;
For i:=1 to n do
If a[i]>=k then write(a[i]:5);
Readln;
End.
2. Дан массив A(20), заполненный случайным образом. Упорядочить данный массив: 1) по убыванию; 2) по невозрастанию (каждый последующий элемент должен быть меньше или равен предыдущему).


Второй номер у меня не получается сделать. Помогите пожалуйста.

Последний раз редактировалось Vadim123456; 14.02.2010 в 16:03. Причина: =)
Vadim123456 вне форума Ответить с цитированием
Старый 14.02.2010, 16:13   #2
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
По умолчанию

2. Дан массив A(20), заполненный случайным образом. Упорядочить данный массив: 1) по убыванию; 2) по невозрастанию (каждый последующий элемент должен быть меньше или равен предыдущему).

сделал тока 2), ну а по убыванию сам додумаешься!
Код:
program А20;
   uses crt;
   const n=20;
   Var i,a,b,c,d:integer;
   mas:array [1..n] of integer;
   begin
   clrscr;
randomize;
for i:=1 to n do
begin
mas[i]:=random(25);
write(mas[i]:3);
end;
writeln;
for b:=1 to n do
begin
for i:=1 to n do
begin
  if mas[i-1]<mas[i] then begin a:=mas[i-1];mas[i-1]:=mas[i]; mas[i]:=a;
end;
end;
end;
writeln;
for i:=1 to n do write(mas[i]:3);
readln;
end.
Код:
program А20;
uses crt;
const n=20;
var i,a,b,c,d:integer;
    mas:array [1..n] of integer;
begin
clrscr;
randomize;
for i:=1 to n do
  begin
  mas[i]:=random(25);
  write(mas[i]:3);
  end;
writeln;
for b:=1 to n do
  begin
  for i:=1 to n do
    begin
    if mas[i-1]<mas[i] then 
      begin 
      a:=mas[i-1];
      mas[i-1]:=mas[i];
      mas[i]:=a;
      end;
    end;
  end;
writeln;
for i:=1 to n do 
  write(mas[i]:3);
readln;
end.

Последний раз редактировалось Stilet; 15.02.2010 в 09:15.
sllh_111 вне форума Ответить с цитированием
Старый 14.02.2010, 16:15   #3
Vadim123456
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 37
По умолчанию

Если честно не очень понял. Какая из них к данному заданию? Вторая или первая программа?
Vadim123456 вне форума Ответить с цитированием
Старый 14.02.2010, 16:16   #4
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
По умолчанию

1 и 2
Два разных алгоритма. Бери тот, что по душе.
sllh_111 вне форума Ответить с цитированием
Старый 14.02.2010, 16:19   #5
Vadim123456
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 37
По умолчанию

Но я проверяю и обе не совсем правельно работают. Т.к. он не выводит наибольшего а остальные все вроде правильно выводит.
Vadim123456 вне форума Ответить с цитированием
Старый 14.02.2010, 16:26   #6
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Vadim123456 Посмотреть сообщение
Но я проверяю и обе не совсем правельно работают. Т.к. он не выводит наибольшего а остальные все вроде правильно выводит.
а он должен?
sllh_111 вне форума Ответить с цитированием
Старый 14.02.2010, 16:27   #7
Vadim123456
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 37
По умолчанию

Ну вроде да. Там же по убыванию. Значит например дано: 6, 9, 60, 10.
У тебя он выводит: 10, 9, 6.
А должен наверно: 60, 10, 9, 6.
Vadim123456 вне форума Ответить с цитированием
Старый 14.02.2010, 16:38   #8
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
По умолчанию

Проверь еще раз.
60 он тебе точно не выведет, там только до 24.
сейчас на 2 проге проверял, всё работает, все выводит.
sllh_111 вне форума Ответить с цитированием
Старый 14.02.2010, 23:43   #9
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

держи код
Код:
program zad1;
type mas=array[1..20] of integer;
var     j,i,p:integer;
     a:mas;
     begin
     randomize;
     writeln('исходный массив :');
     for i:=1 to 20 do
     begin
     a[i]:=random(99);
     write(a[i],'  ');
     end;
     writeln;
     writeln('массив упорядоченный по возрастанию');
     for j:=1 to 20 do
     for i:=1 to 19 do
     if a[i]>a[i+1] then
     begin
     p:=a[i];
     a[i]:=a[i+1];
     a[i+1]:=p;
     end;
     for i:=1 to 20 do
     write(a[i],'  ');
     for j:=1 to 20 do
     for i:=1to 19 do
     if a[i]<a[i+1] then
     begin
     p:=a[i];
     a[i]:=a[i+1];
     a[i+1]:=p;
     end;
     writeln;
     writeln('массив упорядченный по убыванию');
     for i:=1 to 20 do
     write(a[i],'  ');
     end.
теперь вопрос к товарищу sllh_111
Код:
mas[i-1]
задав i от 1 до n, как вы можете обратиться к 0 элементу которого просто не существует? Выход за границы массива Поэтому цикл нужно задать от 2

Последний раз редактировалось Базиля; 14.02.2010 в 23:54.
Базиля вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
удаление одинаковых элементов из массива sauron99 Общие вопросы Delphi 6 15.04.2009 21:27
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16
Удаление элементов из динамического массива dashulka Общие вопросы Delphi 4 31.10.2008 14:03