Turbo Pascal

Vladimir B.

милый добрый кот
Модератор
Ответ: Turbo Pascal

масив містить в собі 40 елементів , визначте кількість елементів які належать 1,9 і 15,28 відрізкам
var
c,i: byte;
a: array[1..40]of real;
begin
c=0;
for i:=1 to 40 do if ((a<=9) and (a>=1)or((a<=28) and (a>=15))) then inc(c);
writeln(c);
end.

P.S. Собственно, в чем изюминка задачи? Или я не до конца понял условие? Или вы просто не можете самостоятельно решить столь простую задачу?
 
Ответ: Turbo Pascal

P.S. Собственно, в чем изюминка задачи? Или я не до конца понял условие? Или вы просто не можете самостоятельно решить столь простую задачу?
изюменки нет решение у меня было похожее шо он матюкался (паскаль) о несоответствии типов я не знал что тип нужен байт
 

WerSus64

New Member
Ответ: Turbo Pascal

Тарас точнее говоря тип должен быть целочисленным, а не вещественным.
 

quant

yeah
Відповідь: Turbo Pascal

есть черепушки с номерами 1 и 2 с разных сторон
и эти черепушки выложены в случайном порядке в линию
черепушки можно переворачивать, тоесть менять 1 на 2 или 2 на 1
нужно перевернуть черепушки так, чтобы номера на них не спадали слева на право (a <= a[i + 1])
тоесть допустимые ряды { 1, 2 ,2 }, { 1, 1, 1, 2, 2, 2 }, { 1, 1, 1 }, { 2, 2, 2 }, { 1, 1, 1, 1, 1, 2, 2 }
а не допустимые { 2, 1, 2 }, { 1, 1, 1, 2, 1, 1, 1 }, { 2, 2, 2, 1, 1, 1 }
ВВОД: задаётся количество черепушек и номера на их верхних сторонах, например
Код:
7 2 1 1 1 2 2 1
количество черепушек в пределах [1..30'000]
ВЫВОД: наименьшее количество черепушек, которые следует перевернуть, чтобы условие было удовлетворено (какие именно выводить не нужно, только количество)
п.с. интересно посмотреть решения
 

dreamer

Member
Ответ: Відповідь: Turbo Pascal

есть черепушки с номерами 1 и 2 с разных сторон
и эти черепушки выложены в случайном порядке в линию
черепушки можно переворачивать, тоесть менять 1 на 2 или 2 на 1
нужно перевернуть черепушки так, чтобы номера на них не спадали слева на право (a <= a[i + 1])


Ну навскидку нечто следующее в голову приходит:
для всех точек, делящих последовательность на две части (между каждыми двумя элементами а так же перед и после ряда) считаем количество двоек ДО точки и единиц ПОСЛЕ суммарно. Выбираем точку с наименьшей суммой - переворачиваем все двойки ДО и единицы ПОСЛЕ точки.

Код:
before = 0;
after = count_of_1(line);
for point in 0..line.length:
    changes[point] = before + after;
    before++ if line[point] == 2;
    after-- if line[point] == 1;
point = argument{ min(changes) };
line[0..point].replace(2 => 1);
line[point+1..line.length].replace(1 => 2);
Надеюсь разберетесь с псевдокодом
Скорость О(n)
 
Останнє редагування:

Русечкин

♥♠♣•♀?♪ §╘
Ответ: Turbo Pascal

Помогите решить задачу по масивам
Условие
Дано двовимірний масив Р (4х2) Використовуючи данний масив виконати наступні дії

1) Визначити кількість елементів масиву, які не дорівнюють числам 3 та -3
2 Замінити елементи данного масиву Р на число 5

Вот что я натворил! Но нечиго не выходит

program IDZ4;
uses CRT;
var P: array [1..4,1..2] of integer;
m,i,j,k:integer;
begin
clrscr;
randomize;
for i:=1 to 4 do
for j:=1 to 2 do
P [i,j]:=random (35)-20;
for i:=1 to 4 do
begin
for j:=1 to 2 do
write ( P [i,j]:4);
writeln;
end;
begin
m:=0;
for i:=1 to 4 do;
for j:=1 to 2 do;
if P[i,j] < 3 then m:=m+1;
if P[i,j] >-3 then m:=m+1;
end;
begin
k:=0;
for i:=1 to 4 do;
for j:=1 to 2 do;
if P [i,j] < 0 then K:=5;
if P [i,j] > 0 then K:=5;
write (P[i,j]:5);
writeln;
end;
writeln ('k=',k);
writeln ('m=',m);
readkey;
end.
 
Ответ: Turbo Pascal

Помогите решить задачу по масивам
Условие
Дано двовимірний масив Р (4х2) Використовуючи данний масив виконати наступні дії

1) Визначити кількість елементів масиву, які не дорівнюють числам 3 та -3
2 Замінити елементи данного масиву Р на число 5

Вот что я натворил! Но нечиго не выходит

program IDZ4;
uses CRT;
var P: array [1..4,1..2] of integer;
m,i,j,k:integer;
begin
clrscr;
randomize;
for i:=1 to 4 do
for j:=1 to 2 do
P [i,j]:=random (35)-20;
for i:=1 to 4 do
begin
for j:=1 to 2 do
write ( P [i,j]:4);
writeln;
end;
begin
m:=0;
for i:=1 to 4 do;
for j:=1 to 2 do;
if P[i,j] < 3 then m:=m+1;
if P[i,j] >-3 then m:=m+1;
end;
begin
k:=0;
for i:=1 to 4 do;
for j:=1 to 2 do;
if P [i,j] < 0 then K:=5;
if P [i,j] > 0 then K:=5;
write (P[i,j]:5);
writeln;
end;
writeln ('k=',k);
writeln ('m=',m);
readkey;
end.
program IDZ4;
uses CRT;
var P: array [1..4,1..2] of integer;
m,i,j,k:integer;
begin
clrscr;
randomize;
for i:=1 to 4 do
for j:=1 to 2 do
P [i,j]:=random (35)-20;
for i:=1 to 4 do
begin
for j:=1 to 2 do
write ( P [i,j]:4);
writeln;
end;
begin
m:=0;
for i:=1 to 4 do;
for j:=1 to 2 do;
if P[i,j] < 3 then m:=m+1;
if P[i,j] >-3 then m:=m+1;
writeln ('m=',m);
end;
begin
for i:=1 to 4 do
for j:=1 to 2 do begin
if p[i,j]<>0 then p[i,j]:=5;
writeln(p[i,j]:5);
writeln;
end;
end;
readkey;
end.
 

Русечкин

♥♠♣•♀?♪ §╘
Ответ: Turbo Pascal

Тарас. Спасибо за помощь во втором условии


Помогите пожалуйста, как записать вот это задание?
1) Визначити кількість елементів масиву, які не дорівнюють числам 3 та -3
 

Пух

كنت بلهاء
Модератор
Ответ: Turbo Pascal

Тарас. Спасибо за помощь во втором условии


Помогите пожалуйста, как записать вот это задание?
1) Визначити кількість елементів масиву, які не дорівнюють числам 3 та -3
пройти массив сравнивая каждый с элемент с 3 и -3. Если элемент не равен 3 и -3, значит счетчик увеличить на 1 (inc(m)). И число z вывести на экран.
ну вот что-то такое. +-1
for i:=1 to 4 do;
begin
for j:=1 to 2 do;
begin
if P[i,j] <> 3 and P[i,j] <>-3
then inc(m)
end;
end;
2 Тарас:
а если элемент равен 0?
 
Останнє редагування:

[Spider]

New Member
Ответ: Turbo Pascal

for i:=1 to 4 do;
for j:=1 to 2 do;
if P[i,j] <> 3 and P[i,j] <>-3
then inc(m)
end;
Во-первых, после do не нужны точка с запятой, то есть:
Код:
[B]for[/B] i:=1 [B]to[/B] 4 [B]do[/B]
 [B]for[/B] j:=1 [B]to[/B] 2 [B]do[/B]
  ... ;
Во-вторых, приоритет операции and выше чем операции сравнения <>, поэтому записанное тобой выражение условия эквивалентно такому,
Код:
(P[i,j]<>(3 [B]and[/B] P[i,j]))<>-3
которое мало того что неверно с точки зрения алгоритма задачи, так ещё и неверное с точки зрения синтаксиса Pascal (результат слева от второго <> имеет логический тип, справа --- целочисленный).
Правильное условие должно быть таким:
Код:
(P[i,j]<>3) [B]and[/B] (P[i,j]<>-3)
или таким
Код:
[B]not[/B] (P[i,j] [B]in[/B] [3, -3])
В-третьих, end в конце не нужен.
То есть, приведенный тобой участок кода должен выглядеть так:
Код:
[B]for[/B] i:=1 [B]to[/B] 4 [B]do[/B]
  [B]for[/B] j:=1 [B]to[/B] 2 [B]do[/B]
    [B]if[/B] [B]not[/B] (P[i,j] [B]in[/B] [3, -3])
      [B]then[/B] Ink(z);
 
Останнє редагування:
Зверху