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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 11:54   #11
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Здесь мне уже обьясняли:
Код:
Составное число - число, которое не является простым.. т. е. которое делится не только на 1 и на себя самого, но и на какое-либо другое число... выше - правильный вариант программы.. ах, да.. натуральное число...
Кроме этого в теме "Помоготе сзадачей на функцию С++", (где мне обьясняли) есть на С++. На Паскале программы понимаю, но сама писать не могу, так что простите. Могу написать алгоритм, если хотите.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 24.05.2009, 12:14   #12
dorofei
Пользователь
 
Регистрация: 21.05.2009
Сообщений: 15
По умолчанию

Спасибо Sweta, но я всё таки хотел бы чтоб кто нибудь из гуру-паскаля подсказал бы, где я ошибся в программе!
dorofei вне форума Ответить с цитированием
Старый 24.05.2009, 12:43   #13
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
function Simple(n: integer):boolean
- эта функция возвращает ложь, если число составное.
Я бы в этой функции перебирала все значения до n-1, а не до n/2.
У Вас отладчик есть? Попробуйте пройти по шагам с просмотром переменной.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 24.05.2009 в 13:14.
Sweta вне форума Ответить с цитированием
Старый 24.05.2009, 13:21   #14
dorofei
Пользователь
 
Регистрация: 21.05.2009
Сообщений: 15
По умолчанию

вот эта программа определяет составное не составное число как видно условие здесь такое же!видимо у меня проблема возникает когда работа идёт с массивом!
Код:
program 444;
uses
 Crt;
var
 i, n: longint;
begin
 ClrScr;
 write('Vvedite chislo: ');
 readln(n);
 for i:= 2 to (n div 2) do
  if (n mod i) = 0 then
   begin
    writeln('Chislo ', n, ' sostavnoe');
    readln;
    exit;
   end;
 writeln('Chislo ', n, ' prostoe');
 readln;
end.
dorofei вне форума Ответить с цитированием
Старый 24.05.2009, 13:34   #15
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Я не знаю какое там было условие, но по логике необходимо проверить делиться ли заданное число на все числа, предшедствующие ему без остатка, а в данной функции получается, что проверяем до n/2, т. е половину?
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 24.05.2009 в 13:45.
Sweta вне форума Ответить с цитированием
Старый 24.05.2009, 13:45   #16
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Посмотрите еще здесь:

Код:
Код:
if not  (simple(a[i]) and not (a[i] <min)) then;
begin
min:=a[i];
 end;
может
Код:
Код:
if not  (simple(a[i]) and not (a[i] <min)) then;
else
begin
min:=a[i];
 end;
т.е если число не составное и больше минимального, тогда пусто, иначе ...
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 24.05.2009, 13:59   #17
dorofei
Пользователь
 
Регистрация: 21.05.2009
Сообщений: 15
По умолчанию

Всё равно выдаёт нули!
Блин где-то косяк не понимаааааааааааааааю!!=(
спасибо Sweta что стараешься помочь!
dorofei вне форума Ответить с цитированием
Старый 24.05.2009, 15:15   #18
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
program dorofei;
function Simple(n: integer):boolean;
var i: integer;
    begin
    for i:= 2 to (n div 2) do
     begin
     if n mod i = 0 then Simple:= true
     else Simple:=false;
     end;
     end;
const n=10;
var a:array [1..n] of integer;
 min,i: integer;
begin
min:=1;
for i:= 1 to n do
 begin
 a[i]:= random(n);
 WriteLn(a[i],'__');
 if (Simple(a[i]) and (a[i] <min)) then
min:=a[i];
 end;
 WriteLn(min);
ReadLn;
end;
end.
Давайте еще попробуем так.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 24.05.2009, 15:24   #19
dorofei
Пользователь
 
Регистрация: 21.05.2009
Сообщений: 15
По умолчанию

Не а всё равно выдаёт значение 0 0,
но истина где то рядом)))
dorofei вне форума Ответить с цитированием
Старый 24.05.2009, 15:43   #20
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
Если еще не надоела еще одна идея
function Simple(n: integer):boolean;
var i: integer;
    begin
    for i:= 2 to (n div 2) do
     begin
     if n mod i = 0 then Simple:= true
 {здесь выйти из подпрограммы, иначе в следующем цикле false}
    else Simple:=false;
     end;
     end;
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из чисел 1, 1+ 1/2, 1+1/2+1/3 , … вывести на экран те, которые меньше а. umiko Microsoft Office Excel 1 16.05.2009 08:29
Delphi:Определить имеется ли среди чисел a,b,c хотя бы одна пара взаимно противоположных чисел. Skvot Помощь студентам 6 27.04.2009 11:47
Сформировать и вывести на экран массив вещественных чисел K={ki}, i=1..b NitriNKa Помощь студентам 3 18.04.2009 15:38
Три квадратных уравнения. Найти минимальное значение среди действительных корней этих уравнений. Паскаль. GE076 Помощь студентам 2 17.12.2007 20:41