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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2015, 01:56   #11
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

максимально приближено к турбопаскакалю...

1.png
Код:
program cp_284430;

{$apptype console}

const
  MAX_COUNT = 100;

type
  TArr = array[0..MAX_COUNT - 1] of LongInt;

procedure RandomArray(var X: TArr; const Count: Integer);
var
  Index: Integer;
begin
  for Index:= 0 to Count - 1 do
    X[Index]:= Random(101);
end;

procedure InsertValue(var X: TArr; const Place, Value: LongInt);
var
  Index: Integer;
begin
  for Index:= High(X) downto Place + 1 do
    X[Index]:= X[Index - 1];
  X[Place]:= Value;
end;

procedure OutArray(const X: TArr; const Count: Integer);
var
  Index: Integer;
begin
  for Index:= 0 to Count - 1 do
    begin
      Write(X[Index]: 4);
      if Index mod 11 = 10
        then WriteLn;
    end;

  WriteLn;
  WriteLn;
end;

function Search(var X: TArr; const Template, Count: Integer): Integer;
var
  Index, Found: Integer;
begin
  Found:= 0;
  Index:= 0;

  while (Index < Count + Found) { and (Index < MAX_COUNT) } do
    begin
      if X[Index] = Template
        then begin
               InsertValue(X, Index, Template * 2);
               Inc(Found);
               Inc(Index);
             end;
      Inc(Index);
    end;

  Search:= Found;
end;

var
  A: TArr;
  C, F: Integer;

begin
  Randomize;

  repeat
    Write('Enter the source array length [1..', MAX_COUNT div 2, ']: ');
    ReadLn(C);
  until (C > 0) and (C - 1 < MAX_COUNT div 2);

  RandomArray(A, C);
  WriteLn(' -------- Source: ----------');
  OutArray(A, C);

  Write('Enter the template to search: ');
  ReadLn(F);

  F:= Search(A, F, C);

  WriteLn(' -------- Modified (found: ', F ,' items): ----------');
  OutArray(A, C + F);

  Readln;
end.
всё, я спать.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 02.11.2015 в 01:58.
min@y™ вне форума Ответить с цитированием
Старый 02.11.2015, 08:04   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Сформировать массив a[1..n] случайным образом. Определить, содержит ли он заданное число. Если элемент найден, то вставить перед ним элемент вдвое больше найденного.
Обычно такие задачи мы решали так:
Код:
var a:array[1..1000] of integer; j,i,n,v:integer;
begin
 Write('Сколько элементов в массиве? '):readln(n);
 for i:=1 to n do begin
  write('a[',i,']: ');readln(a[i]);
 end;
 Write('Задавай число '):readln(v);
 for i:=1 to n do begin
  if a[i]=v then begin
   for j:=n downto i do a[j+1]:=a[j];
   a[i]:=v;
   inc(n);
  end;
 end;
 
end.
Т.е. просто напросто забором заведомо большего размера под массив.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2015, 08:28   #13
mira95
Пользователь
 
Регистрация: 13.10.2015
Сообщений: 18
Хорошо

Спасибо огромное, да, это что-то поближе к решению, точнее вроде бы оно, сейчас немного поковыряюсь:

немного подкорректировала, почти работает, вот единственное, что напрягает-это то, что элемент не только ставится перед искомым и становится в 2 раза больше, но и сам искомый элемент в новом массиве тоже становится в 2 раза больше, например, если мы нашли число 30 в массиве 40 50 30, то выводит 40 50 60 60,

Код:
program lab2;
uses crt;
var a:array[1..1000] of integer; j,i,n,v:integer;
begin
 Write('Задаем  размерность') ;
 readln(n);
 randomize;
 for i:=1 to n do begin
      a[i]:=random(81)+10;
      writeln(a[i]);

 end;
 Write('Задаем число для поиска ');
 readln(v);
 for i:=1 to n do begin
  if a[i]=v then begin
   for j:=n downto 1 do begin
    a[j+1]:=a[j];
    a[i]:=2*v;
     end;
   n:=n+1;
   for j:=1 to n do
   writeln(a[j]);
  end;
 end;

end.

Последний раз редактировалось Stilet; 02.11.2015 в 10:10.
mira95 вне форума Ответить с цитированием
Старый 02.11.2015, 09:19   #14
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

а чо, мой вариант не подошёл?
почему?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.11.2015, 09:27   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Почему, почему. Небось вумный вариант сильно, Мире страшно стало, вот и в игнор
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.11.2015, 09:33   #16
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
вумный вариант сильно
вумный = плохой?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.11.2015, 09:42   #17
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Препод не поверит, что заслуга ТС. Да и ТС возможно не удалось разобраться в том варианте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.11.2015, 10:13   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
становится в 2 раза больше
Дык у тебя же там умножение приписано
Зачем?
И кстати. У меня там малость лажа:
Код:
 i:=1 while i<=n do begin
  if a[i]=v then begin
   for j:=n downto i do a[j+1]:=a[j];
   a[i]:=v;
   inc(n);
   inc(i);
  end;
  inc(i);
 end;
Вот так надежнее должно быть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2015, 10:47   #19
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Вот так надежнее должно быть.
под копирку
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.11.2015, 17:46   #20
mira95
Пользователь
 
Регистрация: 13.10.2015
Сообщений: 18
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
а чо, мой вариант не подошёл?
почему?
Некоторые из перечисленных вариантов были слишком сильными с применением таких команд, которые мы даже за 2 года работы с Паскалем не проходили Некоторые были близки к нужному ходу решения, парочку я даже брала за основу и лепила из них пробные, в общем, задача решилась, прокатило, спасибо всем
mira95 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерный массив размера n. Найти максимальный элемент массива среди элементов массива,после первого отрицательного (Паскаль) Элиза12345 Паскаль, Turbo Pascal, PascalABC.NET 7 13.11.2012 16:03
Добавление и удаление элементов из массива строк Alex2391 Общие вопросы Delphi 1 04.03.2011 17:59
Произведение элементов массива [Паскаль] Анна22 Помощь студентам 2 06.12.2010 23:57
Добавление элементов массива в массив JOFRIF Общие вопросы C/C++ 11 04.10.2008 01:47