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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2014, 06:34   #1
Vitalyas
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 47
По умолчанию Формирование массива простых чисел из текстового файла

Задача такая: Сформировать массив из 10 простых чисел. Простые числа будут браться из текстового файла (f1), а сформированный массив будет выводиться в текстовый файл (f2).
Знаю, что должны писаться коды Read() и Write(), но у меня возник вопрос:"Как можно из текстового файла с рандомным набором чисел сформировать массив простых чисел"
Написал код простого формирования массива из 10 простых чисел, но без текстовых файлов. Может пригодится =)
Код:
var
   a: array[1..10] of integer;
   k: real;    l, r, m, i: integer;
begin
{формирование и вывод массива}
     for i:=1 to 10 do
          begin
               a[i]:=2*i-1; write(a[i]:4);
     end;
end.
Текстовый файл (f1)

Последний раз редактировалось Vitalyas; 30.11.2014 в 06:38.
Vitalyas вне форума Ответить с цитированием
Старый 30.11.2014, 15:02   #2
OldOwlOll
Форумчанин
 
Аватар для OldOwlOll
 
Регистрация: 28.11.2014
Сообщений: 172
По умолчанию

я что-то не понимаю...
Код:
for i:=1 to 10 do
          begin
               a[i]:=2*i-1; write(a[i]:4);
     end;
a[5] = 9 - не простое число

может быть имелось в виду "нечетные числа" ?
Делать то, что любишь - это свобода. Любить то, что делаешь - счастье. (с)
Свободу киндерам!
Счастья всем. Бесплатно. И пусть никто не уйдет обиженным. (с)

Последний раз редактировалось OldOwlOll; 30.11.2014 в 15:04.
OldOwlOll вне форума Ответить с цитированием
Старый 30.11.2014, 15:39   #3
Vitalyas
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 47
По умолчанию

Цитата:
Сообщение от OldOwlOll Посмотреть сообщение
я что-то не понимаю...
может быть имелось в виду "нечетные числа" ?
Код, который я написал - да, он рассчитан на нечетные числа, видно когда тему создавал опечатался =)
Vitalyas вне форума Ответить с цитированием
Старый 02.12.2014, 11:19   #4
xatabich
Пользователь
 
Аватар для xatabich
 
Регистрация: 29.07.2013
Сообщений: 56
По умолчанию

Открываешь первый файл считываешь по одному числу проверяешь число простое если простое то записываешь в вектор после десяти записей в вектор останавливаемся закрываем файл вторая часть программы из вектора выводит в файл всё
xatabich вне форума Ответить с цитированием
Старый 03.12.2014, 15:17   #5
Vitalyas
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 47
По умолчанию

Цитата:
Сообщение от xatabich Посмотреть сообщение
Открываешь первый файл считываешь по одному числу проверяешь число простое если простое то записываешь в вектор после десяти записей в вектор останавливаемся закрываем файл вторая часть программы из вектора выводит в файл всё
Это я понимаю, но как расписать алгоритм проверки (является число простым или нет)?
Vitalyas вне форума Ответить с цитированием
Старый 03.12.2014, 15:38   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
но как расписать алгоритм проверки (является число простым или нет)?
поиском по форуму воспользоваться лень?

например, так можно проверить:

Код:
function isPrime(X: LongInt): boolean;
var i: integer;
  xsqrt : longint;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     xsqrt := trunc( sqrt(x) );
     while i <= xsqrt do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.12.2014, 13:00   #7
Vitalyas
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
поиском по форуму воспользоваться лень?

например, так можно проверить:

Код:
function isPrime(X: LongInt): boolean;
var i: integer;
  xsqrt : longint;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     xsqrt := trunc( sqrt(x) );
     while i <= xsqrt do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;
Да нет, не лень, но тут на четность нечетность или я ошибаюсь? Надо на простые числа... Простые числа - такие числа, которые делятся только на 1 и сами на себя (например 3 5 7 11 13 и т.д.)
Vitalyas вне форума Ответить с цитированием
Старый 04.12.2014, 13:08   #8
Vitalyas
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 47
По умолчанию

Была идея сделать просто, чтобы числа с одного текстового файла, в котором набор простых чисел, переписывало в другой текстовый файл (КОД ПРОГРАММЫ прикрепил ниже) и все =) Но мне хочется, чтобы была проверка чисел так скажем на простоту и чтобы писало только 10 случайных чисел из набора чисел в первом текстовом файле.
Код:
var 
   a:real;
   f1, f2:text;
begin
     assign(f1,'f1.txt');
     reset(f1);
     assign(f2,'f2.txt');
     rewrite(f2);
     while (not eof(f1)) do
          begin
          readln(f1,a);
          writeln(f2,a);
          end;
     close(f2);
     close(f1);
end.

Последний раз редактировалось Vitalyas; 04.12.2014 в 13:21.
Vitalyas вне форума Ответить с цитированием
Старый 04.12.2014, 14:38   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Да нет, не лень, но тут на четность нечетность или я ошибаюсь?
ошибаетесь.

неужели трудно вставить функцию в код и ПРОВЕРИТЬ!??!

Код:
function isPrime(X: LongInt): boolean;
var i: integer;
  xsqrt : longint;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     xsqrt := trunc( sqrt(x) );
     while i <= xsqrt do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;

var i : integer;
begin
  Write('простые числа в диапазоне от 1 до 100 : ');
  for i:=1 to 100 do
    if isPrime(i) then Write(i,' ');
  WriteLn;
  Readln
end.


Цитата:
(например 3 5 7 11 13 и т.д.)
простые числа начинаются с 2. Двойка это тоже простое число, как ни странно.
А вот единица, вопреки распространнёному заблуждению, простым числом не является. Как-то так исторически сложилось!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.12.2014, 15:43   #10
Vitalyas
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 47
По умолчанию

Все спасибо ребята. Кому интересно как написать массив из простых чисел взятых из текстового файла, в котором написаны все числа (не только простые), то вот код программы.
Код:
function isPrime(X: LongInt): boolean;
var i: integer;
  xsqrt : longint;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     xsqrt := trunc( sqrt(x) );
     while i <= xsqrt do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;
var
   f1,f2:text;
   i,n:integer;
   a:array[1..100] of integer;
begin
     assign(f1,'f1.txt');
     reset(f1);
     read(f1,n);
     assign(f2,'f2.txt');
     rewrite(f2);
     for i:=1 to n do
          begin
               Read(f1,a[i]);
               if IsPrime(i) then Write(f2,a[i],' ');
          end;
     close(f2);
     close(f1);
end.
Модераторы! Тему можно закрыть.

Последний раз редактировалось Vitalyas; 15.12.2014 в 15:51.
Vitalyas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
формирование линейного списка целых чисел, элементы которого считываются из текстового файла kalosha-stepa Паскаль, Turbo Pascal, PascalABC.NET 10 21.10.2012 22:02
Чтение дробных чисел из текстового файла Freimaks Общие вопросы Delphi 2 20.06.2012 11:04
Формирование массива из компонентов исходного файла (Задача на Turbo Pascal) Hedgehog92 Помощь студентам 0 23.11.2011 21:53
Методом простых включений произвести сортировку (упорядочивание в порядке возрастания) массива из N действительных чисел СашаСаша Помощь студентам 1 04.07.2011 18:41
Чтение массива из текстового файла. Metil Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.01.2009 22:53