Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2013, 21:31   #1
Skipper Ok
Пользователь
 
Аватар для Skipper Ok
 
Регистрация: 08.11.2013
Сообщений: 23
По умолчанию Списки, файлы, Pascal, отредактировать код.

Само задание: Первая программа должна запросить у пользователя число n, а затем запросить n целых положительных чисел, записав эти числа в файл. Вторая программа должна вывести true, если сумма чисел в файле является простым числом, и false в противном случае.
Первая программа

Код:
var outputFile : file of integer;
 n, i, tmp : integer;

begin
assign(outputFile, 'input.bin');
rewrite(outputFile);

write('Enter the number of elements: ');
readln(n);
writeln('Enter the elements: ');
for i := 1 to n do begin
read(tmp);
if tmp<=0 then begin writeln('not pozitive'); halt; end;
write(outputFile, tmp);
end;

close(outputFile);
end.
Вторая программа

Код:
var inputFile : file of integer;
 n, i, tmp,sum : integer;

function prost(su:integer):boolean;
var h:integer; f:boolean;
begin
f:=false;
for h:=2 to round(sqrt(su)) do
 if su mod h = 0 then begin f:=true;
end;
if not f then prost:=true else prost:=false;
end;

begin
assign(inputFile, 'input.bin');
reset(inputFile);
while not eof(inputFile) do
begin
read(inputFile,tmp);    sum:=sum+tmp;
end;
close(inputFile);
 if prost(sum) then writeln('Yes') else writeln('No');

end.

В общем, во второй программе нужно как-то по другому описать функцию
строчка
Код:
f:=false;
и
Код:
if not f then prost:=true else prost:=false;
какие-то странные.

и что значит h в описании функции???
Skipper Ok вне форума Ответить с цитированием
Старый 06.12.2013, 21:42   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Переменная h - это перебирают все возможные делители от 2 до примерно корня из su
Записано на самом деле странно.
Описать то, что написано можно по другому.
Код:
function prost(su:integer):boolean;
var h,sq:integer; 
begin
 prost:=True;
 sq:=Round(Sqrt(su));  //  чтобы не считать эти корни каждый раз в цикле
 for h:=2 to sq do
   if (su mod h)=0 then 
    begin
     prost:=False;
     Break;  // или Exit ; 
    end;
end;

Последний раз редактировалось type_Oleg; 06.12.2013 в 21:45.
type_Oleg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки (отредактировать код) screammassacre Общие вопросы C/C++ 0 28.11.2013 23:24
Таймер обратного отсчёта (отредактировать код) Deis C++ Builder 1 05.03.2011 02:01
Отредактировать код (исходник). k1r1lka Помощь студентам 2 24.01.2011 18:36
Отредактировать код в Паскале Novenkaja Помощь студентам 4 16.01.2011 00:14
Списки(отредактировать немного код нужно) Lexeres Помощь студентам 4 25.03.2010 09:10