Шпоры по информатике5 / 12128 / Задачи
.doc
1 Var s1: String; i, j, k: Integer; A: array[1..10] of String; Begin WriteLN('Введите предложение не более чем из 10 слов(Слова разделяются пробелами)'); ReadLN(s1); i:=0; k:=0; repeat k:=k+1; A[k]:=''; while not((s1[i+1]=' ') or (i=length(s1))) do Begin i:=i+1; A[k]:=A[k]+s1[i]; End; i:=i+1; until (i>=length(s1)) or (k>=10); for j:=1 to k do for i:=1 to k-1 do if A[i]>A[i+1] then begin s1:=A[i]; A[i]:=A[i+1]; A[i+1]:=s1; end; WriteLN('результат:'); for i:=1 to k do WriteLN(A[i]); End.
2 Var i, t, fr, fv: Integer; A: array[1..20] of Integer; Begin for i:=1 to 20 do Begin Write('‚введите оценку ', i, ' студента (от 2 до 5): '); ReadLN(A[i]); End; t:=0; fr:=0; fv:=0; for i:=1 to 20 do case A[i] of 2: t:=t+1; 4: fr:=fr+1; 5: fv:=fv+1; end; WriteLN('не сдало экзамен: ', t,' студента.'); WriteLN('сдало экзамен на 4: ', fr,' студентов.'); WriteLN('сдало экзамен на 5: ', fr,' студентов.'); WriteLN('сдало экзамен на 4 и 5: ', fr,' студентов.'); End.
3 Var i: Real; Begin WriteLN('‚введите количество компьютеров собираемых фирмой в течении недели:'); ReadLN(i); i:=i/7; WriteLN('фирма собирала в среднем за день ', i:10:5, ' компьютеров.'); End. 6 Var M, N, i, j: Integer; Sm: Real; A: array[1..50,1..50] of Real; Begin Write('Введите количество строк: '); ReadLN(N); Write('Введите количество столбцов: '); ReadLN(M); Randomize; for i:=1 to N do for j:=1 to M do A[i,j]:=(i-j)/2;
Sm:=0; for i:=1 to N do Sm:=Sm+A[i,i]; WriteLN('Сумма элементов главной диагонали: ', Sm:10:10) End. |
4 Var i, j: Integer; Sr: Real; A: array[1..5,1..3] of Integer; B: array[1..5] of Real; Begin for i:=1 to 5 do for j:=1 to 3 do Begin Write('‚введите оценку ', i, ' студента за ', j, ' экзамен (от 2 до 5): '); ReadLN(A[i,j]); End; Sr:=0; for i:=1 to 5 do Begin B[i]:=0; for j:=1 to 3 do B[i]:=B[i]+A[i,j]; B[i]:=B[i]/3; Sr:=Sr+B[i]; End; Sr:=Sr/5;
for i:=1 to 5 do WriteLN('средний бал ', i, ' студента: ', B[i]:10:5); WriteLN('общий средний бал'); End. Зад 5 Var All: Boolean; M, N, i, j, St: Integer; A: array[1..50,1..50] of Integer; Begin Write('Введите количество строк: '); ReadLN(N); Write('Введите количество столбцов: '); ReadLN(M); Randomize; for i:=1 to N do for j:=1 to M do A[i,j]:=random(100)-50;
St:=0; for j:=1 to M do Begin All:=False; for i:=1 to N do if A[i,j]<0 then All:=True; if All=False then Begin St:=j; j:=M End; End; if St<>0 then WriteLN('Номер столбца, содержащего только положительные элементы: ', St) else WriteLN('Столбец, содержащий только положительные элементы отсутствует!'); End. 7 Uses Graph; Var grDriver, grMode, ErrCode: Integer; Begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then Begin SetColor(Red); SetLineStyle(SolidLn,0,NormWidth); Line(0, 100, GetMaxX, 100); SetLineStyle(DottedLn,0,NormWidth); Line(0, 110, GetMaxX, 110); SetLineStyle(CenterLn,0,NormWidth); Line(0, 120, GetMaxX, 120); SetLineStyle(DashedLn,0,NormWidth); Line(0, 130, GetMaxX, 130); Readln; CloseGraph; End Else Writeln('Ошибка графики: ', GraphErrorMsg(ErrCode)); End. |
8 Uses Graph; Var grDriver, grMode, ErrCode, i, j: Integer; Begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then Begin for i:=1 to 8 do for j:=1 to 16 do Begin SetFillStyle(i, j); Bar(10+j*40, 10+i*40, 20+j*40, 30+i*40); End; ReadLn; CloseGraph; End Else WriteLn('Ошибка графики: ', GraphErrorMsg(ErrCode)); End. 9 Uses Graph; Var grDriver, grMode, ErrCode, i, j: Integer; Begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then Begin Randomize; for i:=1 to 200 do Begin SetFillStyle(random(9), random(17)); FillEllipse(random(GetMaxX), random(GetMaxX), random(100), random(100)); End; ReadLn; CloseGraph; End Else WriteLn('Ошибка графики: ', GraphErrorMsg(ErrCode)); End. 10 Uses Graph; Var grDriver, grMode, ErrCode, i, j: Integer; Begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then Begin SetColor(Red); Line(Trunc(GetMaxX/2), Trunc(GetMaxY/2-50), Trunc(GetMaxX/2), Trunc(GetMaxY/2+50)); Circle(Trunc(GetMaxX/2), Trunc(GetMaxY/2-50-30), 30); Line(Trunc(GetMaxX/2), Trunc(GetMaxY/2-30), Trunc(GetMaxX/2)+40, Trunc(GetMaxY/2)-30-40); Line(Trunc(GetMaxX/2), Trunc(GetMaxY/2-30), Trunc(GetMaxX/2)-40, Trunc(GetMaxY/2)-30-40); Line(Trunc(GetMaxX/2), Trunc(GetMaxY/2+50), Trunc(GetMaxX/2)+40, Trunc(GetMaxY/2)+50+40); Line(Trunc(GetMaxX/2), Trunc(GetMaxY/2+50), Trunc(GetMaxX/2)-40, Trunc(GetMaxY/2)+50+40); ReadLn; CloseGraph; End Else WriteLn('Ошибка графики: ', GraphErrorMsg(ErrCode)); End. 13 Var x,c,rez:real; Begin Write('введите X: '); ReadLn(x); if x>0 then begin c:=ln(x)/3; rez:=exp(c); writeln('корень 3 степени из ',x:6:2,' =',rez:6:2); end; if x=0 then writeln('корень 3 степени из 0 = 0'); if x<0 then begin c:=x*(-1); c:=ln(c)/3; rez:=exp(c)*(-1); writeln('корень 3 степени из ',x:6:2,' =',rez:6:2); |
11 Uses Graph; Var A: array[1..7] of Integer; grDriver, grMode, ErrCode, i, j: Integer; Begin for i:=1 to 7 do Begin Write('Введите ', i, ' число: '); ReadLN(A[i]); End; grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then Begin for i:=1 to 7 do Begin SetFillStyle(1, 8+i); Bar(10+i*40, GetMaxY-10, 30+i*40, GetMaxY-10-A[i]*10); End; ReadLn; CloseGraph; End Else WriteLn('Ошибка графики: ', GraphErrorMsg(ErrCode)); End. 12 Var a, b, c: Integer; D, d1, d2: Real; Begin Write('Введите коэффициент a: '); ReadLN(a); Write('Введите коэффициент b: '); ReadLN(b); Write('Введите коэффициент c: '); ReadLN(c); D:=b*b-4*a*c; if D<0 then Begin WriteLN('Уравнение не имеет корней!'); Halt; End; if D=0 then Begin D:=-b/2/a; WriteLN('Уравнение имеет один корень: ', D:10:5); Halt; End; if D>0 then Begin d2:=-(b-sqrt(D))/(2*a); d1:=-(b+sqrt(D))/(2*a); WriteLN('Уравнение имеет два корня: ', d1:10:5, ' и ', d2:10:5); Halt; End; End . 14 Var y, m, c, yt, mt, ct: Integer; Begin Write('Введите год рождения: '); ReadLN(y); Write('Введите порядковй номер месяца рождения: '); ReadLN(m); Write('Введите число рождения: '); ReadLN(c); Write('Введите текущий год: '); ReadLN(yt); Write('Введите текущий порядковй номер месяца: '); ReadLN(mt); Write('Введите текущее число: '); ReadLN(ct); y:=yt-y; if (mt<m) or ((mt=m) and (ct<c)) then y:=y-1; WriteLN('Вам ', y, ' лет.'); End. |
15 program zad; uses wincrt; var a,b,c:integer;x1,x2:real; begin writeln('vvedite a,b,c:'); readln(a,b,c); if (a<=0) or (c>0) then writeln('dannie nekor') else begin X1:=((-c/a)-b); x2:=((c/a)-b); writeln('1-i kor raven ',x1:2:2,' 2-i kor rav ',x2:2:2,'');end; {if (a<0) then writeln('')} end. 16 Var as: array[1..3] of Real; i: Integer; max: Real; Begin Write('Введите сторону a: '); ReadLN(as[1]); Write('Введите сторону b: '); ReadLN(as[2]); Write('Введите сторону c: '); ReadLN(as[3]); max:=as[1]; for i:=2 to 3 do if as[i]>max then max:=as[i]; if (2*max)<(as[1]+as[2]+as[3]) then Begin WriteLN('Данные отрезки могут образовать треугольник!'); if (2*max*max)<(as[1]*as[1]+as[2]*as[2]+as[3]*as[3]) then WriteLN('Это остроугольный треугольник!') else if (2*max*max)=(as[1]*as[1]+as[2]*as[2]+as[3]*as[3]) then WriteLN('Это прямоугольный треугольник!') else if (2*max*max)>(as[1]*as[1]+as[2]*as[2]+as[3]*as[3]) then WriteLN('Это тупоугольный треугольник!'); End else WriteLN('Данные отрезки не могут образовать треугольник!'); End. 21 Label again; Var F: Text; s1: String; i, j: Integer; k: Real; Begin Assign(F, 'z21.txt'); Reset(F); Read(F, s1); Close(F); WriteLN('Файл содержит: '); WriteLN(s1); if ((s1[1]>='0') and (s1[1]<='9')) and (s1[2]=' ') and ((s1[3]='+') or (s1[3]='-') or (s1[3]='*') or (s1[3]='/')) and (s1[4]=' ') and ((s1[5]>='0') and (s1[5]<='9')) then Begin i:=ord(s1[1])-$30; j:=ord(s1[5])-$30; case s1[3] of '+': k:=i+j; '*': k:=i*j; '-': k:=i-j; '/': k:=i/j; end; WriteLN('Результат операции: ', k:10:10); End else WriteLN('Неправильный формат файла!'); End. |
17 Label again; type Z = record f, i, o, nt: String; end; Var a: array[1..50] of Z; s1, s2, s3: String; N, y, i: Integer; Begin N:=0; again: Write('Введите тип выполняемой операции (1-добавление записи, 2-вывод на экран, 3-поиск абонента, 4-выход): '); ReadLN(y); if y=1 then Begin N:=N+1; Write('Введите фамилию: '); ReadLN(s1); a[N].f:=s1; Write('Введите имя: '); ReadLN(s1); a[N].i:=s1; Write('Введите отчество: '); ReadLN(s1); a[N].o:=s1; Write('Введите номер телефона: '); ReadLN(s1); a[N].nt:=s1; goto again; End; if y=2 then Begin for i:=1 to N do WriteLN(i, '. ', a[i].f, ' ', a[i].i, ' ', a[i].o, ' - ', a[i].nt); goto again; End; if y=3 then Begin Write('Введите фамилию: '); ReadLN(s1); Write('Введите имя: '); ReadLN(s2); Write('Введите отчество: '); ReadLN(s3); for i:=1 to N do if (a[i].f=s1) and (a[i].i=s2) and (a[i].o=s3) then Begin WriteLN('Номер телефона: ', a[i].nt); goto again; End; WriteLN('Данный абонент не найден!'); goto again; End; if y=4 then End. 26 Var s, t, max, C: Real; function F(a,b: Real): Real; Begin F:=a/(1+b)+b/(1+a)-(a-b); End; Begin Write('Введите s: '); ReadLN(s); Write('Введите t: '); ReadLN(t); if F(t-s,s*t)>F(s-t,s+t) then max:=F(t-s,s*t) else max:=F(s-t,s+t); C:=F(s,t)+max+F(1,1); WriteLN('C = ', C:10:10); End. |
18 Label again; type Z = record f, p, d: String; m: Char; y: Word; end; Var a: array[1..50] of Z; s1: String; ss: Char; N, y, i, k: Integer; Begin N:=0; again: Write('Введите тип выполняемой операции (1-добавление записи, 2-вывод на экран, 3-вывод сотрудников по'); Write('подразделению, 4-самый старший мужчина, 5-выход): '); ReadLN(y); if y=1 then Begin N:=N+1; Write('Введите фамилию: '); ReadLN(s1); a[N].f:=s1; Write('Введите подразделение: '); ReadLN(s1); a[N].p:=s1; Write('Введите должность: '); ReadLN(s1); a[N].d:=s1; Write('Введите пол (м/ж): '); ReadLN(ss); a[N].m:=ss; Write('Введите год рождения: '); ReadLN(i); a[N].y:=i; goto again; End; if y=2 then Begin for i:=1 to N do WriteLN(i, '. ', a[i].f, ' ', a[i].p, ' ', a[i].d, ' (', a[i].m, ') - ', a[i].y); goto again; End; if y=3 then Begin Write('Введите подразделение: '); ReadLN(s1); for i:=1 to N do if (a[i].p=s1) then WriteLN(i, '. ', a[i].f, ' ', a[i].p, ' ', a[i].d, ' (', a[i].m, ') - ', a[i].y); goto again; End; if y=4 then Begin for i:=1 to N do if a[i].m='м' then Begin y:=a[i].y; i:=N; End; for i:=1 to N do if (a[i].y<y) and (a[i].m='м') then Begin y:=a[i].y; k:=i; End; WriteLN('Самый старый: ', a[k].f, ' ', a[k].p, ' ', a[k].d, ' (', a[k].m, ') - ', a[k].y); goto again; End; if y=5 then End. |
19 Label again; Var F: Text; s1, fname: String; i, k: Integer; A: array[1..5] of String; Begin WriteLN('Введите предложение не из 5 слов(слова разделяются пробелами) в конце - точка:'); ReadLN(s1); k:=1; for i:=1 to length(s1)-1 do Begin if s1[i]=' ' then k:=k+1 else A[k]:=A[k]+s1[i]; End; again: Write('Введите тип выполняемой операции (1-поменять первое и последнее слова местами, '); Write('2-ввод имени файла, 3-вывод результата на экран и запись в файл, 4-выход): '); ReadLN(k); if k=1 then Begin s1:=A[1]; A[1]:=A[5]; A[5]:=s1; goto again; End; if k=2 then Begin Write('Введите имя файла: '); ReadLN(fname); goto again; End; if k=3 then Begin s1:=''; for i:=1 to 4 do s1:=s1+A[i]+' '; s1:=s1+A[5]+'.'; WriteLN(s1); Assign(F, fname); ReWrite(F); Write(F, s1); Close(F); goto again; End; if k=4 then End. 20 Label again; Var F: Text; s1: String; i, j, k, l: Integer; A: array[1..8] of String; Begin Assign(F, 'z20.txt'); Reset(F); Read(F, s1); Close(F); k:=1; for i:=1 to length(s1) do Begin if s1[i]=' ' then k:=k+1 else A[k]:=A[k]+s1[i]; End; WriteLN('Файл содержит:'); WriteLN(s1); again: for i:=1 to 8 do Begin k:=0; l:=0; for j:=1 to length(A[i]) do begin if (A[i][j]>='A') and (A[i][j]<='Z') then k:=k+1; if (A[i][j]>='a') and (A[i][j]<='z') then l:=l+1; end; WriteLN(i, ' слово содержит заглавных букв: ', k, ' , прописных букв: ', l); End; End. |
27 Var k, l, m: Integer; x, y, z: array[1..50] of Real; C: Real; procedure Proc(a, b, c: Integer); Var i: Integer; Begin Randomize; for i:=1 to a do x[i]:=Random(100)-50; for i:=1 to b do y[i]:=Random(100); for i:=1 to c do z[i]:=Random(100); End; function F(kp,lp,mp: Integer): Real; Var i: Integer; max, maxy, maxz: Real; Begin Proc(kp,lp,mp); max:=x[1]; for i:=1 to k do if x[i]>max then max:=x[i]; if max>0 then Begin maxy:=y[1]; for i:=1 to l do if y[i]>maxy then maxy:=y[i]; maxz:=z[1]; for i:=1 to m do if z[i]>maxz then maxz:=z[i]; F:=(maxy+maxz)/2; End else Begin F:=1+max; End; End; Begin Write('Введите k: '); ReadLN(k); Write('Введите l: '); ReadLN(l); Write('Введите m: '); ReadLN(m); C:=F(k,l,m); WriteLN('C = ', C:10:10); End. |
28 Var n, m: Integer; a, x, S, C: Real; procedure Proc(a1, x1: Real; n1, m1: Integer); Var i: Integer; Begin C:=0; S:=1; for i:=1 to n1 do Begin S:=S*x1/i; C:=C+S; End; S:=1; for i:=1 to m1 do Begin S:=S*a1/i; C:=C+S; End; End; Begin Write('Введите a: '); ReadLN(a); Write('Введите x: '); ReadLN(x); Write('Введите n: '); ReadLN(n); Write('Введите m: '); ReadLN(m); Proc(a,x,n,m); WriteLN('C = ', C:10:10); End.
|
29 type SS21=array[1..20,1..10] of Real; Var N1, N2, M1, M2: Integer; a, b: SS21; SR1, SR2: Real; function F(v1: SS21; bd1, bd2: Integer): Real; Var i, j: Integer; SRs: Real; Begin SRs:=0; for i:=1 to bd1 do for j:=1 to bd2 do SRs:=SRs+v1[i,j]; F:=SRs/bd1/bd2; End; procedure Proc(n1, m1, n2, m2: Integer); Var i, j: Integer; Begin for i:=1 to n1 do for j:=1 to m1 do Begin Write('Введите элемент строки ', i, ', столбца ', j, ' первой матрицы: '); ReadLN(a[i,j]); End; for i:=1 to n2 do for j:=1 to m2 do Begin Write('Введите элемент строки ', i, ', столбца ', j, ' второй матрицы: '); ReadLN(b[i,j]); End; SR1:=F(a,n1,m1); SR2:=F(b,n2,m2); WriteLN; for i:=1 to n1 do Begin WriteLN; for j:=1 to m1 do Write(a[i,j]:10:5, ' '); End; WriteLN; for i:=1 to n2 do Begin WriteLN; for j:=1 to m2 do Write(b[i,j]:10:5, ' '); End; End; Begin Write('Введите N1: '); ReadLN(N1); Write('Введите M1: '); ReadLN(M1); Write('Введите N2: '); ReadLN(N2); Write('Введите M2: '); ReadLN(M2); Proc(N1,M1,N2,M2); WriteLN('Среднее арифмитическое первой матрицы = ', SR1:10:5); WriteLN('Среднее арифмитическое второй матрицы = ', SR2:10:5); End |
30 type SS21=array[1..50] of Real; Var N1, N2, N3: Integer; a, b, c: SS21; SR1, SR2, SR3: Real; function F(v: SS21; it: Integer): Real; Var i: Integer; SRs: Real; Begin SRs:=0; for i:=1 to it do if v[i]>0 then SRs:=SRs+v[i]; F:=SRs; End; procedure Proc(n1, n2, n3: Integer); Var i: Integer; Begin for i:=1 to n1 do if i<5 then a[i]:=cos(i) else a[i]:=sin(i/2); for i:=1 to n2 do if i<5 then b[i]:=cos(i) else b[i]:=sin(i/2); for i:=1 to n3 do if i<5 then c[i]:=cos(i) else c[i]:=sin(i/2); SR1:=F(a, n1); SR2:=F(b, n2); SR3:=F(c, n3); WriteLN('Первый массив: '); for i:=1 to n1 do Write(a[i]:10:5, ' '); WriteLN; WriteLN('Второй массив: '); for i:=1 to n2 do Write(b[i]:10:5, ' '); WriteLN; WriteLN('Третий массив: '); for i:=1 to n3 do Write(c[i]:10:5, ' '); WriteLN; End; Begin Write('Введите N1: '); ReadLN(N1); Write('Введите N2: '); ReadLN(N2); Write('Введите N3: '); ReadLN(N3); Proc(N1,N2,N3); WriteLN('Сумма положительных элементов первого массива = ', SR1:10:5); WriteLN('Сумма положительных элементов второго массива = ', SR2:10:5); WriteLN('Сумма положительных элементов третьего массива = ', SR3:10:5); End. |
31 type SS21=array[1..50] of Integer; Var N1, N2, N3, SR, SR1, SR2, SR3: Integer; a, b, c: SS21; function F(v: SS21; it: Integer): Integer; Var i: Integer; SRs: Integer; Begin SRs:=v[1]; for i:=1 to it do if v[i]>SRs then SRs:=v[i]; F:=SRs; End; procedure Proc(n1, n2, n3: Integer); Var i: Integer; Begin Randomize; for i:=1 to n1 do a[i]:=Random(101); for i:=1 to n2 do b[i]:=Random(101); for i:=1 to n3 do c[i]:=Random(101); SR1:=F(a, n1); SR2:=F(b, n2); SR3:=F(c, n3); WriteLN('Первый массив: '); for i:=1 to n1 do Write(a[i], ' '); WriteLN; WriteLN('Второй массив: '); for i:=1 to n2 do Write(b[i], ' '); WriteLN; WriteLN('Третий массив: '); for i:=1 to n3 do Write(c[i], ' '); WriteLN; End; Begin Write('Введите N1: '); ReadLN(N1); Write('Введите N2: '); ReadLN(N2); Write('Введите N3: '); ReadLN(N3); Proc(N1,N2,N3); SR:=SR1+SR2+SR3; WriteLN('Максимальный элемент первого массива = ', SR1); WriteLN('Максимальный элемент второго массива = ', SR2); WriteLN('Максимальный элемент третьего массива = ', SR3); WriteLN('Их сумма = ', SR); End. |
32 Var k, l, m: Integer; x, y, z: array[1..50] of Real; C: Real; procedure Proc(a, b, c: Integer); Var i: Integer; Begin Randomize; for i:=1 to a do x[i]:=Random(100)-50; for i:=1 to b do y[i]:=Random(100); for i:=1 to c do z[i]:=Random(100); End; function F(kp,lp,mp: Integer): Real; Var i: Integer; max, maxy, maxz: Real; Begin Proc(kp,lp,mp); max:=x[1]; for i:=1 to k do if x[i]>max then max:=x[i]; if max>0 then Begin maxy:=y[1]; for i:=1 to l do if y[i]>maxy then maxy:=y[i]; maxz:=z[1]; for i:=1 to m do if z[i]>maxz then maxz:=z[i]; F:=(maxy+maxz)/2; End else Begin F:=1+max; End; End; Begin Write('Введите k: '); ReadLN(k); Write('Введите l: '); ReadLN(l); Write('Введите m: '); ReadLN(m); C:=F(k,l,m); WriteLN('C = ', C:10:10); End. 33 Var s, t, max, C: Real; function F(a,b: Real): Real; Begin F:=a/(1+b)+b/(1+a)-(a-b); End; Begin Write('Введите s: '); ReadLN(s); Write('Введите t: '); ReadLN(t); if F(t-s,s*t)>F(s-t,s+t) then max:=F(t-s,s*t) else max:=F(s-t,s+t); C:=F(s,t)+max+F(1,1); WriteLN('C = ', C:10:10); End. |