Pascal Решить Задачку

  • Автор темы antosha
  • Дата начала
A

antosha

#1
Задача№1"Написать программу, которая выводит на экран не бракованные детали из поступившей партии, содержащей N деталей. Не бракованной считается деталь, размер которой отличается от эталонного не более чем k мм.
Задача№2"Написать программу, которая формирует новый массив,элементами которого являются все четные элементы, расположенные в нечетных ячейках заданного массива.
Заранее благодарен!!!!
 

sinkopa

Well-known member
17.06.2009
344
4
#2
Хм... Вы не уточнили: какой у Вас Паскаль и как входные данные (массивы) должны заполняться...
Поэтому всё "по минимуму", на статических массивах и заполняется рандомом.
Задача№1"Написать программу, которая выводит на экран не бракованные детали из поступившей партии, содержащей N деталей. Не бракованной считается деталь, размер которой отличается от эталонного не более чем k мм.
Код:
program detales;

const
N = 20; // размер партии
var
batch: array[1..N] of Real;
model: Integer;
deviation: Integer;
i,j,dev: Integer;
begin
Writeln;
Writeln('Obshee kolichestvo detaley v partii "N" (sht): ',N);
Writeln;
Write('Vvedite etalonniy razmer detali [1 - 100](cm) : ');
Readln(model);
Write('Vvedite dopustimoe otklonenie "K" [1 - 9](mm) : ');
Readln(deviation);
Writeln;

Randomize;
dev := (deviation+5)*2; // отклонение в обе стороны + 10 мм на брак :-)

Writeln('============ Partiya postupivshih tovarov =================');
for i := 1 to N do
begin
batch[i] := model + (Random(dev) - deviation) /10;

if (i mod 5 = 0) then  // Выводим (по 5 элементов в строку, через знак табуляции #9)
Writeln('T[',i,'] = ',batch[i]:6:1,';')
else
Write('T[',i,'] = ',batch[i]:6:1,';',#9);
end;
Writeln;
Writeln('============ Kachestvennie tovary =================');

j := 1;
for i := 1 to N do
begin
if (abs(model - batch[i]) <= deviation/10) then
begin
if (j mod 5 = 0) then
Writeln('T[',i,'] = ',batch[i]:6:1,';')
else
Write('T[',i,'] = ',batch[i]:6:1,';',#9);
Inc(j);
end;
end;
Writeln;
Writeln('============  Brakovannie tovary =================');

j := 1;
for i := 1 to N do
begin
if (abs(model - batch[i]) > deviation/10) then
begin
if (j mod 5 = 0) then  // Выводим (по 5 элементов в строку, через знак табуляции #9)
Writeln('T[',i,'] = ',batch[i]:6:1,';')
else
Write('T[',i,'] = ',batch[i]:6:1,';',#9);
Inc(j);
end;
end;
Writeln;
Writeln('Zakonchili. Nazmite <ENTER> dlya vihoda');
Writeln;
Readln;
end.
Задача№2"Написать программу, которая формирует новый массив,элементами которого являются все четные элементы, расположенные в нечетных ячейках заданного массива.
Заранее благодарен!!!!
Код:
program arrays;

const
N = 25; // размер заданного массива
var
K: Integer; // типа размер нового массива
A: array[1..N] of Integer; // заданный массив
B: array[1..N] of Integer; // новый массив
C: array[1..N] of Integer; // индесы из заданного массива
i: Integer;
begin
Writeln;

Randomize;

Writeln('============ Zadan massiv "A" iz ',N,' elementov =================');
for i := 1 to N do
begin
A[i] := Random(100);

if (i mod 5 = 0) then  // Выводим (по 5 элементов в строку, через знак табуляции #9)
Writeln('A[',i,'] = ',A[i],';')
else
Write('A[',i,'] = ',A[i],';',#9);
end;
Writeln;

K := 0;
for i := 1 to N do // формируем новый массив
begin
if (i mod 2 <> 0) then // нечетная ячейка
begin
if (A[i] mod 2 = 0) then // четное значение элемента
begin
Inc(K);	  // увеличиваем размер нового массива
B[K] := A[i]; // записываем значение
C[K] := i;	// запоминаем индекс (будем потом показывать откуда взяли)
end;
end;
end;
Writeln;

Writeln('============ Noviy massiv "B" iz ',K,' elementov =================');

for i := 1 to K do
begin
if (i mod 3 = 0) then  // Выводим (по 3 элемента в строку, через знак табуляции #9)
Writeln('B[',i,'] = ',B[i],' (A[',C[i],'])')
else
Write('B[',i,'] = ',B[i],' (A[',C[i],'])',#9);
end;
Writeln;
Writeln;
Writeln('Zakonchili. Nazmite <ENTER> dlya vihoda');
Writeln;
Readln;
end.