IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Работа с упорядоченным массивом
сообщение
Сообщение #1


Гость






ребят, такая же фигня. в Паскале надо решить такую задачу:
Цитата
вставить число в упорядоченный массив. Вновь образованный массив вывести на экран.

Завтра в универе будет грустно без этой задачи. А в Паскале и вообще в программировании не понимаю НИЧЕГО. вообще дуб дубом. задача то наверное для вас детская, но кто поможет тому МЕГА респект и спасибо! smile.gif :molitva: :molitva: :molitva:

Добавлено (21.12.04 9:55):
сорри, забыл, массив одномерный.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Код
uses crt;
const n=5;
var x:array[1..n] of extended;
   i:integer;
   p:extended;

Begin
  clrscr;
  writeln('Vvedite elementi massiva');
  for i:=1 to n do
   readln(x[i]);
  writeln('Vvedite nomer elementa,kotori hotite izmenit');
   readln(i);
  writeln('Vvedite  znachenie, kotoroe hotite prisvoit elementy s nomerom ',i);
   readln(p);
   writeln;

   x[i]:=p;
  for i:=1 to n do
   writeln(x[i]:2:3);
   readln;
   end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






klem4
Вообще-то элемент нужно было вставить, а не заменять. :yes:
Код

const
 n = 5;
 a:array[1..n+1] of integer = (1,2,3,4,5,0);
var
 new,i,pos:integer;
begin
 WriteLn('Введите индекс вставляемого элемента');
 ReadLn(pos);
 WriteLn('Введите вставляемый элемент');
 ReadLn(new);
 for i := n+1 downto pos do
   a[i] := a[i-1];
 a[pos] := new;
 for i := 1 to n+1 do
   Write(a[i]:2);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






спасибо ребят огромное, тут есть еще одна задача, если поможете,будет мне счастье в жизни. rolleyes.gif
"Найти макс. элемент двумерного массива А(n,m) и вычесть его из элементов столбца в котором он находится."
еще раз спасибо.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Код

const
 n = 3;
 m =3;
 a:array[1..n,1..m] of integer = ((1,-2,3),(-3,2,-1),(2,-1,3));
var
 max,i,j,ind:integer;

begin
 max := -maxint;
 for i := 1 to n do
   for j := 1 to m do
     if a[i,j] > max then
       begin
         max := a[i,j];
         ind :=j;
       end;
 for i := 1 to n do
   dec(a[i,ind],max);
 for i := 1 to n do
   begin
     WriteLn;
     for j := 1 to m do
       Write(a[i,j]:3);
   end;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Извиняюсь, неправильно понял условие.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Может я конечно чо-то не понимаю, но у тебя пропадает один из элементов в конце, тебе не кажется ? :D

По моему правильнее так :

Код
uses crt;
const n=6;
var x:array[1..n] of integer;
   i,new,newi,p:integer;

Begin
  clrscr;
  randomize;
  for i:=1 to n-1 do
   begin
      x[i]:=random(6);
      write(x[i]);
      write(' ');
   end;
   writeln;
   readln(newi);
   writeln;
   readln(new);
   writeln;

   for i:=n downto new do
    begin
       p:=x[i-1];
       x[i]:=p;
    end;
    x[newi]:=new;

   writeln;
   for i:=1 to n do
    begin
       write(x[i]);
       write(' ');
    end;

   readln;
   end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






klem4
Массив я описываю константой, потому что так быстрее, а 0 в конце - просто пустой элемент - это то же самое, что ты объявил массив из n элементов, а заполнил его весь, кроме последнего элемента.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


У тебя массив из_6_элементов (1,2,3,4,5,0)
в конечном массиве одни из элементов у тебя пропадает, у меня массив становится на 1 элемент больше
ЗАДАЧА в массив ВСТАВИТЬ элемент ,все элементы которые были, должны остаться.

поставь вот это в начале и сравник с конечным массивом, все эелементы на месте ?
Код


{****************************}
for i:=1 to n+1 do
 begin
    write(a[i]);
    write(' ');
 end;
readln;
{****************************}


Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






klem4
Цитата
У тебя массив из_6_элементов

А у тебя тоже массив из 6-ти элементов, но инициализируешь ты почему-то только 5... Логичнее делать так, как сделал mithquessir:
Код

const
n = 5;
a:array[1..n+1] of integer = (1,2,3,4,5,0);

при n = 5 описать массив на 1 элемент больше, и использовать лишний элемент для расширения...

P.S. Если уж об этом зашел разговор, то сделать так, чтобы массив действительно менял размер, невозможно без использования динамической памяти...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






volvo
Согласен. :yes:
Код

type
 ArrElem = integer;
 ArrType = array[1..1] of ArrElem;
 TArr = object
   Arr:^ArrType;
   private
     ArrSize:word;
   public
       constructor Create;
       destructor Destroy;
       procedure SetArrSize(size:word);
       procedure Enter;
       procedure Print;
       procedure Insert(pos:word,num:integer);
       procedure IncArrSize;
   end;

 constructor TArr.Create;
 begin
   GetMem(Arr,ArrSize * SizeOf(ArrElem));
 end;

 destructor TArr.Destroy;
 begin
   FreeMem(Arr,ArrSize * SizeOf(ArrElem));
 end;

 procedure TArr.SetArrSize(size:word);
 begin
   ArrSize := size;
 end;

 procedure TArr.Enter;
 var
   i:integer;
 begin
   WriteLn('Vvodite elementy postrochno');
   for i := 1 to ArrSize do
   begin
     Write('[',i,']=');
     Read(Arr^[i]);
   end;
 end;

 procedure TArr.Print;
 var
   i:integer;
 begin
   WriteLn('Massiv:');
   for i := 1 to ArrSize do
   WriteLn('[',i,']=',Arr^[i]);
 end;

 procedure TArr.Insert(pos:word,num:integer);
 var
   i:integer;
 begin
  IncArrSize;
  for i := ArrSize downto pos do
    Arr^[i] := Arr^[i-1];
  Arr^[pos] := num;
 end;

 procedure TArr.IncArrSize;
 var
   b:array[1..1000] of ArrElem;
   i,oldsize:integer;
 begin
   for i := 1 to ArrSize do
     b[i] := Arr^[i];
   oldsize := ArrSize;
   SetArrSize(ArrSize+1);
   Create;
   for i := 1 to oldsize do
     arr^[i] := b[i];
 end;

var
 a:TArr;
begin
 a.SetArrSize(5);
 a.Create;
 a.Enter;
 a.Insert(2,0);
 a.Print;
 a.Destroy;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






mithquessir
Если бы ты еще ФАК посмотрел, то нашел бы там уже готовый модуль, который реализует динамический массив... rolleyes.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






volvo
Смотрел, это же святая святых. smile.gif :D lol.gif

Сообщение отредактировано: mithquessir -
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 20:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name