Дан массив 25 случайных чисел от -40 до 40. Вывести а) количество нечетных б) количество положительных
Если честно, на то, чтобы напечатать массив, найти сумму, ср.арифметическое и т.п. , у мя мозгов еще кое-как хватает. А вот с количеством... Мы задач не решали похожих, и примера нет( Можете помочь найти кол-во?
.
Program mas100;
var
a: array [1..25] of real;
i: integer;
Ch:char;
Begin
Randomize;
i:=1;
While i<=25 do
begin
A[i]:=random(81);
A[i]:=A[i]-40;
write (A[i]:3:0, ' ');
i:=i+1;
end;
For i:=1 to 25 do
write (a[i]:3:0, ' ')
....
Во-первых, не обязательно делать 2 строки там, где можно обойтись одной:
A[i]:=random(81) - 40;а во-вторых, какая же четность/нечетность? У тебя числа вещественные... Надо делать массив целых и для каждого проверять
if A[i] mod 2 = 0 then { значит, четное - увеличить счетчик }
if A[i] mod 2 = 0 then { значит, четное - увеличить счетчик }
if not Odd(A) = 0 then?
Потому что odd есть в Паскале, а вот насчет остальных языков я под сомнением...
А mod есть почти везде...
В любом случае, даже если mod имеет другой написание, то саму конструкцию
if A[i] mod 2 = 0 then
if not Odd(A) = 0then
function Odd(X: Longint): Boolean
Только я все равно не знаю, как вычислить это самое количество. Вы не могли бы сказать, что будет вместо […] ?
И еще: где можно найти в Интернете учебник по паскалю (нужно как можно больше программ, а теории поменьше).
Заранее благодарю)))
Program mas100;
var
a: array [1..25] of integer;
i, x: integer;
Begin
Randomize;
i:=1;
While i<=25 do
begin
A[i]:=random(81)-40;
write (A[i], ' ');
i:=i+1;
end;
For i:=1 to 25 do
begin
x:=0;
if A[i] mod 2 = 1 then [...]
writeln (‘chislo nechetnyh = ', x);
end;
For i:=1 to 25 do
begin
if A[i]>0 then [...]
writeln (‘chislo polozhitelnyh = ', x)
end;
End.
inc(x)
x:=x+1
if not Odd(A) = 0 then?
program mas100;
var
a: array [1..25] of integer;
i, odds, positives: integer;
begin
Randomize;
i:=1;
While i<=25 do begin
A[i] := random(81)-40;
write (A[i], ' ');
i:=i+1;
end;
odds := 0; { <--- Это - число нечетных чисел... Обнулять ПЕРЕД циклом }
For i:=1 to 25 do begin
if Abs(A[i]) mod 2 = 1 then odds := odds + 1; { <--- Брать по модулю, mod не работает с отриц. числами}
end;
writeln ('chislo nechetnyh = ', odds); { <--- А распечатывать - после цикла }
positives := 0; { <--- Положительные }
For i:=1 to 25 do begin
if A[i] > 0 then positives := positives + 1;
end;
writeln ('chislo polozhitelnyh = ', positives); { <--- Аналогично ... }
End.
У меня вот так получилось
uses crt;
var
a:array[1..25] of longint;
b,c,i,kn,kp:integer;
begin
randomize;
clrscr;
b:=-40;
c:=40;
for i:=1 to 25 do
begin
a[i]:=b+random(c-b+1);
write(a[i],' ');
if (a[i] mod 2 <>0) and (a[i]<>0) then
begin
kn:=kn+1;
end;
if a[i] >0 then
begin
kp:=kp+1;
end;
end;
writeln('/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/');
writeln(kp,' ',kn);
end.
Спасибо всем огромное, а особенно volvo, потому как именно он объяснил все "с чувством, с толком, с расстановкой" и понятным для меня языком)))
А насчет mod... Вот я учусь информатике 1ый год и не знаю пока ничего лучше и удобнее)) потому как не проходила)) И для меня в новинку было узнать, что mod не работает с отрицательнми. Конечно, потом вдумалась, и дошло..
А вообще, как я поняла, чем больше знаешь какую-то тему(относится ко всем "отраслям")), тем сложнее хочешь решить простые задачи
Юля,
var i: integer;что выдаст? А если будешь сравнивать с 1-цей, а не с нулем?
begin
i := -15;
writeln(i mod 2);
end.
-1.
а что должен? 1?
ведь остаток - это разница с ближайшим делящимся без остатка меньшим числом, если я не ошибаюсь...
(13 mod 6 = 13-12=1;
-15 mod 2 = -16-(-15)=-1)