Примеры задач
Одномерные массивы
Пусть даны вещественное число а и массив вещественных чисел Q[1..n].Выбрать два числа из массива Q таким образом, чтобы числа а, b, с могли быть длинами сторон треугольника. Подсчитайте сколько пар таких чисел а и b в массиве Q. Методика ререния
Используемые переменные: a, b, c – длины сторон; m – кол-во пар, которые могут быть сторонами треугольника; q – массив; I, j – параметры цикла. А так же, понадобится константа n – количество элементов массива.
Для начала считываем с экрана число a , в цикле от 1 до n генерируем случайным образом элементы массива и выводим их на экран. Три числа могут быть длинами сторон треугольника в том случае, если каждое из них меньше суммы двух других чисел. То есть, a, b и c являются длинами сторон треугольника если a < b+c, b < a+c и c < a+b . Нам необходимо перебрать все пары чисел в массиве и проверить, соответствуют ли они данному условию. Для этого организуем два цикла (один вложен в другой). Первый цикл (от I=1 до n ) перебирает элементы массива по порядку. Второй (от j=n до i+1 ), вложе6нный, перебирает их в обратном порядке, начиная с конца до i+1 -го элемента. Во втором цикле переменным b и c присваиваем значения элементов mas[i] и mas[j] , затем проверяем условие: a < b+c, b < a+c и c < a+b . Если данное условие выполняется, то числа a, b, c могут быть длинами сторон треугольника, выводим пару a и b на экран, количество искомых пар увеличиваем на 1(предварительно в начале программы количество необходимо обнулить). После выполнения цикла выводим на экран получившееся количество.
Program ex2_3; Uses crt; const n=5; Type mas=Array[1..n] Of Real; Var q:mas; a,b,c:real; i,j,m:integer; Begin clrscr; Writeln ('Введите а'); Readln(a); Randomize; {Формирование массива Q} Writeln ('Массв: '); For i:=1 To n Do begin q[i]:=random+random(10); Write(q[i]:4:1) end; Writeln; {Выбор и проверка} Writeln('--B-----C--'); For i:=1 To n Do For j:=n DownTo i+1 Do Begin b:=q[i]; c:=q[j]; If (b<>0) And (c<>0) And(a<>0) Then Begin If (a+b>c)And(a+c>b)And(c+b>a)Then Begin Writeln(b:1:1,' | ',c:1:1); Writeln; Inc(m); End; End; End; Writeln; Writeln(m,' пар могут быть сторонами треугольника'); Readkey; END.