1. Видим, что у нас тут член массива сравнивается с нулем, и если наше условие выполняется, то мы к какой-то переменной прибавляем единичку. На что это похоже? Правильно! На поиск количества нулей в массиве.
2. Тут видим, что проверяется i на четность, а i это у нас счетчик и индекс элемента массива. Если счетчик четный, то мы к сумме прибавляем элемент. Что это? Правильно! Сумма всех элементов с четными номерами.
3. В этом куске кода мы видим, что цикл начинается с двух. Зачем же это надо? А всё просто, n = 1, a[n] = a[1], получается, что мы берем первый член массива за минимум и проверяем, есть ли элемент который меньше его, а это значит, что мы ищем минимум, но важно увидеть, что мы ищем не само значение, а индекс минимального элемента.
4. Тут всё просто, проверяем число на кратность 5, если наше условие кратно пяти, то к переменной k прибавляется единица. Ну и что же это у нас? Да-да, это количество всех элементов массива, значения которых кратны 5.
5. Здесь похожа ситуация с третьим куском кода, но теперь мы ищем максимум, а не минимум и ищем не индекс, а само значение. Первый элемент массива берем за максимум, далее проверяем нет ли элементов больше, чем этот, если какой-то элемент больше максимума, то мы присваиваем максимуму значение этого элемента.
6. Здесь можем наблюдать вот такую штуку "<>", в Паскале она означает "не равно", то есть, мы проверяем не равен ли элемент массива нулю, если не равен, то умножаем этот элемент на наше произведение.
procedure nod( var dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 :real; ); var a:array[1..6] of real; i : integer; begin dv1:=100; tr1:=100; pt1:=100; for i:= low(a) to high (a) do begin readln(a[i]); repeat if( (a[i] mod 2) =0) then begin a[i]:=a[i]/2; dv:=dv+1; end else if( ( a[i] mod 3)=0) then begin a[i]:=a[i]/3; tr:=tr+1; end else if ( ( a[i] mod 5)=0) then begin a[i]:=a[i]/5; pt:=pt+1; end;
untill(a=1); if dvif trif ptdv:=0; tr:=0; pt:=0; end; if dv1>0 then dv2:=dv1*2 else dv2:=1; if tr1>0 then tr2:=tr1*3 else tr2:=1; if pt1>0 then pt2:=pt1*5 else pt2:=1; nod:=dv2*tr2*pt2; writeln(nod); end; begin nod( dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 ); end.
Задача №1 //PascalABC.NET (версия 3.1, сборка 1196 от 09.03.2016) Var n, i: integer; Begin writeln ('Введите число'); readln(n); writeln('Делители числа:'); for i := 1 to n div 2 do if (n mod i) = 0 then begin write(i,' '); end; End.
Задача №2 (алгоритм не очень шустрый, но работает и понятный) //PascalABC.NET (версия 3.1, сборка 1196 от 09.03.2016) var a, b, x, y, nod: integer;
begin writeln('Введите a,b'); readln(a, b); x := a;y := b; while x <> y do if x > y then x := x - y else y := y - x; nod := x; writeln('NOD(', a, ',', b, ')=', nod); end.
1 - Количество нулевых элементов
2 - Сумма всех элементов с четными номерами
3 - Номер(индекс) минимального элемента
4 - Количество элементов, кратных 5
5 - Значение наибольшего элемента массива
6 - Произведение ненулевых элементов
Пояснения:
1. Видим, что у нас тут член массива сравнивается с нулем, и если наше условие выполняется, то мы к какой-то переменной прибавляем единичку. На что это похоже? Правильно! На поиск количества нулей в массиве.
2. Тут видим, что проверяется i на четность, а i это у нас счетчик и индекс элемента массива. Если счетчик четный, то мы к сумме прибавляем элемент. Что это? Правильно! Сумма всех элементов с четными номерами.
3. В этом куске кода мы видим, что цикл начинается с двух. Зачем же это надо? А всё просто, n = 1, a[n] = a[1], получается, что мы берем первый член массива за минимум и проверяем, есть ли элемент который меньше его, а это значит, что мы ищем минимум, но важно увидеть, что мы ищем не само значение, а индекс минимального элемента.
4. Тут всё просто, проверяем число на кратность 5, если наше условие кратно пяти, то к переменной k прибавляется единица. Ну и что же это у нас? Да-да, это количество всех элементов массива, значения которых кратны 5.
5. Здесь похожа ситуация с третьим куском кода, но теперь мы ищем максимум, а не минимум и ищем не индекс, а само значение. Первый элемент массива берем за максимум, далее проверяем нет ли элементов больше, чем этот, если какой-то элемент больше максимума, то мы присваиваем максимуму значение этого элемента.
6. Здесь можем наблюдать вот такую штуку "<>", в Паскале она означает "не равно", то есть, мы проверяем не равен ли элемент массива нулю, если не равен, то умножаем этот элемент на наше произведение.
Если остались вопросы - добро в комментарии.