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

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

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

> нахождение простых чисел
He!!
сообщение 22.12.2008 13:03
Сообщение #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!! - 23.12.2008 2:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 23.12.2008 7:17
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.12.2008 1:05
Сообщение #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 
 К началу страницы 
+ Ответить 
He!!
сообщение 24.12.2008 1:51
Сообщение #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!! - 24.12.2008 1:52
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.12.2008 1:58
Сообщение #5


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

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

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


Цитата(He!! @ 24.12.2008 1:51) *
я разобрался в программе, но проверяя число три,

Ты исправил ошибку, которую заметил volvo? Первая строка исполняемого кода в функции.

неправильно:
b:=(i>1);

нужно:
b:=(n>1);


Добавлено через 5 мин.
Цитата(He!! @ 24.12.2008 1:51) *
Наверное значиние true к b присваевается когда b:=(n>1) и так и остается то конца функции, те число три простое
Именно так.


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

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


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

 



- Текстовая версия 20.07.2025 18:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"