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

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

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

> нахождение простых чисел
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

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


В файле А.dat дано натуральное n и массив целых чисел длины n. B файл B.dat выписать все элементы массива X, индексы которых являются простыми числами. Распознование простого числа оформить в виде подпрограммы.
Очень надо решить эту задачу))) ПлиЗ

Добавлено через 2 мин.
вот что я попытался сделать, но тут есть ошибки в самой программе, а исправить незнаю как

program Kurs;

procedure nat(i:integer;var k:integer);
var n,s:integer;
begin
s:=0;
for n:=1 to i-1 do
if i mod n = 0 then s:=s+1;
if s=0 then k:=i; end;

var f:text;
a:array[1..10] of integer;
c:array[1..10] of integer;
n,i,j,k:integer;

begin
assign(f,'a.dat');
reset(f);
read(f,n);

for i:=1 to n do
read(f,a[i]);

for i:=1 to n do
write(f,a[i]);

for j:=1 to 10 do
for i:=1 to n do begin
nat(i,k);
c[j]:=a[k];
end;

writeln;
for j:=1 to 10 do
write(c[j]);

close(f);
assign(f,'b.res');
rewrite(f);
writeln;
for j:=1 to n do
write((f,c[j]);
Close(f);

end.


Сообщение отредактировано: He!! -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Вот работающая программа. Извини, твою править было долго и не очень осмысленно - ошибки как в программировании, так и в идее.
Если непонятно, спрашивай.
function IsPrime(n: integer): boolean;
var
i,k: integer;
b: boolean;
begin
b:=(i>1);
i:=2;
k:=Trunc(Sqrt(n));
while (i<=k) and b do begin
b:=(n mod i>0);
Inc(i)
end;
IsPrime:=b
end;

var
f,g: text;
n,i,a: integer;

begin
assign(f,'a.dat');
reset(f);
ReadLn(f,n);
assign(g,'b.dat');
ReWrite(g);
for i:=1 to n do begin
read(f,a);
if IsPrime(i) then WriteLn(g,a)
end;
Close(f);
Close(g)
end.


2 Unconnected:
вопрос был не только в том, чтоб заставить программу компилироваться. Иначе всегда можно предложить вариант
begin
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Вот, привел некоторые комментарии. Попробуй разобраться. Если все же не получится - говори.

function IsPrime(n: integer): boolean;  { IsPrime = ЯвляетсяПростым (с английского) } 
var
i,k: integer;
b: boolean; { будет true, пока (и если) не обнаружится, что число составное }

begin

b:=(n>1); { инициализация b, заодно отсечение числа 1, которое не простое, равно true, если n>1 }

i:=2; { инициализация счетчика цикла }

k:=Trunc(Sqrt(n)); { верхний предел цикла - квадратный корень из числа. Дальше проверять нет смысла }

while (i<=k) and b do begin { цикл до верхнего предела или пока не поделится нацело }

b:=(n mod i>0); { true, если число НЕ делится нацело на i (то есть остаток есть) }

Inc(i) { увеличиваем параметр цикла }

end;

IsPrime:=b { Присваиваем возвращаемый результат }

end;



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 8
Пол: Мужской

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


я разобрался в программе, но проверяя число три, оно у меня не получается простым. k получается равным 1, а
i=2,тоесть у нас i<k, значит цикл ниразу не выполняется

Добавлено через 5 мин.
Цитата(He!! @ 24.12.2008 1:51) *

я разобрался в программе, но проверяя число три, оно у меня не получается простым. k получается равным 1, а
i=2,тоесть у нас i<k, значит цикл ниразу не выполняется



Наверное значиние true к b присваевается когда b:=(n>1) и так и остается то конца функции, те число три простое

Сообщение отредактировано: He!! -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
He!!   нахождение простых чисел   22.12.2008 17:03
maksimla   :) все молчю   22.12.2008 17:08
Lapp   He!!, приведи название темы в соответствие…   22.12.2008 17:55
Unconnected   procedure nat(i:integer;var k:integer); var n,s:in…   22.12.2008 18:09
He!!   Вот твой код. Он компилируется, нужно было убра…   23.12.2008 6:41
Lapp   Ответ Unconnected скрыт. Будет открыт после исправ…   22.12.2008 18:15
He!!   все перелазил, не нашел как изменить имя темы. Изв…   23.12.2008 6:16
Lapp   все перелазил, не нашел как изменить имя темы(Реда…   23.12.2008 6:18
He!!   Название темы успешно отредактировано)   23.12.2008 6:26
Lapp   спасибо   23.12.2008 6:31
Lapp   Вот работающая программа. Извини, твою править бы…   23.12.2008 11:17
Lapp   Вот, привел некоторые комментарии. Попробуй разоб…   24.12.2008 5:05
He!!   я разобрался в программе, но проверяя число три, о…   24.12.2008 5:51
Lapp   я разобрался в программе, но проверяя число три, …   24.12.2008 5:58
volvo   - Русская рулетка? Я про отмеченную строку... :) …   23.12.2008 14:51
Lapp   - Русская рулетка? Я про отмеченную строку... :) …   23.12.2008 14:57
He!!   Функцию совсем не понимаю, какая там идея? И что к…   24.12.2008 4:12
He!!   И еще вопрос, например берем число 27. k=5, тогда …   24.12.2008 6:06
Lapp   И еще вопрос, например берем число 27. k=5, тогда …   24.12.2008 6:11
He!!   ММММ, точно))) я все понял, спасибо за внимание. о…   24.12.2008 6:15


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

 





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