Язык си.
Объект – дом (название улицы; номер дома; тип: обычный, кооперативный, малосемейный, другое). Множество данных – дома домоуправления. Задание: 1 – отсортировать дома по убыванию названия улицы, дома одной улицы должны быть отсортированы по возрастанию номера; 2 – найти количество различных типов домов, номер которых находится в заданном диапазоне. Для доступа к элементам динамического массива использовать указатели (операцию [] использовать нельзя).
Первая программа
const n=10;
var a,b:array[1..n] of integer;
i,j:integer;
begin
for i:=1 to n do readln(a[i]);
for i:=1 to n do
writeln('a[',i,']=',a[i]);
for i:=n downto 1 do begin
for j:=n-i+1 to n do begin
b[j]:=a[i];
break;
end;
end;
for i:=1 to n do
writeln('b[',i,']=',b[i]);
end.
Вторая программа
const n=10;
var i,s1,s2:integer;
a:array[1..n] of integer;
begin
for i:=1 to n do readln(a[i]);
for i:=1 to n do begin
if(a[i] mod 2 = 0) then
s1:=s1 + a[i];
if(a[i] mod 2 <> 0) then
s2:=s2 + a[i];
end;
writeln('Разность равна: ',s1-s2);
end.
Третья программа
const n=10;
var i,s1,s2:integer;
a:array[1..n] of integer;
begin
for i:=1 to n do readln(a[i]);
for i:=1 to n do begin
if(i mod 2 = 0) then
s1:=s1 + a[i];
if(i mod 2 <> 0) then
s2:=s2 + a[i];
end;
writeln('Разность равна: ',s1-s2);
end.
Для начала заводим переменную счетчик для подсчета количества четных и нечетных .
var count,count2:integer;
Далее в теле цикла с массивом, после его вывода добавляем условие if then else
if a[i].IsEven then count+=1 else count2+=1
Т.е. сам цикл будет выглядить так
for i := 1 to n do
begin
a[i] := Random(1, 50);
Write(a[i], ' ');
if a[i].IsEven then Count += 1 else Count2 += 1;
end;
Вместо a[i].IsEven можно использовать not Odd(a[i]) или уже a[i] mod 2 = 0
Ну а далее уже вывод количеств четных и нечетных
Можно сделать все еще проще.
begin
var a := ArrRandom(20, 1, 50);
Println('Четных ', a.Where(z -> z mod 2 = 0).Count, 'Нечетных ', a.Where(z -> Odd(z)).Count);
end.