задачи на массивы

Uce1
Сообщения: 1
Зарегистрирован: 24 дек 2009, 01:26

Помогите решить пару задачек из этих :confused:

1 Задано 15 целых чисел. Напечатать сначала все отрицательные, затем все остальные.

2 Задано 10 целых чисел. Найти отклонение каждого из них от максимального.

3 Дано 10 вещественных чисел. Определить количество элементов, которые меньше последнего.

4 Задана последовательность из 10 целых чисел. Вывести на экран сначала четные, затем все остальные.
Аватара пользователя
Sheka
Сообщения: 246
Зарегистрирован: 17 май 2009, 15:48
Контактная информация:

Обращайтесь! 255507394
Мои мысли настолько гениальны, что санитары уже приехали!
Ася 255507394.
RUSt
Сообщения: 8
Зарегистрирован: 30 дек 2009, 23:15

если актуально, помогу
для связи пиши в личку или на Nexx_MP@mail.ru
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

RUSt писал(а):если актуально, помогу
для связи пиши в личку или на Nexx_MP@mail.ru

чо там делать-то) 10 мин
1

Код: Выделить всё

program p1;

uses
 crt;

const
 n = 15;

var
 a : array[1..n] of integer;
 i : integer;

begin
 clrscr;
 randomize;
 for i := 1 to n do
  begin
   a[i] := random(20) - 10;
   write(a[i], ' ');
  end;
  writeln;
 for i := 1 to n do
  begin
   if(a[i] < 0) then
    write(a[i], ' ');
  end;
  writeln;
 for i := 1 to n do
  begin
   if(a[i] >= 0) then
    write(a[i], ' ');
  end;
 readkey;
end.
2

Код: Выделить всё

program p2;

uses
 crt;

const
 n = 10;

var
 a : array[1..n] of integer;
 i,max : integer;

begin
 clrscr;
 randomize;
 for i := 1 to n do
  begin
   a[i] := random(20) - 10;
   write(a[i], ' ');
   if(i = 1)then max := a[1]
   else
    if(max < a[i]) then
     max := a[i];
  end;
 writeln;
 for i := 1 to n do
  begin
    write(max - a[i], ' ');
  end;
 readkey;
end.
3

Код: Выделить всё

program p3;

uses
 crt;

const
 n = 10;

var
 a : array[1..n] of integer;
 i, count : integer;

begin
 clrscr;
 randomize;
 for i := 1 to n do
  begin
   a[i] := random(20) - 10;
   write(a[i], ' ');
 end;
 writeln;
 count := 0;
 for i := 1 to n-1 do
  begin
    if(a[i] < a[n]) then
     inc(count);
  end;
  writeln('count = ' ,count);
 readkey;
end.
4

Код: Выделить всё

program p4;

uses
 crt;

const
 n = 10;

var
 a : array[1..n] of integer;
 i, count : integer;

begin
 clrscr;
 randomize;
 for i := 1 to n do
  begin
   a[i] := random(20) - 10;
   write(a[i], ' ');
 end;
 writeln;
 count := 0;
 for i := 1 to n do
  begin
    if((a[i] mod 2) = 0) then
    write(a[i],' ');
  end;
  writeln;
  for i := 1 to n do
  begin
    if(abs((a[i] mod 2)) = 1) then
     write(a[i], ' ');
  end;
  writeln;
 readkey;
end.
RUSt
Сообщения: 8
Зарегистрирован: 30 дек 2009, 23:15

насчет первого задания (остальные не стал смотреть) - ну никакой оптимизации кода. Всё можно выполнить в 2 цикла
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

lol
это вообще можно сделать все в 1 цикл, но зачем загромождать? Если человек не разбирается, то ему будет проще понять если все будет разбито и делаться в разных местах.
RUSt
Сообщения: 8
Зарегистрирован: 30 дек 2009, 23:15

ну давай попробуй в 1 цикл без дополнит переменных! здесь 1 проход только определяет и пишет в начало отрицательные числа, если попадётся неотриц, что делать в этом цикле? писать в др массив? А выводить его когда?

самое быстрое (поправьте, если не так):

str: string[n]; k: 0..n;

k := 0;
for i := 0 to n do begin
if massiv < 0 then begin
str := massiv + #32;
end
else begin
str[n - k] := massiv;
inc(k);
end;
end;
WriteLn(str);
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

пишешь с ошибками)
if massiv < 0 then begin
str := massiv + #32;


надо
str := massiv + #32;
RUSt
Сообщения: 8
Зарегистрирован: 30 дек 2009, 23:15

в чём я себе противоречу? я говорю, что нельзя это сделать в 1 цикл без дополнит переменных!
насчёт ошибок: ты не в том месте их видишь,
пардон, но переменная типа string - НЕправильно здесь, str := massiv ОШИБКА!!!
str - только 1 символ! (че-т я ступил)
ВЫВОД: в 1 цикле это решить НЕЛЬЗЯ! (поправьте, если это не так)
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

Если объединять ввод и подсчет, то легко.

Даже если бы там был массив, то логически не правильно. (а в твой код я даже не вникал)

в итоге, где решение в 2 цикла без доп переменных?)
Ответить