Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 20.09.2014, 16:57   #1 (permalink)
Эффект массы
Member
 
Регистрация: 31.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помощь в написании программы

Составить программу для проверки, можно ли заданное натуральное число N представить в виде произведения двух простых чисел. Паскаль. Дальше нахождения простых чисел дело не пошло, не могу сообразить как ее писать. Паскаль авс. (Досрочный выход из цикла запрещают)
Код:
uses Crt;
var
i,k,n,s:integer;
begin
ClrScr;
Write('Введите число:');
Readln(n);
for i:=2 to n do begin
s:=0;
for k:=1 to i div 2 do begin
if i mod j=0 then inc(s);
end;
if s=1 then Writeln(i);
end;
begin
\\\\ then writeln('Можно')
else writeln('Нельзя');
end;
ReadKey;
end
Эффект массы вне форума   Ответить с цитированием

Старый 20.09.2014, 16:57
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Проблема должна решиться быстрее, если ознакомиться с подобными темами

Нужна помощь в написании программы
Помощь в написании программы под Java.
Помощь в написании программы на Паскале
Необходима помощь в написании программы
Нужна помощь в написании программы
Нужна помощь в написании программы C++

Старый 20.09.2014, 17:31   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ладно, посмотрю. Но попозже. Может быть, завтра, если сегодня не получится.
К тому же это у Вас не программа, а чушь какая-то. Ну вот что за переменная j? Откуда взялась? Даже не описана...
Vladimir_S вне форума   Ответить с цитированием
Старый 20.09.2014, 17:36   #3 (permalink)
Эффект массы
Member
 
Регистрация: 31.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Немного изменил.
Код:
function prost(s: integer):integer;
var
   i,k,n:integer;
begin
     for i:=2 to n do begin
                      s:=0;
                      for k:=1 to i div 2 do begin
                                             if i mod s=0 then inc(s);
                                             end;
                      if s=1 then Writeln(i);
                      end;
end;

procedure poisk(n:integer);
var
   i: integer;

begin
     Writeln('Введите число:');
     Readln(n);
     i := 2; 
     While N mod i > 0 do 
                       if i = 2 then inc(i)
                                else inc(i, 2);
                                if prost(i) = prost(n div i)then writeln('можно')
                                                            else writeln('нельзя');
end;
end.
Эффект массы вне форума   Ответить с цитированием
Старый 20.09.2014, 19:22   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да... совсем Вы, сударь, не разобрались с написанием подпрограмм... Понимаете, в функции Prost s - это входной параметр, который Вы должны передать из внешнего тела программы. Заканчиваться же функция должна строкой типа
Prost:=...
А у Вас? В общем, мой Вам совет: не откладывая до конца семестра, прямо сейчас беритесь за книжки и разбирайтесь с азами программирования.

P.S. Да, а программу я, как и обещал, сделаю.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.09.2014, 19:45   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот, пожалуйста:
Код:
Var
 N,i,j:Integer;
 D:Boolean;

Function Test_Prime(Q:Integer):Boolean;
var
 m:Integer;
 p:Boolean;
begin
 p:=true;
 m:=1;
 Repeat
  Inc(m);
  if (Q mod m)=0 then p:=false;
 Until not p or (m=(Q div 2));
 Test_Prime:=p;
end;

Begin
 Write('N = ');
 Readln(N);
 D:=false;
 i:=1;
 Repeat
  Inc(i);
  if (N mod i)=0 then
   begin
    j:=(N div i);
    if Test_Prime(i) and Test_Prime(j) then
     begin
      D:=true;
      Writeln('Yes: ',N,' = ',i,'*',j);
     end;
   end;
 Until D or (i=(N div 2));
 if not D then Writeln('No');
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 21.09.2014, 08:52   #6 (permalink)
Эффект массы
Member
 
Регистрация: 31.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое, единственное, что программа на все цифры отвечает "нет"
Эффект массы вне форума   Ответить с цитированием
Старый 21.09.2014, 09:28   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Эффект массы Посмотреть сообщение
Спасибо большое, единственное, что программа на все цифры отвечает "нет"
Так.
Ну, прежде всего, еще и еще раз повторю: до тех пор, пока программа не будет мною тщательно оттестирована, я ее не выложу. Пожалуйста:
aa01.jpg
Почему не работает у Вас? Подозреваю, что дело в этом глючном богомерзком поделии по имени АВС, каковым не пользуюсь и не собираюсь.
Возможно, затык на логическом отрицании. Попробуйте заменить условия
not p
и
not D
на
not(p)
и
not(D)
или на
p=false
и
D=false.
Авось так сожрёт. Мой FreePascal кушает все варианты и не давится. Потому как нормальный транслятор.
Vladimir_S вне форума   Ответить с цитированием
Старый 21.09.2014, 18:38   #8 (permalink)
Эффект массы
Member
 
Регистрация: 31.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Все, спасибо)
Эффект массы вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 21:52.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.