PascalABCNETУказание: для каждой задачи создайте алгоритм и программу. Заполните одномерный числовой массив D(15) случайными цел
PascalABCNET
Указание: для каждой задачи создайте алгоритм и программу. Заполните одномерный числовой массив D(15) случайными целыми числами в интервале [-20; 18]. Выведите значения элементов массива сначала в столбик, а затем в строку, причем на каждый элемент отведите 4 позиции. Ответ каждой задачи следует выводить с новой строки и с пояснительным текстом. Кроме того, следует каждый раз производить пвывод массива на экран, если в нем произошли изменения: перестановка, замена, изменение значения элементов и т.д.
Задание 1. Найдите отдельное количество отрицательных и положительных элементов массива. Задание 2. Найдите произведение элементов, имеющих значение меньше -2 (минус два). Задание 3. Найдите максимальный элемент массива из элементов, стоящих на местах, номера которых кратны пяти. Задание 4. Замените отрицательные элементы, стоящие на нечётных местах на последний элемент массива. Задание 5. Если в массиве имеются нулевые элементы, то найдите сумму элементов массива, имеющих значение, кратное трем, иначе выведите на экран положительные элементы массива. Задание 6*. Найдите в массиве элементы, кратные 12, и вывести на экран их номера. Если таких элементов нет, то выведите сообщение об этом на экран. Задание 7*. Выведите на экран одномерный массив, раскрасив в нем красным цветом кратные 12 элементы.
Const n=15; var d:array[1..n] of integer; i:integer; begin //Инициализация и вывод Randomize; Writeln('Исходный массив в столбик:'); for i:=1 to n do begin d[i]:=Random(-20,18); Writeln(d[i]:4) end; Writeln('Исходный массив в строку:'); for i:=1 to n do Write(d[i]:4); Writeln; { Задание 1. Найдите отдельное количество отрицательных и положительных элементов массива. } begin var ineg,ipos:integer; ineg:=0; ipos:=0; for i:=1 to n do if d[i]>0 then Inc(ipos) else if d[i]<0 then Inc(ineg); Writeln('Задание 1'); Writeln('Количество отрицательных элементов ',ineg, ', положительных- ',ipos) end; { Задание 2. Найдите произведение элементов, имеющих значение меньше -2 } begin var p:integer:=1; for i:=1 to n do if d[i]<-2 then p*=d[i]; Writeln('Задание 2'); Writeln('Произведение элементов, меньших -2: ',p) end; { Задание 3. Найдите максимальный элемент массива из элементов, стоящих на местах, номера которых кратны пяти. } begin var dmax:integer; i:=10; dmax:=d[5]; while i<=n do begin if dmax<d[i] then dmax:=d[i]; i+=5 end; Writeln('Задание 3'); Writeln('Максимальный элемент массива из элементов,'); Writeln('стоящих на местах с номером, кратным 5: ',dmax) end; { Задание 4. Замените отрицательные элементы, стоящие на нечётных местах на последний элемент массива } i:=1; while i<=n do begin if d[i]<0 then d[i]:=d[n]; i+=2 end; Writeln('Задание 4'); Writeln('Отрицательные элементы, стоящие на нечётных местах,'); Writeln('заменены последним элементом массива:'); for i:=1 to n do Write(d[i]:4); Writeln; { Задание 5. Если в массиве имеются нулевые элементы, то найдите сумму элементов массива, имеющих значение, кратное трем, иначе выведите на экран положительные элементы массива } begin var sum:integer:=0; var FlagSum:boolean:=False; for i:=1 to n do begin Flagsum:=(d[i]=0); if FlagSum then break end; Writeln('Задание 5'); if FlagSum then begin for i:=1 to n do if (d[i] mod 3)=0 then sum+=d[i]; Writeln('Сумма элементов, имеющих значение, кратное трем: ',sum) end else begin Writeln('Положительные элементы массива:'); for i:=1 to n do if d[i]>0 then Write(d[i]:4); Writeln end end; { Задание 6*. Найти в массиве элементы, кратные 12, и вывести на экран их номера. Если таких элементов нет, то вывести сообщение об этом на экран. } Writeln('Задание 6*'); begin var k:integer:=0; var p:array[1..n] of integer; for i:=1 to n do if (d[i] mod 12)=0 then begin Inc(k); p[k]:=i end; if k>0 then begin Writeln('Номера элементов массива, кратных 12:'); for i:=1 to k do Write(p[i]:3); Writeln end else Writeln('В массиве нет элементов, кратных 12') end end.
<em><u>Тестовое решение:</u></em> Исходный массив в столбик: -12 -5 -2 15 -20 13 -4 -2 12 17 12 14 2 3 -20 Исходный массив в строку: -12 -5 -2 15 -20 13 -4 -2 12 17 12 14 2 3 -20 Задание 1 Количество отрицательных элементов 7, положительных- 8 Задание 2 Произведение элементов, меньших -2: -96000 Задание 3 Максимальный элемент массива из элементов, стоящих на местах с номером, кратным 5: 17 Задание 4 Отрицательные элементы, стоящие на нечётных местах, заменены последним элементом массива: -20 -5 -20 15 -20 13 -20 -2 12 17 12 14 2 3 -20 Задание 5 Положительные элементы массива: 15 13 12 17 12 14 2 3 Задание 6* Номера элементов массива, кратных 12: 9 11
<em><u>Задание 7*. Выведите на экран одномерный массив,</u></em> <em><u>раскрасив в нем красным цветом кратные 12 элементы.</u></em>
uses GraphABC; const n=15; var d:array[1..n] of integer; i:integer; begin SetWindowSize(800,600); Randomize; for i:=1 to n do begin d[i]:=Random(-20,18); if (d[i] mod 12)=0 then begin SetFontColor(clRed); Write(d[i]:4); SetFontColor(clBlack) end else Write(d[i]:4) end; Writeln end.
А вот и нет. Монитор позволяет, а видеокарта может быть в режиме RGBA - Тогда 4 байта. А может быть в режиме 16 цветов, и т.д. ответ того челика не верный. Так что зависит не от монитора, а от видео режима, установленного ОС.
Нужно что-то присвоить функции для случая, когда (2*a+b-c)<0 Например, так: function sqrt1 (a, b, c: real): real; begin if (2 * a + b - c) < 0 then <span>begin writeln (' complex number '); sqrt1:=-1; end</span> else sqrt1:= sqrt(2 * a + b - c); <span>end;</span>
Procedure TForm1.Button4Click(Sender: TObject); var Buff: TNodePointer; x: TItem; i,j: Cardinal; begin i:=0; Buff:=Head; if(Buff^.Next=nil) then begin ShowMessage('В стеке один элемент!'); exit; end; while Buff <> nil do begin while (Buff^.Next<>nil) and (Buff^.Data=Buff^.Next^.Data) and not(isEmpty(Buff)) do begin pop(Buff^.Next,x); for j:=i to StringGrid1.RowCount-2 do StringGrid1.Cells[0,j]:=StringGrid1.Cells[0,j+1]; StringGrid1.RowCount:=StringGrid1.RowCount-1; end; Buff:=Buff^.Next; i:=i+1; end; end;
PS. Delphi у меня сейчас нет, так что проверяйте сами. Если что не так - сообщайте.