Страница 1 из 2
задачи на массивы
Добавлено: 24 дек 2009, 01:30
Uce1
Помогите решить пару задачек из этих
1 Задано 15 целых чисел. Напечатать сначала все отрицательные, затем все остальные.
2 Задано 10 целых чисел. Найти отклонение каждого из них от максимального.
3 Дано 10 вещественных чисел. Определить количество элементов, которые меньше последнего.
4 Задана последовательность из 10 целых чисел. Вывести на экран сначала четные, затем все остальные.
Re: задачи на массивы
Добавлено: 24 дек 2009, 16:31
Sheka
Обращайтесь! 255507394
Re: задачи на массивы
Добавлено: 30 дек 2009, 23:21
RUSt
если актуально, помогу
для связи пиши в личку или на
Nexx_MP@mail.ru
Re: задачи на массивы
Добавлено: 30 дек 2009, 23:52
Newbie
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.
Re: задачи на массивы
Добавлено: 31 дек 2009, 00:11
RUSt
насчет первого задания (остальные не стал смотреть) - ну никакой оптимизации кода. Всё можно выполнить в 2 цикла
Re: задачи на массивы
Добавлено: 31 дек 2009, 14:31
Newbie
lol
это вообще можно сделать все в 1 цикл, но зачем загромождать? Если человек не разбирается, то ему будет проще понять если все будет разбито и делаться в разных местах.
Re: задачи на массивы
Добавлено: 31 дек 2009, 15:48
RUSt
ну давай попробуй в 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);
Re: задачи на массивы
Добавлено: 31 дек 2009, 16:11
Newbie
пишешь с ошибками)
if massiv < 0 then begin
str := massiv + #32;
надо
str := massiv + #32;
Re: задачи на массивы
Добавлено: 31 дек 2009, 16:39
RUSt
в чём я себе противоречу? я говорю, что нельзя это сделать в 1 цикл без дополнит переменных!
насчёт ошибок: ты не в том месте их видишь,
пардон, но переменная типа string - НЕправильно здесь, str := massiv ОШИБКА!!!
str - только 1 символ! (че-т я ступил)
ВЫВОД: в 1 цикле это решить НЕЛЬЗЯ! (поправьте, если это не так)
Re: задачи на массивы
Добавлено: 31 дек 2009, 17:00
Newbie
Если объединять ввод и подсчет, то легко.
Даже если бы там был массив, то логически не правильно. (а в твой код я даже не вникал)
в итоге, где решение в 2 цикла без доп переменных?)