Реферат: Одномерные массивы. Организация ввода и вывода данных
Название: Одномерные массивы. Организация ввода и вывода данных Раздел: Рефераты по информатике Тип: реферат |
Колледж Экономики и информационных технологий Отчет по учебной практике Дисциплина: Основы алгоритмизации. Выполнила: Гавриляченко Н. Группа Г-121 Проверила: Абилова Ж.М. Уральск, 2009 Одномерные массивы. Организация ввода и вывода данных Вариант- 6. Задание 1. Организовать ввод и вывод одномерного массива А1..А10 из вещественных чисел с помощью формулы А[i]:=cos(i program p1; var a:array [1..10] of integer; i:integer; begin for i:=1 to 10 do a[i]:=cos(sqr(i)+2*i+1) for i:=1 to 10 do writeln ('a[',i,']=',a[i]); readln; end. Задание 2. Напишите программу, которая сначало вводит 15 чисел, складывает отдельно элементы с четными номерами и складывает отдельно нечетные элементы и выдает полученные результаты. Program p1; Var a: array [1..15] of integer; i,j,k,n:integer; Begin For i:=1 to 15 do Read(a[i]); For i:=1 to 15 do Write(' ',a[i]); For i:=1 to 15 do Begin If i mod 2=0 then k:=k+a[i]; If i mod 2=1 then n:=n+a[i]; End; WriteLn('k=',k); Writeln('n=',n); Readln; End. Задание 3. Организовать одномерный массив из 20 целых чисел. Найти сумму всех квадратных элементов в массиве и вывести на экран. program p2; uses crt; var a:array [1..20] of integer; i,s:integer; begin clrscr; writeln ('vvedi 20 chisel'); for i:=1 to 20 do readln (a[i]); for i:=1 to 20 do a[i]:=sqr(i); for i:=1 to 20 do writeln ('a[','i',']=',a[i]); for i:=1 to 20 do s:=s+a[i]; writeln ('summa vsex kvadratnix elementov=',s); readln; end. Задание 4. Организовать одномерный массив путем заполнения его квадратами чисел от 1 до 10. Найти сумму чисел кратных 3. Program p4; Uses crt; Var a:array[1..10] of integer; i,s:integer; Begin ClrScr; Writeln('vvedite 10 chisel'); for i:=1 to 10 do Readln (a[i]); for i:=1 to 10 do a[i]:=Sqr(i); For i:=1 to 10 do WriteLn('a[',i,']=',a[i]); For i:=1 to 10 do if (a[i] mod 3=0) then s:=s+a[i]; writeln('s=',s); Readln; End. Задание 5. Организовать одномерный массив из 20 чисел. Удвоить наибольший и наименьший элементы. Program p6; Uses crt; Var a:array[1..20] of integer; i,max,min:integer; Begin ClrScr; WriteLn('Vvedite massiv'); For i:=1 to 20 do readln(a[i]); max:=a[1]; For i:=1 to 20 do If a[i]>max then max:=a[i]; max:=max*2; min:=a[1]; For i:=1 to 20 do If a[i]<min then min:=a[i]; min:=min*2; Writeln('Maksimalnij element massiva=',max); Writeln('Minimalnij element massiva=',min); Readln; End. Задание 6. Организовать массив из 20 чисел. Отсортировать по возрастанию. Вывести массив до и после обработки. Program sortirovka; Uses crt; Var a:array[1..20] of integer; i,j,b,d:integer; Begin ClrScr; Randomize; For i:=1 to 20 do a[i]:=random(51); For i:=1 to 20 do Write('a[',i,']=',a[i]:3); For j:=1 to 19 do For i:=1 to 19 do If a[i]>a[i+1] then Begin b:=a[i]; a[i]:=a[i+1]; a[i+1]:=b End; For i:=1 to 20 do Write('a[',i,']=',a[i]:3); Readln; End. Задание 7 Организовать одномерный массив из 15 чисел. Первые 7 чисел отсортировать по возрастанию, последние 7 чисел по возрастанию. Вывести массив до и после обработки. Program p8; Uses crt; Var a:array [1..15] of integer; i,j,t,b:integer; Begin ClrScr; For i:=1 to 15 do ReadLn(a[i]); For j:=1 to 7 do Begin t:=j; For i:=j to 7 do If a[i]<a[t] then t:=i; b:=a[t]; a[t]:=a[j]; a[i]:=b;End; For j:=9 to 15 do Begin t:=i; For i:=j to 15 do If a[i]<a[t] then t:=i;b:=a[t];a[t]:=a[j]; a[j]:=b;End; For i:=1 to 15 do Write(' ',a[i]); End. Задание 8. В одномерном массиве целых чисел определить минимальный элемент, заменить его на 0. Стоящие за ним элементы на 6. Program p2; Var a: array [1..10] of integer; i,min,j,t:integer; begin Writeln ('vvedite massiv'); For i:=1 to 10 do Readln(a[i]); For j:=1 to 10 do begin min:=a[1]; t:=1; for i:=2 to 10 do If a[i] <min: =a[i]; t:=i;End; a[t]:=0; for i:=t+1 to 10 do a[i]:=6; for i:=1 to 10 do Writeln('a[',i,']=',a[i]); Readln; End. Задание 9. Организовать одномерный массив целых положительных чисел. Найти среднее арифметическое, определить количество элементов, больших этого среднего. Program p3; Uses crt; Var a :array[1..10] of integer; i,s,n:integer; sa,sg:real; Begin ClrScr; Writeln ('vvedite massiv'); Begin For i:=1 to 10 do Readln(a[i]); End; For i: =1 to 10 do s:=s+a[i]; sa:=s/5; For i:=1 to 10 do If a[i]>sa then Begin n:=n+1; End; Writeln ('srednee arifmeticheskoe=', sa:3:2); Writeln ('V massive',n,'elementov bolshih sred.arifmetich'); Readln; End. Задание 10. Организовать массив. Определить среднее арифметическое и геометрическое, сравнить их между собой, если ср. арифметическое>ср. геометрического, то прибавить к каждому элементу массива 2, если ср. геометрическое>ср. арифметического, то умножить на 2. Program p4; Uses crt; Var a :array[1..10] of integer; c,n:real; i:integer; Begin ClrScr; Writeln('vvedite massiv'); for i:=1 to 10 do readln(a[i]); for i:=1 to 10 do c:=(c+a[i]); c:=c/10; for i:=1 to 10 do n:=sqr(10); if c>n then for i:=1 to 10 do a[i]:=a[i]+2 else if n>c then for i:=1 to 10 do a[i]:=a[i]*2; Writeln('c=',c,' n=',n); Readln; End. Задание 11. Дан массив 10 целых чисел. Отсортируйте его, найдите в нем контрольное число. Все элементы до контрольного числа замените на противоположные. Program p5; Uses crt ; Var a:array [1..10] of integer; c,b,i,t,j:integer; begin Writeln('vvedite massiv'); For i:=1 to 10 do Readln(a[i]); For j:=1 to 10 do Begin t:=j; For i:=j to 10 do If a[i]<a[t] then t:=i; b:=a[t]; a[t]:=a[j]; a[j]:=b; End; Write('vivesti kontrolnoe chislo b='); readln(b); c:=0; For i:=1 to 10 do if a[i]=b then c:=i; If c:=0 then WriteLn('ravnih b net') else for i:=1 to c-1 do a[i]:=-a[i]; For i:=1 to 10 do write(a[i]:2); Readln; End. Задание 12. Дан массив, состоящий из 20 символов. Отсортировать его по возрастанию. Ввести 2 числа a и b от 0 до 255. Определить количество элементов, входящие в отрезок [char(a), char(b)]. Program p6; Uses crt; Var a:array[1..10] of integer; i,j,b,t,c,f:integer; Begin Writeln('vvedite 20 elemenyov'); for i:=1 to 20 do Readln(a[i]); for j:=1 to 20 do Begin t:=j; for i:=j to 20 do if a[i]<a[t] then t:=i; b:=a[t]; a[t]:=a[j]; a[j]:=b; End; writeln('vvedite 2 chisla c<f'); Readln(c,f); Writeln('elementi vhodyachie v otrezok [c,f]'); for i:=1 to 20 do if (a[i]>=c) and (a[i]<=f) then write(a[i]:3); WriteLn; For i:=1 to 20 do Write(' ',a[i]); Readln; End. Задание 13. Дан одномерный массив из 10 целых чисел. Среди элементов массива найти корни квадратного уравнения x2 +5-6=0. Если таковые отсутствуют, то вывести сообщение об этом. ProgramP8; var m:array [1..5] of integer; p, i:integer; a,b,c,x1,x2:real; D:real; Begin a:=1; b:=5; c:=-6; D:=b*b-4*a*c; If D>0 then begin x1:=(-b+sqrt(D))/(2*a); x2:=(-b-sqrt(D))/(2*a); Writeln('pervii koren yravneniya=',x1:1:1); Writeln('vtoroi koren yravneniya=',x2:1:1); Writeln('Vvedite massiv'); For i:=1 to 5 do Readln(m[i]); p:=0; For i:=1 to 5 do If x1=m[i] then p:=i; if p<>0 then Writeln (' ',x1:1:1,' est v massive'); end else Writeln(' ',x1:1:1,' net v massive'); For i:=1 to 5 do If x2=m[i] then p:=i; if p<>0 then begin Writeln ('',x2:1:1,' est v massive');end else Writeln(' ',x2:1:1,' net v massive'); Readln;End. Вариант 12 . Задание 14. Дан массив из 10 чисел, отсортируйте его. Найдите в нем контрольное число. Все элементы после контрольного числа заменить на их квадраты. Рrogram p1; Uses crt; Var a:array[1..10] of integer; c,b,i,j,t:integer; Begin ClrScr; Writeln('vvedite 10 chisel'); For i:=1 to 10 do ReadLn(a[i]); For j:=1 to 10 do Begin t:=j; for i:=j to 10 do If a[i]<a[t] then t:=i; b:=a[t]; a[t]:=a[j]; a[j]:=b; End; Write('vvedite kontrolnoe chislo b='); Readln(b); a[t]:=0; for i:=t+1 to 10 do a[i]:=sqr(a[i]); For i:=1 to 10 do if a[i]=b then c:=i; If c=0 then Writeln('a[',i,']=',a[i]); Readln; End. Задание 15. Напишите программу, которая вводит с клавиатуры 30 целых чисел, определяет среднее арифметическое первых десяти чисел, вторых десяти и последних десяти. После этого определяется максимальное и минимальное среднее арифметическое и выводится сообщение. Program p2; Uses crt; Var a:array[1..30]of integer; i,max,min:integer; s,sa[1],sa[2],sa[3]:real; Begin Writeln('vvedite massiv'); for i:=1 to 30 do Readln(a[i]); Begin for i:=1 to 10 do s:=s+a[i]; sa[1]:=s/10; Writeln('srednee arifmeticheskoe pervih 10 chisel=',sa[1]:2:2); for i:=11 to 20 do s:=s+a[i]; sa[2]:=s/10; Writeln('srednee arifmeticheskoe vtorih 10 chisel=',sa[2]:2:2); for i:=21 to 30 do s:=s+a[i]; sa[3]:=s/10; Writeln('srednee arifmeticheskoe tretih 10 chisel=',sa[3]:2:2); End; max:=sa[1]; for i:=1 to 3 do if sa[i]>max then Begin max:=sa[i]; End; min:=a[1]; for i:=1 to 3 do if sa[i]<min then Begin min:=sa[i]; End; Двумерные массивы. Организация ввода и вывода. Задание 16. Организовать два массива a[i] и b[i] целых чисел. Окружность задана уравнением (х-1)2 +(у+2)2 =16. Среди соответствующих пар (a[i], b[i]) вывести те, которые являются координатами внешних точек окружности. Program p3; Uses crt; Var a:array[1..10]of integer; b:array[1..10]of integer; i:integer; x,y:real; Begin ClrScr; Writeln('Vvedite massiv a'); For i:=1 to 10 do Readln(a[i]); Writeln('Vvedite massiv b'); For i:=1 to 10 do Readln(b[i]); Writeln(' koordinati vneshnih tochek okrugnosti (x-1)^2+(y+2)^2'); For I:=1 to 10 do If Sqr(a[i]-1)+Sqr(b[i]+2)>16 then Writeln('[',a[i],',',b[i],']'); Readln; End. Задание 17. Дана функция Z=6x2 +7y. Организовать двумерный массив, значений функции Z от индексов i, j. а)Определить максимум, минимум функции; б) Найти среднее арифметическое. Program p1; Uses crt; Var z:array[1..3,1..3] of integer; i,j,min,max:integer; sa,s:real; Begin ClrScr; for i:=1 to 3 do For j:=1 to 3 do Begin z[i,j]:=6*Sqr(i)+7*j; Writeln('z[',i,',',j,']=',z[i,j]); End; max:=z[1,1]; for i:=1 to 3 do For j:=1 to 3 do If z[i,j]>max then max:=z[i,j]; writeln('maksimalnoe znachenie=',max); min:=z[1,1]; for i:=1 to 3 do For j:=1 to 3 do If z[i,j]<min then min:=z[i,j]; writeln('Minimalnoe znachenie=',min); For i:=1 to 3 do For j:=1 to 3 do s:=s+z[i,j]; sa:=s/9; Writeln('srednee arifmeticheskoe=',sa:2:2); Readln; End. Задание 17. Дана матрица целых чисел размером 5х6 (random). Отсортировать каждую строку матрицы по возрастанию. Вывести матрицу до и после обработки. Program p2; Uses crt; Var a: array[1..5,1..6] of integer; i,j,n,t:integer; Begin ClrScr; Randomize; For i:=1 to 5 do For j:=1 to 6 do a[i,j]:=random(50); For i:=1 to 5 do begin For j:=1 to 6 do Write(a[i,j]:3); Writeln; End; Writeln; For i:=1 to 5 do For n:=1 to 5 do For j:=1 to 5 do If a[i,j]>a[i,j+1] then Begin t:=a[i,j]; a[i,j]:=a[i,j+1]; a[i,j+1]:=t; End; For i:=1 to 5 do Begin For j:=1 to 6 do Write(a[i,j]:3); Writeln; End; Readln; end. Задание 18. Дана матрица целых чисел размером 3х5. Заменить все положительные элементы на 5, все отрицательные на 3, все нули на нуль. Program p3; Uses crt; Var a:array[1..3,1..5] of integer; i,j:integer; Begin ClrScr; Writeln('vvedite elementi massiva'); For i:=1 to 3 do for j:=1 to 5 do Read(a[i,j]); For i:=1 to 3 do For j:=1 to 5 do Begin If a[i,j]>0 then a[i,j]:=5; If a[i,j]<0 then a[i,j]:=3 end; For i:=1 to 3 do begin For j:=1 to 5 do Write(a[i,j]:2); Writeln;End; readln; End. Задание 19. Даны две матрицы А и В размером 4х4. Вычислить и вывести на экран матрицу С=А+В. Найти сумму элементов матрицы С, кратных 3, но не кратных 2. Program p4; Uses crt; Var A,B,C:array[1..4,1..4] of integer; i,j,sum:integer; begin ClrScr; Writeln('vvedite elementi massiva A'); For i:=1 to 4 do For j:=1 to 4 do Read(A[i,j]); Writeln('vvedite elementi massiva B'); For i:=1 to 4 do For j:=1 to 4 do Read(B[i,j]); Writeln; For i:=1 to 4 do For j:=1 to 4 do C[i,j]:=A[i,j]+B[i,j]; Write('C[i,j]=',C[i,j]); for i:=1 to 4 do For j:=1 to 4 do Writeln(c[i,j]); for i:=1 to 4 do For i:=1 to 4 do For j:=1 to 4 do If (C[i,j] mod 3=0) and (c[i,j] mod 2<>0) then sum:=sum+c[i,j]; Writeln('symma elementov matrici C=',sum:2); For i:=1 to 4 do For j:=1 to 4 do Writeln('C[',i,', ',j,']=',C[i,j]);writeln; Readln; End. Задание 20. Даны две матрицы А и В. Сравнить матрицы поэлементно. Найти количество элементов матрицы А, больших, чем элементы матрицы В и наоборот. Сравнить их. Вывести сообщение: А>В или В>А. Program p5; Uses crt; var a,b:array [1..4,1..4] of integer; i,j,t,k:integer; Begin ClrScr; Writeln('vvedite elementi matrici a'); For i:=1 to 4 do For j:=1 to 4 do Read(a[i,j]); Writeln('vvedite elementi massiva b'); For i:=1 to 4 do For j:=1 to 4 do Read(b[i,j]); For i:=1 to 4 do For j:=1 to 4 do Begin If a[i,j]>b[i,j] then t:=t+1; If b[i,j]>a[i,j] then k:=k+1; end; Writeln('t=',t); Writeln('k=',k); If t>k then Writeln('elementi massiva a bolshe b') else Writeln('elementi massiva b bolshe a'); If t=k then Writeln('elementi massiva a i b ravni'); Writeln; Readln; End. Задание 21. Организовать двумерный массив (размерность 3х3). Вывести на экран в виде матрицы. Program p1; Uses crt; var a:array[1..3,1..3] of integer; i,j:integer; Begin ClrScr; Writeln('vvedite elementi matrici: a[',i,' ',j,']'); For i:=1 to 3 do For j:=1 to 3 do Readln(a[i,j]); For i:=1 to 3 do begin For j:=1 to 3 do Write(a[i,j]:3); Writeln;end; Readln; End. Задание 22. Дана матрица 4х3 целых чисел. Найти сумму элементов, сумма индексов которых является: а) Четным числом; б) Кратно 3. Program P2; var a:array[1..4,1..3] of integer; i,j,S:integer; Begin For i:=1 to 4 do For j:=1 to 3 do read(a[i,j]); For i:=1 to 4 do for j:=1 to 3 do If (i+j) mod 2 =0 then S:=S+a[i,j]; Writeln('Summa elementov,sum indeksov kot chetnaya=',S); For i:=1 to 4 do for j:=1 to 3 do if (i+j) mod 3 =0 then S:=S+a[i,j]; Writeln('Summa el-v,sum indeksov kratna 3=',S); Readln; End. Задание 23. Дана матрица вещественных чисел 3х3. Диагональные элементы матрицы заменить на максимальные. Program z; uses crt; var a:array [1..3,1..3] of integer; i,j,max:integer; begin clrscr; writeln('vvedite massiv'); For i:=1 to 3 do For j:=1 to 3 do readln(a[i,j]); For i:=1 to 3 do For j:=1 to 3 do if a[i,j]>max then max :=a[i,j]; writeln('max=',max); For i:=1 to 3 do begin a[i,i]:=max; a[i,3+1-i]:=max; end; for i:=1 to 3 do begin for j:=1 to 3 do write(a[i,j]); writeln; end; readln;end. Задание 24. Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов: а) По столбцам; б) По строкам. Program P4; var a:array [1..3,1..3] of integer; i,j,Sh1,Sh2,Sh3,Sd1,Sd2,Sd3:integer; Begin for i:=1 to 3 do for j:=1 to 3 do read(a[i,j]); for i:=1 to 3 do begin Sd1:=a[i,1]+Sd1; Sd2:=a[i,2]+Sd2; Sd3:=a[i,3]+Sd3; end; for j:=1 to 3 do begin Sh1:=a[1,j]+Sh1; Sh2:=a[2,j]+Sh2; Sh3:=a[3,j]+Sh3;end; Writeln('Symma 1-i stroki=',Sh1); Writeln('Symma 2-i stroki=',Sh2); Writeln('Symma 3-i stroki=',Sh3); Writeln('Symma 1-go stolbca=',Sd1); Writeln('Symma 2-go stolbca=',Sd2); Writeln('Symma 3-go stolbca=',Sd3); readln; End. Задание 25. Организовать двумерный массив (5х5) случайных целых чисел из отрезка [0,60]. Найти минимальный элемент среди элементов, расположенных выше главной диагонали. ProgramP5; var a:array [1..5,1..5] of integer; i,j,min:integer; Begin randomize; For i:=1 to 5 do For j:=1 to 5 do a[i,j]:=random(61); Writeln('Matrica do obrabotki'); For i:=1 to 5 do begin For j:=1 to 5 do write(a[i,j]:5); writeln;end; min:=a[1,5]; For i:=1 to 5 do For j:=1 to 5 do if (i<j) and (a[i,j]<min) then min:=a[i,j]; Writeln('Minimym=',min); Readln; end. Организация подпрограмм с помощью функций. Задание 26. Написать функцию, которая вычисляет объем цилиндра. Параметрами функции должны быть радиус и высота цилиндра. Program p1; Var H,R,O:Real; function Obem(R,H:real):real; Begin Obem:=Pi*Sqr(R)*H; End; Begin Writeln('vvedite R i H'); Readln(R,H); O:=obem(R,H); Writeln('Obem=',O:2:2); Readln; End. Задание 27. Написать фукцию, возвращающую: а) минимальное среди двух; б) максимальное среди двух; Program p2; Uses crt; Var a,b:integer; min,max:integer; Function maximum(a,b:integer):integer; Begin ClrScr; if a>b then maximum:=a else maximum:=b; End; Function minimum(a,b:integer):integer; Begin if a<b then minimum:=a else minimum:=b; End; Begin Read(a,b); max:=maximum(a,b); min:=minimum(a,b); Write('mininimum=',min); Write('maximum=',max);End. Задание 28. Написать функцию нахождения дискриминанта уравнения и определяющая количество корней (т.е. принимает значения: 0,1, 2). Program Z3; var a,b,c:integer; Function D(a,b,c:integer):integer; Begin if Sqr(b)-4*a*c>0 then D:=2; If Sqr(b)-4*a*c=0 then D:=1; If Sqr(b)-4*a*c<0 then D:=0; end; Begin Writeln('Vvedite a,b,c'); Readln(a,b,c); Writeln('Yravnenie imeet' ,D(a,b,c),' kornei' ); Readln; end. Задание 29. Написать функцию нахождения общего сопротивления при параллельном соединении двух проводников. Rобщ.
= Program Z4; var R1,R2,rez:real; function Sopr(R1,R2:real):real; Begin Sopr:=1/R1+1/R2; End; Begin Writeln('Vvedite R1 i R2'); Readln(R1,R2); rez:=Sopr(R1,R2); Writeln('Soprotivlenie=',Sopr(R1,R2):2:2); Readln; End. Задание 30. Написать функцию, вычисляющую процент от числа. Параметры- число и процент. Program Z5; var N,P,rez:real; function Procent (N,P:real):real; Begin Procent:=(N*P)/100; End; begin Writeln('Vvedite chislo i procent'); Readln(N,P); rez:=Procent(N,P); Writeln('Procent=',Procent(N,P):2:2); Readln; End. Вариант-9. Задание 31. Даны три стороны треугольника. Написать функцию нахождения площади вписанной в треугольник окружности. Program z1; Var o,a,b,c,S,r,p:real; Function Ploschad(a,b,c:real):real; var p,s:real; Begin p:=(a+b+c)/2; S:=Sqrt(p*(p-a)*(p-b)*(p-c)); r:=(2*S)/(a+b+c); ploschad:=Pi*Sqr(r); End; Begin Writeln('vvedite tri storoni treygolnika'); readln(a,b,c); O:=Ploschad(a,b,c); Writeln('ploschad ravna=',O:2:2); Readln; End. Задание 32. Написать функцию нахождения начальной скорости по конечной скорости, по времени изменения скорости, по ускорению. Program p2; Var v,v0,t,a:Real; Function Skorost(v,v0,a:real):real; Begin Skorost:=v-a*t; End; Begin Writeln('vvedite konech.skorost, vremya i yskorenie'); Readln(a,t,v); v0:=Skorost(a,t,v); Writeln('Nachalnaya skorost ravna=',v0:4:2); Readln; End. Задание 33. Написать программу, которая вычисляет квадратный корень произведения трех вещественных чисел, введенных с клавиатуры. Program z3; Var kor,a,b,c:real; Function Koren(a,b,c:real):Real; Begin Koren:=Sqrt(a*b*c); End; Begin Writeln('vvedite tri chisla'); Readln(a,b,c); Kor:=Koren(a,b,c); Writeln('koren chisel raven=',kor:2:2); Readln; End. Задание 34. Написать функцию, которая вычисляет значение выражения от аргументов a и b. tg(a)+ctg(b). Program p4; Var arg,a,b:real; Function Argymenti(a,b:real):real; Begin Argymenti:=sin(a)/cos(a)+cos(b)/sin(b); End; Begin Writeln('vvedite dva chisla'); Readln(a,b); Arg:=Argymenti(a,b); Writeln('Znachenie virazheniya ravno=',Arg:2:2); Readln; End. Задание 35. Написать функцию, определяющую среднее арифметическое среди элементов в массиве. Program p5; uses crt; Var a:array[1..4] of real; i:integer; sa:real; Function Srednee(var a:array of real):real; Var sum:real; Begin For i:=0 to 3 do Sum:=sum+a[i]; Srednee:=sum/4; End; Begin ClrScr; Writeln('vvedite massiv'); For i:=1 to 4 do Readln(a[i]); sa:=Srednee(a); Writeln('srednee arifmeticheskoe=',sa:4:2); Readln; End. Организация подпрограмм с помощью процедур. Задание 36 Даны две точки с координатами (х1, х2), (у1,у2). Найти длину отрезка. а) без параметра Procedure dlina; Var x1,x2,y1,y2:integer; d:real; Begin Writeln('vvedite koordinati'); Write('x1='); readln(x1); Write('x2='); readln(x2); Write('y1='); readln(y1); Write('y2='); readln(y2); d:=Sqrt(sqr(x1-x2)+sqr(y1-y2)); Writeln('dlina=',d); End; Begin Dlina; Readln; End. б) с параметром Program p2; Procedure dlina(x1,x2,y1,y2:integer); Var d:real; begin d:=Sqrt(Sqr(x1-x2)+sqr(y1-y2)); Writeln(dlina=',d:2:2); end; begin Writeln('vvedite koordinati'); Write('x1='); Readln(x1); Write('x2='); Readln(x2); Write('y1='); readln(y1); write('y2='); Readln(y2); Dlina(x1,x2,y1,y2); Readln; End. Вариант-9 Задание 37. Найдите x из пропорции Programp1; Var a,b,c:real; Procedure proporciya(a,b,c:real); Var x:real; Begin x:=((a+b)*(a+c))/(b-c); Writeln('proporciya=',x:2:2); End; Begin Writeln('vvedite znacheniya a,b,c'); Readln(a,b,c); Proporciya(a,b,c); Readln; End. Задание 38. Даны координаты вершин треугольника. Найти его периметр. Program p6; Var x1,y1,x2,y2,x3,y3:real; Procedure Perimetr(x1,y1,x2,y2,x3,y3:real); Var P,d1,d2,d3:real; Begin d1:=Sqrt(sqr(x1-x2)+sqr(y1-y2)); Writeln('dlina1=',d1:2:2); d2:=Sqrt(sqr(x2-x3)+sqr(y2-y3)); Writeln('dlina2=',d2:2:2); d3:=Sqrt(sqr(x1-x3)+sqr(y1-y3)); Writeln('dlina3=',d3:2:2); If (d1+d2>d3) and (d2+d3>d1) and (d1+d3>d2) then P:=d1+d2+d3 else Writeln('Takogo treygolnika ne sychestvyet'); Writeln('Perimetr=',P:2:2); End; Begin Writeln('vvedite koordinati'); Write('x1='); Readln(x1); Write('x2='); Readln(x2); Write('x3='); Readln(x3); Write('y1='); Readln(y1); Write('y2='); Readln(y2); Write('y3='); Readln(y3); Perimetr(x1,y1,x2,y2,x3,y3); Readln; End. Задание 39. Определить среднесуточную температуру, если показания термометра: утром-no C, вечером- ko C, днем- mo C. Program p3; Var n,k,m:real; Procedure Temperatyra(n,k,m:real); Var sst:real; Begin sst:=(n+k+m)/3; Writeln('Temperatyra=',sst:2:2); End; Begin Writeln('vvedite pokazaniya termometra ytrom,vecherom i dnem'); Readln(n,k,m); Temperatyra(n,k,m); readln; End. Задание 40. За какое время пешеход доберется до соседнего города, если его скорость равна V(км/ч), а расстояние- S(км). Program p2; Var S,v:real; Procedure Vremya(s,v:real); Var t:real; Begin t:=s/v; Writeln('Vremya=',t:2:2); End; Begin Writeln('vvedite skorost i rasstoyanie'); readln(s,v); Vremya(s,v); Readln; End. Задание 41. Найти площадь круга S, вписанного в квадрат со стороной a. Program p5; Var a:real; Procedure Ploschad(a:real); Var s:real; Begin S:=pi*sqr(a/2); Writeln('ploschad=',s:2:2); End; Begin Writeln('vvedite dliny storoni a'); Readln(a); Ploschad(a); Readln; End. Задание 42. Найти значение выражения y= (a+b+c)2 . Program p4; Var a,b,c,d:real; Procedure Virazhenie(a,b,c,d:real); Var y:real; Begin d:=3; a:=2*d; b:=3*d; c:=d/2; y:=sqr(a+b+c); Writeln('Virazhenie=',y:2:2); End; Begin Virazhenie(a,b,c,d); Readln; End. Вариант- 5. Задание 43. Дан одномерный массив. Найти и вывести на экран значения и номера элементов не превосходящих контрольное число. Оформить процедурой. Program p2; Var a:array[1..5] of integer; i,n:integer; Procedure Massiv(a:array of integer;n:integer); Var i:integer; begin for i:=0 to 5 do If a[i]<=n then begin Writeln('a[',i,']=' ,a[i]); end;end; Begin Writeln('vvedite kontrolnoe chislo'); Readln(n); Writeln('vvedite massiv'); For i:=1 to 5 do Readln(a[i]); Massiv(a,n); Readln; End. Задание 44. Дана функция y=ax3 +bx2 +cx+d. Вывести в виде таблицы значения функции на отрезке [-k,k]. Вычисления оформить функцией y(a,b,c,d,k). Program p3; Var a,b,c,d,y:real; x,k:integer; Function Tablica(a,b,c,d:real; x:integer):real; Begin Tablica:=a*x*x*x+b*sqr(x)+c*x+d; End; Begin Writeln('vvedite znacheniya fynccii'); Readln(a,b,c,d,k); For x:=-k to k do begin y:=Tablica(a,b,c,d,x); Writeln('y=',y:2:2); End; Readln; End. Задание 45. Даны 4 числа a,b,c,d. Найти объемы параллелепипедов на отрезках a,b,c,d. Среди объемов найти наименьший. Вычисление объемов оформить функцией V(a,b,c). Program p4; Var v:array[1..4] of integer; min,i, a,b,c,d,v1,v2,v3,v4:integer; Function Obem(a,b,c,d:integer):integer; Begin obem:=a*b*c; end; Begin Writeln('vvedite znacheniya peremennih'); readln(a,b,c,d); v[1]:=obem(a,b,c,d); v[2]:=obem(d,c,b,a); v[3]:=obem(b,a,d,c); v[4]:=obem(c,d,a,b); for i:=1 to 4 do Writeln('obem',i,'parallelepipeda=',v[i]:2); min:=v[1]; for i:=1 to 4 do if v[i]<min then min:=v[i]; writeln('min=',min); Readln; End. Комбинированный тип. Объявление записи. Задание 46. Дан список учащихся из 10 записей. Каждая запись имеет поле фамилия, имя, номер класса, буква. а) Найти однофамильцев из одного класса; б) Найти двух учащихся тезок. Program z; type ycheniki=record fam:string[15]; imya:string[10]; class:record bykva:char; god:integer; end; end; var spisok:array [1..6] of ycheniki; i,j:integer; begin for i:=1 to 6 do begin with spisok[i] do begin writeln('vvedite familiu ychenika',i); readln(fam); writeln('vvedite imya',i); readln(imya); writeln('vvedite ego klass',i); readln(class.god); writeln('vvedite bykvy klassa'); readln(class.bykva); end;end; writeln; writeln('spisok odnofamilcev v odnom klasse:'); for i:=1 to 5 do for j:=i+1 to 6 do if (spisok[i].fam=spisok[j]. fam) and (spisok[i].class.god=spisok[j].class.god) and (spisok[i].class.bykva=spisok[j].class.bykva) then writeln(spisok[j].fam, ' ',spisok[i].imya, ' ', spisok[i].class.god.bykva,' ', spisok[j].imya, ' ',spisok[j].class.god.bykva); writeln('Ychashiesya tezki:'); for i:=1 to 5 do for j:=i+1 to 6 do if (Spisok[i].fam=spisok[j].fam)and(spisok[i].imya=spisok[j].imya) then writeln(spisok[j].fam, ' ', spisok[i].imya, ' ',spisok[i].class.god.bykva,' ', spisok[j].imya, ' ', spisok[j].class.god.bykva); writeln('Spisok ychashixsya s odinakovoi bykvoi klassa:'); for i:=1 to 5 do for j:=i+1 to 6 do if spisok[i].class.bykva=spisok[j].class.bykva then writeln(spisok[i].fam, ' ',spisok[i].imya, ' ',spisok[i].class.god, ' ', (spisok[j].fam, ' ',spisok[j].imya, ' ',spisok[j].class.god); readln; Задание 47. Написать программу, выдающую сведения об ассортименте игрушек в магазине. Структура записи: название игрушки, цена, количество, возрастные границы. А)вывести названия игрушек, которые подходят детям до 3 лет; Б)самая дорогая игрушка; В)название игрушки, которая по стоимости не превышает х тг и подходит ребенку в возрасте до а лет. Program Assortiment; type Igryshki=record name:string[15]; cena:integer; kol:integer; vozr:integer; end; var Magazin:array [1..6] of Igryshki; i,j,max,x,a,b:integer; Begin for i:=1 to 6 do begin with igryshki[i] do begin writeln('Vvedite nazvanie igryshki',i); readln(name); writeln('Cena:'); readln(cena); writeln('Kolichestvo:'); readln(kol); writeln('Vozrastnie granici:'); readln(vozr); end;end; Writeln; Writeln('Samaya dorogaya igryshka:'); max:=igryshki[1].cena; For i:=1 to 6 do if igryshki[i].cena>max then begin max:=igryshki[i].cena; Writeln(igryshki[i].name, ' ', max); end; Writeln('Igryshki dlya detei v vozraste 3 let:'); For i:=1 to 6 do if igryshki[i].vozr=3 then begin Writeln(igryshki[i].name, ' stoimostu ',igryshki[i].cena, 'tg'); end; writeln('vvedite stoimost'); readln(x); For i:=1 to 6 do if (igryshki[i].cena<x) then begin writeln('Igryshki ' ,igryshki[i].name, 'stoimostu ' ,igryshki[i].cena,' ne previshaut ',x,' tg' ); end; writeln('vvedite vozrast '); readln(a); For i:=1 to 6 do if igryshki[i].vozr=a then begin writeln(igryshki[i].name , 'podxodyat dlya vozrasta' , igryshki[i].vozr); end; readln; end. Задание 48. Список книг состоит из 10 записей: Поля: Фамилия автора; Название книги; Год издания; Количество страниц; а) Найти название книг данного автора, изданных с 1960 года. б) Определить имеются ли книги с названием «Информатика», если да, то сообщить фамилию авторов, год издания и количество страниц. в) Вывести название книг и их авторов, если количество страниц превосходит среднее количество страниц по всему списку. PROGRAM P1; Type knigi=record fam:string; name:string; page:integer; god:integer; End; Var Spisok:array[1..5] of knigi; i,o,summa:integer; m:string; Sr:real; Begin For i:=1 to 5 do Begin With Spisok[i] do Begin Writeln('Vvedite familiu avtora', i); Readln(fam); Writeln('Vvedite nazvanie knigi', i); Readln(name); Writeln('vvedite god izdaniya'); Readln(god); Writeln('Vvedite kolichestvo stranic'); Readln(page); End; End; Writeln; Writeln('Spisok knig izdannih s 1960 goda'); Writeln('Vvedite imya avtora'); Readln(m); For i:=1 to 5 do If (m=spisok[i].fam) and (spisok[i].god>=1960) then Writeln(spisok[i].fam,' ',spisok[i].name,' ',spisok[i].god); Writeln('Imeutsya li knigi s nazvaniem "Informatika"?'); For i:=1 to 5 do begin If spisok[i].name='Informatika' then Writeln(Spisok[i].fam,' ',spisok[i].god,' ',spisok[i].page); o:=o+1 end; if o=0 then Writeln('Takih knig net'); Summa:=0; For i:=1 to 5 do Summa:=Summa+Spisok[i].page; Sr:=Summa/5; Writeln('Srednee kolichestvo stranic=',Sr:2:2); For i:=1 to 5 do If Spisok[i].page>Sr THEN Writeln('Stranici prevoshodyawie srednee kolichestvo stranic po spisky ',Spisok[i].fam,' ',Spisok[i].name); Readln; End. Файловая переменная. Типизированные файлы. Задание 49. а) Организовать файл CHISLA.dat с целыми числами. Program p1; Var f:file of integer; n,i,c:integer; Begin Writeln('sozdat fail iz celih chisel'); Assign (f,'c:\ucheba\CHISLA.dat'); Rewrite(f); Readln(n); For i:=1 to n do Begin Read(c); Write(f,c); End; End. б) Составить программу, подсчитывающую количество элементов в файле, их сумму, среднее арифметическое. program p3; var f:file of integer; i,n,s:integer; elem,k:integer; sum:integer;sa:real; begin assign(f,'c:\ucheba\kolichestvo.txt'); reset(f); sum:=0; k:=0; while not eof (f) do begin read(f,elem); k:=k+1; sum:=sum+elem; end; writeln('summa elementov=',sum); sa:=sum/k; writeln('sa=',sa:4:2); readln; end. Вариант 4в. Задание 50. Организовать символьный файл f из Nкомпонент. После этого организовать файл g, содержащий все компоненты файла f в обратном порядке. Вывести содержимое файлов на экран. Program p1; Var f,g:file of char; n,i:integer; c:char; a:array[1..10] of char; Begin Assign(f,'c:\ucheba\Simvoli.txt'); Rewrite(f); Writeln('Vvedite kolichestvo komponent '); Readln(n); writeln; writeln('vvedite komponenti'); For i:=1 to n do Begin Readln(c); Write(f,c); End; Close(f); Reset(f); Assign(g,'c:\ucheba\Simvol_.txt'); Rewrite(g); i:=1; While not eof (f) do Begin read(f,c); a[i]:=c; i:=i+1; end; for i:=n downto 1 do Write(g,a[i]); Close(f); Close(g); Reset(g); Writeln('simvoli faila g'); While not eof(g) do Begin Read(g,c); Writeln(c,' '); End; Close(g); Readln;End. Задание 51. Организовать файл символов из N компонент. Определить символ, встречающийся в файле наиболее часто. Вывести на экр ан этот символ и его количество в файле. Program z3; var f:file of char; i,n,k,j,max:integer; c:char; a:array [1..100] of char; s:array [1..100] of integer; Begin writeln('Sozdat fail iz simvolov'); assign(f,'c:\docume~1\3193~1\0016~1\ucheba\baza4.txt'); rewrite(f); writeln('vvesti kolichestvo komponentov'); readln(n); for i:=1 to n do begin readln(c); write(f,c); end; close(f); reset(f); i:=1; while not eof(f) do begin read(f,c); a[i]:=c; i:=i+1; end; for k:=1 to i do S[k]:=1; for k:=1 to i do for j:=k+1 to i do if a[k]=a[j] then s[k]:=s[k]+1; max:=s[1]; n:=1; for k:=1 to i do if max<s[k] then begin max:=s[k];n:=k;end; for k:=1 to i do if s[k]=max then writeln('simvol ', a[n],' vstrechaetsya ',n,' raz'); readln;end . Задание 52. Напишите программу организующую хранение в файле нескольких записей (до 10) о результатах экзамена. Каждая запись содержит 3 поля: номер записи, фамилия, оценка. Организуйте вывод всей информации по форме: {1 Иванов 3} Program Z1; type ekzamen=record n:integer; fam:string [15]; oc:integer; end; var baza1:file of ekzamen; rez:array [1..10] of ekzamen; i:integer; y:integer;f:string[100]; begin write('vvedite chislo ychenikov');readln(y); f:='c:\docume~1\3193~1\0016~1\ucheba\baza1.txt';assign(baza1,f);rewrite(baza1); for i:=1 to 10 do begin with rez[i] do begin Writeln('Familiya'); readln(fam); Writeln('Ocenka'); readln(oc); end;end; writeln; reset(baza1); Writeln('Rezyltati ekzamena:'); for i:=1 to 10 do Writeln(i,' ', rez[i].fam, ' ', rez[i].oc); Readln;end. Текстовые файлы. Задание 53 Организовать файл из Nстрок (текстовый) text.txt. Program p1; Uses Crt; Var f:text; i,n:integer; c:string; Begin ClrScr; Writeln('sozdanie tekstovogo faila '); Writeln('vvedite kolichestvi strok'); Readln(n); Assign(f,'c:\ucheba\text.txt'); Rewrite(f); For i:=1 to n do Begin Readln(c); Writeln(f,c); End; Close(f); Readln; End. Задание 54 Подсчитать среднюю длину строк из файла text.txt. Program p2; Uses crt; Var f:text; i,n,d:integer; c:string; Sa:real; Begin ClrScr; Writeln('Nahozhdenie srednej dlini stroki'); Writeln; Assign(f,'c:\ucheba\text.txt'); Reset(f); d:=0; While not eof(f) do begin Readln(f,c); n:=n+1; d:=d+length(c); End; Sa:=d/n; Writeln('srednee arifmeticheskoe=',sa:4:2); Repeat Until Keypressed; End. Задание 55 Удалить из текстового файла все пробелы(delete (St, n, 1). St - строка, n- позиция, 1-количество удаляемых символов. Program p3; Var f:text; i,n:integer; c:string; Begin Assign(f,'c:\ucheba\text.txt'); Reset(f); While not eof(f) do Begin Readln(f,c); for i:=1 to length(c) do if c[i]=' ' then delete(c,i,1); Writeln('Vivod faila bez probelov:',c); End; Readln; End. Задание 56 В текстовом файле text.txt определить максимальную длину строки. Program p2; Uses crt; Var f:text; i,n,max:integer; c:string; a:array[1..100] of integer; Begin ClrScr; Assign(f,'c:\ucheba\text.txt'); Reset(f); i:=1; While not eof(f) do Begin Readln(f,c); a[i]:=length(c); i:=i+1; End; n:=i; max:=a[1]; for i:=1 to n do Begin If a[i]>max then max:=a[i]; end; Writeln('maksimalnaya dlina stroki=',max); End. Задание 57 Строки из файла text.txt разбить на части нечетные по счету строки. Записать в файл text.txt, четные- в text2.txt Programp5; Uses crt; var f,g,h:text; c:string; i,n:integer; Begin ClrScr; Writeln('Sortirovka strok faila na chetnie i nechetnie'); Writeln; Assign(f,'c:\ucheba\text.txt'); Reset(f); Assign(g,'c:\ucheba\text1.txt'); Rewrite(g); Assign(h,'c:\ucheba\text2.txt'); Rewrite(h); i:=0; While not eof(f) do Begin Readln(f,c); i:=i+1; If(i mod 2)=0 then Writeln(g,c) else Writeln(h,c); End; Close(h); Close(g); End. |