Убедительная просьба ко всем, кто выкладывает исходники: 1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы
Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!
Прежде чем задать вопрос, воспользуйтесь учебником
Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36
Member
Статус: Не в сети Регистрация: 13.04.2004 Откуда: Томск
Скажите, а можно ли занести в модуль System какую-нибудь свою подпрограмму? Допустим, функцию возведения в произвольную степень, а то постоянно писать exp(a*ln(b)) довольно долго.
_________________ Аннигиляция уничтожит всех. За капитуляцией последует падение власти.
Member
Статус: Не в сети Регистрация: 10.03.2003 Откуда: Россия, Моск...
Ну вот, написал что-то с функцией. Как-то не красиво смотрится.
Задача: посчитать периметр десятиугольника по координатам (х1,у1)...(х9,у9). Причем проверка на существование такого многоугольника не требуется. Короче сумму отрезков надо.
Код:
Program Pr1; Var S1,S2,S,X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,P : REAL; Function Ras(X0,X1,Y1,Y0 : REAL) : REAL; Begin S1:=X1-X0; S2:=Y1-Y0; S:=sqr(S1*S1+S2*S2); Ras:=S; End; Begin Writeln('X0,X1,X2,X3,X4,X5,X6,X7,X8,X9'); Readln(X0,X1,X2,X3,X4,X5,X6,X7,X8,X9); Writeln('Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9'); Readln(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9); P:=Ras(X0,X1,Y0,Y1)+Ras(X2,X3,Y2,Y3)+Ras(X4,X5,Y4,Y5)+Ras(X6,X7,Y6,Y7)+Ras(X8,X9,Y8,Y9); Write('P=',P); Readln End.
Member
Статус: Не в сети Регистрация: 14.08.2004 Откуда: Москва
Доброго времени суток... Помогиет пожалуйста решить задачу...
Вобщем условие: найти все простые числа на интервале от 1 до N включительно... N не превышает 2^16...
Как и что писать смогу придумать сам, подскажите принцип решения... Тупо гонять цикл для каждого числа не пройдёт - во временнЫе рамки не влезет.
Member
Статус: Не в сети Регистрация: 13.04.2004 Откуда: Томск
cj_remix запускаешь цикл в цикле- первый генерирует числа от 1 до N, второй проверяет остаток от деления. Затем условие- если отстаток равен 0 только в случае, если делимое само число, то вывод его на экран.
_________________ Аннигиляция уничтожит всех. За капитуляцией последует падение власти.
Member
Статус: Не в сети Регистрация: 21.10.2003 Откуда: Брест Фото: 47
cj_remix Во-первых, исходя из личного опыта хочу сказать, что без полного перебора не обойтись...
Хочу лишь откорректировать (!): ВСе ПРоСТые ЧиСЛа (!) за исключением "2" - НеЧёТНые! Учти это - ибо тут ты в два раза выигрываешь... Ведь смысла нет искать простые числа среди чётных Добавлено спустя 6 минут, 15 секунд А вообще-то !!! Ща налабаю тебе очень оптимальный алгоритм ...
Добавлено спустя 36 минут Вот (правда с одним "но" - циклы пляшут от "троек" - специфика, можешь доработать):
Код:
Uses Crt; Var i,j,n : word; b : boolean; Begin ClrScr; Write('Введите N : '); ReadLn(n); i:=3; While i<=n do Begin j:=3; b:=true; While ( j<=Trunc(Sqrt(i)) ) and b do Begin If i mod j = 0 then b:=false; inc(j,2); end; if b then Write(i,' '); inc(i,2); end; End.
Будут вопросы, пиши... Добавлено спустя 10 минут, 20 секунд Кто придумает оптимальнее пделитесь плз...
_________________ А ещё недавно ждали AMD Steamroller на AM3+
Member
Статус: Не в сети Регистрация: 01.06.2003 Откуда: Pskov
РТУТь писал(а):
Как бы перевести число с одной системы счисления в другую ? DEC>BIN
Если нужно отобразить число в какой-либо системе счисления, то могу предложить (года два назад накатал, до сих пор частенько пользуюсь):
Код:
============================================================================} Function Byte2Bin(Decim:byte):string; Var i:byte; s:string; Begin s:=''; for i:=0 to 7 do if ((($01 shl i) and decim) shr i)=1 then s:='1'+s else s:='0'+s; Byte2Bin:=s; End; {============================================================================} Function Byte2Hex(Decim:byte):string; Var t1,t2:byte; s1,s2:string; Begin t1:=Decim shr 4; t2:=Decim and $F; if t1<10 then str(t1,s1) else s1:=chr(65+t1-10); if t2<10 then str(t2,s2) else s2:=chr(65+t2-10); Byte2Hex:=s1+s2; End; {==========================================================================} Function Word2Hex(Decim:word):string; Var t1,t2:word; s1,s2:string; Begin t1:=Decim shr 8; t2:=Decim and $FF; Word2Hex:=Byte2Hex(t1)+Byte2Hex(t2); End; {==========================================================================} Function DWord2Hex(Decim:longint):string; Var t1,t2:longint; s1,s2:string; Begin t1:=Decim shr $10; t2:=Decim and $FFFF; DWord2Hex:=Word2Hex(t1)+''+Word2Hex(t2); End; {==========================================================================} Function Word2Bin(Decim:word):string; Var t1,t2:word; s1,s2:string; Begin t1:=Decim shr 8; t2:=Decim and $FF; Word2Bin:=Byte2Bin(t1)+Byte2Bin(t2); End; {==========================================================================} Function DWord2Bin(Decim:longint):string; Var t1,t2:longint; s1,s2:string; Begin t1:=Decim shr $10; t2:=Decim and $FFFF; DWord2Bin:=Word2Bin(t1)+' '+Word2Bin(t2); End; {==========================================================================}
Member
Статус: Не в сети Регистрация: 01.06.2003 Откуда: Pskov
AlexZerg
AlexZerg писал(а):
Только на простые?
Да, только на простые.
Пример:
Допустим, мы проверяем делимость некоторого числа на непростое число 15.
Число 15 представляет из себя произведение простых чисел 5 и 3.
А делимость на 5 и на 3 мы уже проверяли за несколько шагов до этого: раз уж мы дошли до 15, значит на все предыдущие числа (от 2 до 14, в том числе 3 и 5) рассматриваемое число без остатка не делилось.
Если число не делилось без остатка ни на 5, ни на 3, то и на 15 без остатка оно точно не поделится
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения