Составьте программу заполнения массива из 100 чисел случайными значениями из диапазона от -20 до 20. подсчитайте в этом массиве количество положительных и количество отрицательных значений.
Program chisla; var mas:array [1..100] of integer;i,ko,kp:integer; begin ko:=0;kp:=0; Randomize; for i:=1 to 100 do begin mas[i]:=Random(41)-20; if mas[i]<0 then ko:=ko+1; if mas[i]>0 then kp:=kp+1; end; Writeln('Положительных элементов=',kp); Writeln('Отрицательных элементов',ko) end.
По логике так: Надо расположить по возрастанию, то есть первое меньше второго, второе меньше третьего. Поэтому под цифрами 1 и 2 надо поставить "больше": если цифры поменяются местами, то станет "меньше", что нам и надо. Порядок убывания нам не нужен - нужно возрастание, поэтому в 3 пункте "не расположены". Ну а "к пункту" можно только "вернутся")
1)Начало. 2) Сравни первое и второе числа; если первое больше второго , то поменяй их местами. 3)Сравни второе и третье числа; если второе больше третьего, то поменяй их местами. 4)Если теперь три числа не расположены в порядке убывания, то исполни пункт 5) этого алгоритма; иначе вернись к пункту 2). 5)Конец.
Високосные года уже не учитывал (найдёте ошибку - не поленитесь написать в комменты)
var a,b,c:integer; begin writeln ('Введите сегодняшний день, месяц, год (например, 1 12 2013)'); read(a,b,c); if (((b=1) or (b=3)or (b=5) or (b=7) or (b=8) or (b=10) or (b=12)) and ((a>=1) and (a<=31))) or ((b=2) and ((a>=1) and (a<=28)) or (((b=4) or (b=6)or (b=9) or (b=11))) and ((a>=1) and (a<=30))) then begin writeln ('Сегодня ',a,'.',b,'.',c); if (((b=1) or (b=3)or (b=5) or (b=7) or (b=8) or (b=10) or (b=12)) and ((a>=1) and (a<=31))) and ((a=31) and (b=12)) then writeln ('Завтра 1.1.',c+1) else if (((b=1) or (b=3)or (b=5) or (b=7) or (b=8) or (b=10) or (b=12)) and ((a>=1) and (a<=31))) and ((a=31) and (b<>12)) then writeln ('Завтра 1.',b+1,'.',c) else if (((b=1) or (b=3)or (b=5) or (b=7) or (b=8) or (b=10) or (b=12)) and ((a>=1) and (a<=31))) and ((a<>31) and (b=12)) then writeln ('Завтра ',a+1,'.',b,'.',c) else if ((b=2) and ((a>=1) and (a<=28))) and ((a=28) and (b=12)) then writeln ('Завтра 1.1.',c+1) else if ((b=2) and ((a>=1) and (a<=28))) and ((a=28) and (b<>12)) then writeln ('Завтра 1.',b+1,'.',c) else if ((b=2) and ((a>=1) and (a<=28))) and ((a<>28) and (b=12)) then writeln ('Завтра ',a+1,'.',b,'.',c) else if (((b=4) or (b=6) or (b=9) or (b=11))) and ((a>=1) and (a<=30)) and ((a=30) and (b=12)) then writeln ('Завтра 1.1.',c+1) else if (((b=4) or (b=6) or (b=9) or (b=11))) and ((a>=1) and (a<=30)) and ((a=30) and (b<>12)) then writeln ('Завтра 1.',b+1,'.',c) else if (((b=4) or (b=6) or (b=9) or (b=11))) and ((a>=1) and (a<=30)) and ((a<>30) and (b=12)) then writeln ('Завтра ',a+1,'.',b,'.',c) else writeln ('Завтра ',a+1,'.',b,'.',c); end else writeln ('Неправильная дата'); end.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(100,-20,20); a.Println;
Writeln('Положительных ',a.Where(t->t>0).Count,
', отрицательных ',a.Where(t->t<0).Count)
end.
Пример
19 7 4 15 15 -16 20 6 1 7 -15 -13 3 0 -10 -17 -14 -16 12 -9 -16 -6 6 10 4 -17 -17 19 20 -12 -18 18 9 -14 -17 -11 6 4 -8 -20 -2 18 -3 -6 -6 -12 -8 -8 -11 13 -6 19 19 3 -14 4 -19 14 -10 11 -19 -19 6 -8 4 -13 -2 -4 -3 -19 -2 3 12 11 14 -13 18 -9 -4 -4 12 11 9 -14 14 -17 20 -15 20 -1 -12 13 -7 1 20 -4 -9 -16 10 -13
Положительных 45, отрицательных 54