давно
Старший Модератор
31795
6196
14.07.2008, 16:04
общий
это ответ
Здравствуйте, Хощенко Артём Владимирович!
Первая и четвертая задачи в приложении.
Первую задачу переписал полностью, т.к. использование дополнительных массивов оправданно для маленьких значений количества элементов. Если количество элементов массива, к примеру больше 100 - уже запутывает весь алгоритм программы.
Такие программы можно решать двумя способами:
- отсортировать весь массив по возрастанию или убыванию, после этого медиана будет расположена по адресу <b>med:=n div2 + 1;</b> - для нечетного количества элементов;
- ищется минимальное и маскимальное значение элементов массива и после этого они меняются местами с последним и предпоследним элементами, а также уменьшаемся счетчик количества элементов массива(как бы вырезаются), так продолжается до тех пор пока текущее количество элементов массива больше двух. В приложении второй способ. Выводится весь массив(для наглядности), но медиана будет находится в в первом элементе массива.
Четвертая задача проходит указаный диапазон простых чисел дважды:
первый раз когда ищет минимальную и максимальную сумму цифр простых чисел;
второй раз когда выводить простые числа в порядке ворзастания сумм цифр.
Удачи!
Приложение:
{1}const n=5;var x:array[1..n]of integer; i,im,imax,imin,tm:integer;begin {генерируем массив чисел случайно и выводим} randomize; for i:=1 to n do begin x[i]:=random(2*n); write(x[i]:n); end; writeln; {начинаем цикл поиска медианы im- максимальное значение элементов массива} im:=n; while im>2 do begin imin:=1;{индекс минимального значения} imax:=1;{индекс максимального значения} for i:=1 to im do if x[i]>x[imax] then imax:=i{если нашли максимальное значение-запоминаем его индекс} else if x[i]<x[imin] then imin:=i;{если нашли минимальное значение-запоминаем его индекс} {меняем максимальное значение со значением на которое указавает im} tm:=x[imax]; x[imax]:=x[im]; x[im]:=tm; {меняем минимальное значение со значением на которое указавает im-1} tm:=x[imin]; x[imin]:=x[im-1]; x[im-1]:=tm; {уменьшаем количество элементов} dec(im,2); end; {выводим новое расположение всех элементов массива} for i:=1 to n do write(x[i]:n);end.{4}var a,b,c,d,e,minSumma,maxSumma:integer; {функция возвращает значение истина если число простое}function PrimeNumber(n:integer):boolean; var tmp:integer; begin tmp:=n-1; {цикл проерки простого числа} while ((n mod tmp)>0)and (tmp>1)do dec(tmp); {присваиваем результат} PrimeNumber:=tmp=1; end; {функция возвращает сумму всех цифр числа}function CheckSumm(n:integer):integer; var tmp:integer; begin tmp:=0; {в цикле суммируем все цифры числа} while n>0 do begin inc(tmp,n mod 10); n:=n div 10; end; {присваиваем результат работы функции} CheckSumm:=tmp; end;begin {вводим натуральное число А} repeat write(‘Enter A:‘); readln(a); until a>0; {вводим натуральное число В, большее чем А} repeat write(‘Enter B:‘); readln(b); until b>a; {начальные значения минимальной и максимальной суммы цифр числа} minSumma:=maxInt; maxSumma:=0; {в цикле проверяем весь диапазон натуральных чисел} for c:=a to b do if PrimeNumber(c) then begin if CheckSumm(c) > maxSumma then maxSumma:=CheckSumm(c); if CheckSumm(c) < minSumma then minSumma:=CheckSumm(c); end; {проверяем весь диапазон от минимальной суммы до максимальной} while minSumma<=maxSumma do begin {в цикле перебираем все простые числа} for c:=a to b do {если совпадают оба значения, то выводим число} if PrimeNumber(c) and (CheckSumm(c)=minSumma) then write(c:5); {увеличиваем возможную сумму цифр} inc(minSumma); end; writeln;end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.