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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2009, 22:39   #1
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию задача на Delphi, массивы. никак не получается!

Вот условия задачи:
Дан одномерный целочисленный массив А из N элементов. N заданное натуральное число.
• сформировать массив В, из элементов массива А, которые являются простыми числами;
• удалить из массива А те элементы в записи которых есть цифра 5
• выполнить циклический сдвиг массива А вправо на заданное число элементов К

Единственная просьба написать в console application на Delphi. ОЧень срочно надо. помогите поджалуйста.
Saka вне форума Ответить с цитированием
Старый 19.12.2009, 22:53   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

пиши в аську, сделаю
fbus вне форума Ответить с цитированием
Старый 19.12.2009, 23:32   #3
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию

актуально. пишите код в тему пожалуйста
Saka вне форума Ответить с цитированием
Старый 20.12.2009, 11:53   #4
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию

up! помогите пожалуйста нужна срочно
Saka вне форума Ответить с цитированием
Старый 20.12.2009, 18:20   #5
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию

up срочно надо
Saka вне форума Ответить с цитированием
Старый 20.12.2009, 18:47   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вот тебе шаблончик Дальше сам

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  A, B: array of Integer; (* Дан одномерный целочисленный массив А из N элементов.
                          N заданное натуральное число. *)
  i, tmp: Integer;
  N, K: Integer;

begin
  ReadLn(N);
  SetLength(A, N); // Установка длин массивов
  SetLength(B, N);

  for i := 0 to N - 1 do (* сформировать массив В, из элементов массива А,
                            которые являются простыми числами; *)
    // Проверка на прост. числа

  for i ;= 0 to N - 1 do (* удалить из массива А те элементы в
                            записи которых есть цифра 5*)
    if A[i] = 5 then A[i] := 9999; (* После всех проверок сдвинуть массив
                                      Значение можно взять любое, главное чтобы
                                      было "заметным" *)

  (* выполнить циклический сдвиг массива А
     вправо на заданное число элементов К *)
  for i := 0 to N - 1 do
  begin
    tmp := A[i+K];
    A[i+K] := A[i];
    A[i] := tmp; // Вроде так
  end;


end.
psycho-coder вне форума Ответить с цитированием
Старый 20.12.2009, 21:02   #7
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию

все алгоритмы понял, кроме нахождения простого числа. не могли бы помочь.
Saka вне форума Ответить с цитированием
Старый 20.12.2009, 22:43   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для проверки числа на простоту:
Код:
{Внимание! N должно быть от 2 и выше!!!!!}
function IsProstoe2(N: LongInt): boolean;
var
  i: integer;
begin
  IsProstoe2 := true;
  if abs(N) < 3 then
    exit;
  for i := 2 to Trunc(sqrt(N)) do
    if abs(N) mod i = 0 then
      begin
        IsProstoe2 := false;
        exit;
      end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.12.2009, 23:36   #9
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
для проверки числа на простоту:
Код:
{Внимание! N должно быть от 2 и выше!!!!!}
function IsProstoe2(N: LongInt): boolean;
var
  i: integer;
begin
  IsProstoe2 := true;
  if abs(N) < 3 then
    exit;
  for i := 2 to Trunc(sqrt(N)) do
    if abs(N) mod i = 0 then
      begin
        IsProstoe2 := false;
        exit;
      end;
end;
я думаю, так лучше:
Код:

{ Возвращает TRUE если число простое }
function PrimeNumber(X: Longint): Boolean;
var
  I: Integer;
  F: Boolean;
begin
  F := True;
  for I := 2 to Trunc(Sqrt(X)) do
    if X mod I = 0 then
    begin
      F := False;
      Break;
    end;
  PrimeNumber := F and (X <> 1);
end;
работает для всех положительных целых чисел 1, 2, 3, ...
можно еще в самом начале условие добавить:
Код:
if X <= 1 then
begin
  PrimeNumber := False;
  Exit;
end;
тогда будет работать для всех целых чисел + в конце проверку на неравенство единице можно убрать... и даже обойтись без переменной F...

вот такая универсальная функция получится:
Код:
{ Возвращает TRUE если число простое }
function PrimeNumber(X: Longint): Boolean;
var
  I: Integer;
begin
  PrimeNumber := True;
  if X <= 1 then
  begin
    PrimeNumber := False;
    Exit;
  end;
  for I := 2 to Trunc(Sqrt(X)) do
    if X mod I = 0 then
    begin
      PrimeNumber := False;
      Break;
    end;
end;

Последний раз редактировалось Alex_FF; 20.12.2009 в 23:42.
Alex_FF вне форума Ответить с цитированием
Старый 20.12.2009, 23:54   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Alex, лучше так, согласен.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi.Задача на массивы в консоли. ant-igorevich Помощь студентам 7 26.11.2009 21:56
у меня никак не получается скомпелировать фаил finero Общие вопросы C/C++ 4 10.07.2008 19:29