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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2011, 18:52   #1
cjcezar
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 19
По умолчанию Дан одномерный целочисленный массив А(N)

Снова нужна Ваша помощь, уважаемые мною люди. Будте любезны и добры помочь мне - студенту-медику, решив пару задачек и позволить выделить больше времени на изучение латинского языка и анатомии

1. Дан одномерный целочисленный массив А(N) . Составить одномерный массив В из элементов массива А, меньших их среднего арифметического значения. Полученный массив В отсортировать по неубыванию значений его элементов.

2. Дан одномерный целочисленный массив А(N) . Определить сумму элементов этого массива, являющихся простыми числами.

3. Дан одномерный целочисленный массив А(N) . Составить одномерный массив В из номеров элементов массива А, являющихся простыми числами.
cjcezar вне форума Ответить с цитированием
Старый 12.11.2011, 19:47   #2
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

1)
Код:
const maxN = 100;
var
  a:array[1..maxN] of integer;
  b:array[1..maxN] of integer;
  na:integer;
  nb:integer;
  i:integer;
  s:real;
  flag:boolean;
  t:integer;

Begin
  write ('n=');
  read (na);
  if ((na>maxN)or(na<=0)) then Begin
    writeln('неправильное n');
    exit;
  end;

  For i:=1 to na do Begin
    write('A[',i,']=');
    readln(A[i]);
  end;


  writeln;
  writeln('Исходный массив:');
  for i := 1 to na do Begin
    write(a[i]:5,' ');
  end;
  writeln;
  
  s := 0; { Находим среднеарефметическое }
  for i := 1 to na do
    s := s + a[i];
  s := s / na;

  writeln('Среднее арифметическое s=',s:5:3);

  nb := 0; { Формируем массив B }
  for i := 1 to na do
    if (a[i]<s) then begin
      nb := nb + 1;
      b[nb] := a[i];
    end;

  flag := true; { Сортируем массив простыми обменами }
  while (flag) do Begin
    flag := false;
    for i := 1 to nb-1 do
      if (B[i]>B[i+1]) then Begin
        t := B[i];
        B[i] := B[i+1];
        B[i+1] := t;
        flag := true;
      end;
  end;

  writeln;
  writeln('Результат:');
  for i := 1 to nb do Begin
    write(b[i]:5,' ');
  end;
End.
2)
Код:
const maxN = 100;

function isPrime(X: integer): boolean;
var i: integer;
    maxI:integer;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if (not odd(x)) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     maxI := Trunc(sqrt(x));
     while i <= maxI do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;


var
  a:array[1..maxN] of integer;
  na:integer;
  i:integer;
  s:longint;

Begin
  write ('n=');
  read (na);
  if ((na>maxN)or(na<=0)) then Begin
    writeln('неправильное n');
    exit;
  end;

  For i:=1 to na do Begin
    write('A[',i,']=');
    readln(A[i]);
  end;


  writeln;
  writeln('Исходный массив:');
  for i := 1 to na do Begin
    write(a[i]:5,' ');
  end;
  writeln;
  
  s := 0; { Находим сумму элементов этого массива, являющихся простыми числами. }
  for i := 1 to na do
    if (isPrime(A[i])) then
      s := s + a[i];

  writeln('Сумма элементов этого массива, являющихся простыми числами. s=',s);
End.
3)
Код:
const maxN = 100;
function isPrime(X: integer): boolean;
var i: integer;
    maxI:integer;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if (not odd(x)) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     maxI := Trunc(sqrt(x));
     while i <= maxI do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;


var
  a:array[1..maxN] of integer;
  b:array[1..maxN] of integer;
  na:integer;
  nb:integer;
  i:integer;

Begin
  write ('n=');
  read (na);
  if ((na>maxN)or(na<=0)) then Begin
    writeln('неправильное n');
    exit;
  end;

  For i:=1 to na do Begin
    write('A[',i,']=');
    readln(A[i]);
  end;

  writeln;
  writeln('Исходный массив:');
  for i := 1 to na do Begin
    write(a[i]:5,' ');
  end;
  writeln;

  nb := 0; { Формируем массив B }
  for i := 1 to na do
    if (isPrime(A[i])) then Begin
      nb := nb + 1;
      b[nb] := i;
    end;

  writeln;
  writeln('Результат:');
  for i := 1 to nb do Begin
    write(b[i]:5,' ');
  end;
End.
Функция проверки простоты числа взята из поста уважаемого Serge_Bliznykov (http://www.programmersforum.ru/showthread.php?t=173065) за что ему спасибо.
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."

Последний раз редактировалось val_nnm; 12.11.2011 в 20:13.
val_nnm вне форума Ответить с цитированием
Старый 12.11.2011, 21:11   #3
cjcezar
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от val_nnm Посмотреть сообщение
Функция проверки простоты числа взята из поста уважаемого Serge_Bliznykov (http://www.programmersforum.ru/showthread.php?t=173065) за что ему спасибо.

И тебе и ему спасибо ОГРОМНОЕ!
cjcezar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задан целочисленный одномерный массив A из N элементов. Найти номер последне Vladimir Ryabov Фриланс 5 01.11.2011 13:21
дан целочисленный массив N. Удалить из массива все элементы,встречающиеся [менее двух раз]1 Zevsnet Паскаль, Turbo Pascal, PascalABC.NET 6 16.01.2011 18:01
Дан одномерный массив Mixail876 Паскаль, Turbo Pascal, PascalABC.NET 0 07.06.2010 23:41
Заполнить одномерный целочисленный массив размерности n числами, введёнными с клавиатуры AHTOXA Помощь студентам 4 06.06.2007 19:24