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

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

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

> Подпрограмма, Найти все простые числа, не превосходящие заданного числа n, двоичная
Paytinka
сообщение 15.03.2007 19:39
Сообщение #1





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

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


Найти все простые числа, не превосходящие заданного числа n, двоичная запись которых представляет собой симметричную последовательность 0 и 1.

Программа вычисляет простые числа и переводит их в двоичную систему счисления, а проблемма у меня возникла с нахождением симметрмичного двоичного числа..почему-то программа не реагирует на функцию Simmetr.
uses crt;
function FromDec(n, radix:longint):string; // перевод числа в двоичную систему счисления
var
s: String;
const
digit: string[2]='01';
begin
s:='';
repeat
s:=digit[(n mod radix)+1]+s;
n:=n div radix;
until n=0;
FromDec:=s;
end;
function Simmetr(j:integer):boolean; // проверка является ли число симметричным
var
i,n:integer;
b:boolean;
s:string;
begin
b:=true;
for i:=1 to n div 2 do
if s[j]<>s[n-j+1] then simmetr:=true
else simmetr:=false;
end;
// основная программа нахождения простых чисел
var n,i,k,pdel,f:integer;
p, Code : Integer;
Str: string;
begin
clrscr;
repeat
Write('vvedite 4islo n: ');
Readln(str);
Val(Str, p, Code);
if Code<>0 then Writeln('Nepravilnij vvod! Owibka: ',Code) // проверка правильности ввода числа
Else Writeln('Ok!');
until Code = 0;
n:=p;
for i:=2 to n do
begin
pdel:=0;
for k:=2 to i do
if (i mod k) = 0 then pdel:=pdel+1;
begin
if pdel=1 then Write(i,' ');
writeln('=',fromdec(i,2)); // вывод простого числа в двоичной форме
writeln('=', simmetr(i)); // симметр число
end;
end;
readkey;
end.


Сообщение отредактировано: volvo - 15.03.2007 20:04
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 15.03.2007 20:02
Сообщение #2


Гость






Функция simmetr не совсем корректно написана... Вот так попробуй:
function Simmetr(s:string):boolean;
var
i:integer;
b:boolean;
begin
b:=true;
for i:=1 to length(s) div 2 do
if s[i]<>s[length(s)-i+1] then b:=false;
simmetr:=b;
end;


А вызывать - вот так:
...
n:=p;
for i:=2 to n do begin

pdel:=0;
for k:=2 to i do
if (i mod k) = 0 then pdel:=pdel+1;

if (pdel=1) and (simmetr(fromdec(i, 2))) then WriteLn(i,' ', fromdec(i, 2));

end;
...
 К началу страницы 
+ Ответить 
Артемий
сообщение 15.03.2007 20:03
Сообщение #3


Помощник капитана
****

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

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


function Simmetr(j:integer):boolean;\\проверка является ли число симметричным
var
i,n:integer;
b:boolean;
s:string;
begin
b:=true;
for i:=1 to n div 2 do
if s[j]<>s[n-j+1] then simmetr:=true
else simmetr:=false;
end;

А причем сдесь строка s? blink.gif Что она сдесь выполняет?И n: ты даешь ему хоть одно значение?


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.03.2007 20:03
Сообщение #4


Гость






P.S. Paytinka, тегами пользуйся...
 К началу страницы 
+ Ответить 
Paytinka
сообщение 15.03.2007 23:51
Сообщение #5





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

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


Volvo, спасибо тебе огромное за помощь!!!! теперь все работает отлично!!! !flowers.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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