Advertisement
Old_But_Gold

Exam

Nov 30th, 2022 (edited)
494
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.95 KB | None | 0 0
  1. Program ExamFirstSemester;
  2.  
  3. uses
  4. System.SysUtils;
  5.  
  6.  
  7. {//Задача 1.(15).
  8. //Отсортировать массив [1..40] по неубыванию.
  9. var
  10. I, J, Tmp: Integer;
  11. TheArray: Array [1..40] of Integer;
  12. F_on: Boolean;
  13. Randomize;
  14. For I := 1 to 40 do
  15. begin
  16. TheArray[I] := Random(40);
  17. Write(TheArray[I]:4);
  18. end;
  19. Writeln;
  20. I := 1;
  21. F_on := True;
  22. While (F_on) and (I < 40) do
  23. Begin
  24. F_on := False;
  25. For J := 2 to 40 - I do
  26. Begin
  27. If (TheArray[J - 1] < TheArray[J]) Then
  28. Begin
  29. Tmp := TheArray[J - 1];
  30. TheArray[J - 1] := TheArray[J];
  31. TheArray[J] := Tmp;
  32. F_on := True;
  33. End;
  34. End;
  35. Inc(I);
  36. End;
  37. For I := 1 to 40 do
  38. Write(TheArray[I]:4);}
  39. {//Задача 2.(43).
  40. //Преобразовать строку, состоящую из букв латинского алфавита, в строку, состоящую из порядковых номеров этих букв в алфавите. Пример: 'ABZ' - '1226'.
  41. Var
  42. A, B: String;
  43. I: Integer;
  44. Readln(A);
  45. A := LowerCase(A);
  46. B := '';
  47. For I := 1 to Length(A) do
  48. B := B + IntToStr(Ord(A[I]) - Ord('a') + 1) + ' ';
  49. Writeln(B);}
  50. {//Задача 3.(44).
  51. //Дана строка из слов и пробелов. Составить строку, состоящую из первых букв слов исходной строки
  52. Var
  53. S, W: String;
  54. I: Integer;
  55. Readln(S);
  56. S := Trim(S);
  57. W := S[1];
  58. For I := 2 to Length(S) - 1 do
  59. If (S[I] = ' ') and (S[I + 1] <> ' ') Then
  60. W := W + S[I + 1];
  61. Writeln(W);}
  62. {//Задача 4.(22).
  63. //Дана матрица М 100х100. Определить, равна ли сумма элементов над главной диагональю сумме элементов под главной диагональю. Возможные ответы "Да" или "нет".
  64. Var
  65. Arr: Array[1..100, 1..100] of Integer;
  66. I, J, SumUnder, SumTop: Integer;
  67. Randomize;
  68. For I := 1 to 100 do
  69. For J := 1 to 100 do
  70. Arr[I,J] := Random(300) - Random(300);
  71. SumUnder := 0;
  72. SumTop := 0;
  73. For I := 1 to 99 do
  74. For J := I + 1 to 100 do
  75. Begin
  76. SumTop := Arr[I,J];
  77. SumUnder := Arr[J, I];
  78. End;
  79. If SumUnder = SumTop Then
  80. Writeln('Yes')
  81. Else
  82. Writeln('No');}
  83. {//Задача 5.(?).
  84. //Дана матрица 10х10. Найти минимальный элемент побочной диагонали и заменить все нулевые элементы матрицы на него.
  85. var
  86. matrix: Array[1..10, 1..10] of Integer;
  87. I, J, Min: integer;
  88. Randomize;
  89. For I := 1 to 10 do
  90. Begin
  91. For J := 1 to 10 do
  92. Begin
  93. Matrix[I,J] := Random(20) - Random(20);
  94. Write(Matrix[I,J]:4);
  95. End;
  96. Writeln;
  97. End;
  98. Min := Matrix[10,1];
  99. For I := 9 Downto 1 do
  100. If (Matrix[I][11 - I] < Min) then
  101. Min := Matrix[I][11-I];
  102. For I := 1 to 10 do
  103. For J := 1 to 10 do
  104. If (Matrix[I,J] = 0) Then
  105. Matrix[I,J] := Min;
  106. For I := 1 to 10 do
  107. Begin
  108. For J := 1 to 10 do
  109. Write(Matrix[I,J]:4);
  110. Writeln;
  111. End;}
  112. {//Задача 6.(?).
  113. //Дан массив [1..100]. Определить являются элементы массива отсортированными строго по возрастанию.
  114. var
  115. A: array[1..100] of Integer;
  116. I: Integer;
  117. Flag: Boolean;
  118. For I := 1 to 100 do
  119. A[I] := Random(20);
  120. I := 1;
  121. Flag := True;
  122. While Flag and (I < 100) do
  123. Begin
  124. If A[I] >= A[I + 1] Then
  125. Flag := False;
  126. Inc(I);
  127. End;
  128. If Flag Then
  129. Writeln('Sorted')
  130. Else
  131. Writeln('Not Sorted');
  132. Readln;}
  133.  
  134. {//Задача 7.(31).
  135. //Дана матрица 10х10, поменять местами столбцы с максимальной и минимальной суммами элементов.
  136. Var
  137. A: Array[1..10, 1..10] of Integer;
  138. Max, Min, I, J, IndexMin, IndexMax, Tmp: Integer;
  139. Randomize;
  140. For I := 1 to 10 do
  141. For J := 1 to 10 do
  142. A[I,J] := Random(30) - Random(30);
  143. For I := 1 to 10 do
  144. Begin
  145. For J := 1 to 10 do
  146. Write(A[I,J]:4);
  147. Writeln;
  148. End;
  149. Writeln;
  150. Min := 0;
  151. For I := 1 to 10 do
  152. Min := Min + A[I, 1];
  153. Max := Min;
  154. IndexMin := 1;
  155. IndexMax := 1;
  156. For I := 2 to 10 do
  157. begin
  158. Tmp := 0;
  159. For J := 1 to 10 do
  160. Tmp := Tmp + A[I,J];
  161. If (Tmp < Min) Then
  162. Begin
  163. IndexMin := I;
  164. Min := Tmp;
  165. End;
  166. If (Tmp > Max) Then
  167. Begin
  168. IndexMax := I;
  169. Max := Tmp;
  170. End;
  171. end;
  172. For I := 1 to 10 do
  173. Begin
  174. Tmp := A[I, IndexMin];
  175. A[I, IndexMin] := A[I, IndexMax];
  176. A[I, IndexMax] := Tmp;
  177. End;
  178. For I := 1 to 10 do
  179. Begin
  180. For J := 1 to 10 do
  181. Write(A[I,J]:4);
  182. Writeln;
  183. End;}
  184. {//Задача 8.(21).
  185. //Матрица 100х100 найти строку с минимальной суммой ,если таких строк несколько вывести с наименьшим номером.
  186. Var
  187. Arr: Array [1..100, 1..100] of Integer;
  188. TempIndex, I, J, Min, Sum: Integer;
  189. Randomize;
  190. For I := 1 to 100 do
  191. For J := 1 to 100 do
  192. Arr[I,J] := Random(100) - Random(100);
  193. Sum := 0;
  194. For J := 1 to 100 do
  195. Sum := Sum + Arr[1,J];
  196. Min := Sum;
  197. TempIndex := 1;
  198. For I := 2 to 100 do
  199. Begin
  200. Sum := 0;
  201. For J := 1 to 100 do
  202. Sum := Sum + Arr[I,J];
  203. If (Sum < Min) Then
  204. Begin
  205. Min := Sum;
  206. TempIndex := I;
  207. End;
  208. End;
  209. Writeln(Min);
  210. Writeln(TempIndex);
  211. For I := 1 to 100 do
  212. Write(Arr[TempIndex, I]:4);}
  213. {//Задача 9.(?).
  214. //найти НОД, найти НОК ,разложить на простые множители.
  215. Var
  216. I, A, B, Nod, Nok: Integer;
  217. Readln(A);
  218. Readln(B);
  219. I := 1;
  220. Nok := 1;
  221. While (Nok mod B) <> 0 do
  222. Begin
  223. Nok := A * I;
  224. Inc(I);
  225. End;
  226. Writeln(Nok);
  227. Nod := A * B div Nok;
  228. Writeln(Nod);
  229. Writeln;
  230. I := 2;
  231. Write('A = 1');
  232. While (A > 1) do
  233. Begin
  234. If (A mod I = 0) Then
  235. Begin
  236. Write('*', I);
  237. A := A div I;
  238. End
  239. Else
  240. Inc(I);
  241. End;
  242. Writeln;
  243. I := 2;
  244. Write('B = 1');
  245. While (B > 1) do
  246. Begin
  247. If (B mod I = 0) Then
  248. Begin
  249. Write('*', I);
  250. B := B div I;
  251. End
  252. Else
  253. Inc(I);
  254. End;}
  255. { //Задача 10.(29).
  256. //Дана матрица 8х8 и её шахматная раскраска. Элементы на белых клетках взять по модулю, элементы на черных взять с противоположным знаком и вывести матрицу.
  257. Var
  258. A: Array [1..8, 1..8] of Integer;
  259. I, J: Integer;
  260. Begin
  261. Randomize;
  262. For I := 1 to 8 do
  263. Begin
  264. For J := 1 to 8 do
  265. Begin
  266. A[I,J] := Random(20) - Random(20);
  267. Write(A[I,J]:4);
  268. End;
  269. Writeln;
  270. End;
  271. Writeln;
  272. For I := 1 to 8 do
  273. For J := 1 to 8 do
  274. If (I + J) mod 2 = 0 Then
  275. A[I,J] := -A[I,J]
  276. Else
  277. A[I,J] := Abs(A[I,J]);
  278. For I := 1 to 8 do
  279. Begin
  280. For J := 1 to 8 do
  281. Write(A[I,J]:4);
  282. Writeln;
  283. End;}
  284. {Задача 11.(?).
  285. Дана запись десятичного числа, убрать в нем четные цифры.
  286. Var
  287. I, Numb: Integer;
  288. Str: String;
  289. Readln(Numb);
  290. Str := IntToStr(Numb);
  291. For I := Length(Str) downto 1 do
  292. If StrToInt(Str[I]) mod 2 = 0 Then
  293. Delete(Str, I, 1);
  294. Writeln(Str);}
  295.  
  296.  
  297. {//Задача 12.(42).
  298. //Есть строка S состоящая из латинских символов. Нужно зашифровать строку по
  299. //типу A - D, B - E, C - F, ... W - Z, X - A, Y - B, Z - C. Вывести зашифрованную строку.
  300. Var
  301. Str: String;
  302. I: Integer;
  303. Readln(Str);
  304. Str := UpperCase(Str);
  305. For I := 1 to Length(Str) do
  306. Str[I] := Chr((Ord(Str[I]) - Ord('A') + 3) Mod 26 + Ord('A'));
  307. Writeln(Str); }
  308. {//Задача 13.(?).
  309. //Дана строка S , содержащая имя файла(например,
  310. //C:\WebServers\home\testsite\www\myfile.txt) выделить из этой строки имя файла
  311. //без расширения и вывести его.
  312. Var
  313. I, J, Temp: Integer;
  314. Str, Name: String;
  315. Name := '';
  316. Readln(Str);
  317. J := 0;
  318. For I := 1 to Length(Str) do
  319. If Str[I] = '\' Then
  320. Inc(J);
  321. I := 0;
  322. Temp := 1;
  323. While (I <> J) do
  324. Begin
  325. If Str[Temp] = '\' Then
  326. Inc(I);
  327. Inc(Temp);
  328. End;
  329. While (Str[Temp] <> '.') do
  330. Begin
  331. Name := Name + Str[Temp];
  332. Inc(Temp);
  333. End;
  334. Writeln(Name);}
  335. {//Задача 14.(26).
  336. //Дана матрица 10×10. Заменить последние элементы строк суммой предыдущих элементов строки.
  337. Var
  338. I, J, Sum: Integer;
  339. Arr: Array [1..10, 1..10] of Integer;
  340. Randomize;
  341. For I := 1 to 10 do
  342. Begin
  343. For J := 1 to 10 do
  344. Begin
  345. Arr[I,J] := Random(50) - Random(50);
  346. Write(Arr[I,J]:4);
  347. End;
  348. Writeln;
  349. End;
  350. Writeln;
  351. For I := 1 to 10 do
  352. Begin
  353. Sum := 0;
  354. For J := 1 to 9 do
  355. Sum := Sum + Arr[I,J];
  356. Arr[I,10] := Sum;
  357. End;
  358. For I := 1 to 10 do
  359. Begin
  360. For J := 1 to 10 do
  361. Write(Arr[I,J]:4);
  362. Writeln;
  363. End;}
  364. {Дано натуральное число N. Нужно вывести количество повторений цифр от 0 до
  365. 9, которые присутствуют в числе N.
  366. (то есть, если дано число 12134712, то вывод такой:
  367. цифра 0 повторяется 0 раз
  368. цифра 1 повторяется 3 раза
  369. цифра 2 повторяется 2 раза
  370. цифра 3 повторяется 1 раз
  371. ...
  372. цифра 9 повторяется 0 раз).
  373. Var
  374. I, Numb, Counter: Integer;
  375. Str: String;
  376. Readln(Str);
  377. Counter := 0;
  378. While (Counter < 10) do
  379. Begin
  380. Numb := 0;
  381. For I := 1 to Length(Str) do
  382. If (StrToInt(Str[I]) = Counter) Then
  383. Inc(Numb);
  384. Writeln('Цифра ', Counter, ' встречается ', Numb, ' раз');
  385. Inc(Counter);
  386. End;}
  387.  
  388.  
  389. {//Задача 16.(6).
  390. //Даны два числа M и N. Определить являются ли эти числа взаимно простыми.
  391. //Ответ вывести в виде ДА или НЕТ.
  392. Var
  393. M, N, Coef: Integer;
  394. Readln(N);
  395. Readln(M);
  396. While N <> M do
  397. If N > M Then
  398. Dec(N, M)
  399. Else
  400. Dec(M, N);
  401. Coef := N;
  402. If Coef = 1 Then
  403. Writeln('Yes')
  404. Else
  405. Writeln('No');}
  406.  
  407. //Задача 17.(?).
  408. //Дана строка из пробелов и последовательности латинских букв. найти все слова
  409. //начинающиеся и заканчивающиеся с одной и той же буквы, если таких нет,
  410. //вывести, что нет.
  411. {Procedure Find(Str: String);
  412. Var
  413. Finder, I: Integer;
  414. Temp: String;
  415. Begin
  416. Finder := 0;
  417. I := 1;
  418. While I < Length(Str) do
  419. Begin
  420. Temp := '';
  421. While (Str[I] <> ' ') do
  422. Begin
  423. Temp := Temp + Str[I];
  424. Inc(I);
  425. End;
  426. If LowerCase(Temp[1]) = Temp[Length(Temp)] Then
  427. Begin
  428. Writeln(Temp);
  429. Inc(Finder);
  430. End;
  431. Inc(I);
  432. End;
  433. If Finder = 0 Then
  434. Writeln('No');
  435. End;
  436.  
  437. Var
  438. Str, Temp: String;
  439. Finder, I: Integer;
  440.  
  441. Begin
  442. Readln(Str);
  443. Str := Trim(Str);
  444. Str := Str + ' ';
  445. Find(Str);}
  446.  
  447. {//Задача 18.(?).
  448. //Дано натуральное число N. вывести это число тройками через пробелы, начиная с конца. Например: 1234567 ->1 234 567.
  449. Var
  450. N, I: Integer;
  451. Str: String;
  452. Begin
  453. Readln(N);
  454. Str := IntToStr(N);
  455. I := Length(Str);
  456. While (I > 3) do
  457. Begin
  458. Dec(I, 3);
  459. Insert(' ', Str, I + 1);
  460. End;
  461. Writeln(Str);}
  462. { //Задача 19.(34).
  463. //Дана последовательность слов разделенная одним или несколькими пробелами,
  464. //вывести слово максимальной длины.
  465. Procedure New(Str: String);
  466. Var
  467. Temp, I, Counter: Integer;
  468. Word, TempWord: String;
  469. Begin
  470. Temp := 0;
  471. I := 1;
  472. While (I <= Length(Str)) do
  473. Begin
  474. TempWord := '';
  475. Counter := 0;
  476. While (Str[I] <> ' ') and (I <= Length(Str)) do
  477. Begin
  478. TempWord := TempWord + Str[I];
  479. Inc(I);
  480. Inc(Counter);
  481. End;
  482. If (Temp < Counter) Then
  483. Begin
  484. Temp := Counter;
  485. Word := TempWord;
  486. End;
  487. Inc(I);
  488. End;
  489. Writeln(Word);
  490. End;
  491. Var
  492. I, Temp, Counter: Integer;
  493. Str, TempWord, Word: String;
  494. Begin
  495. Readln(Str);
  496. Str := Trim(Str);
  497. New(Str);
  498. Readln;}
  499.  
  500. {//Задача 20.(?).
  501. //Преобразовать строку с буквами в строку из номера их в алфавите
  502. //ABCDE->12345.
  503.  
  504. Var
  505. Str, StrNumb: String;
  506. I, Temp: Integer;
  507. Begin
  508. Readln(Str);
  509. StrNumb := '';
  510. For I := 1 to Length(Str) do
  511. Begin
  512. If (Ord(Str[I]) < Ord('a')) Then
  513. Temp := 32
  514. Else
  515. Temp := 0;
  516. StrNumb := StrNumb + IntToStr(Ord(Str[I]) - Ord('a') + 1 + Temp);
  517. // Или просто LowerCase всю строку и IntToStr(Ord(Str[I]) - Ord('a') + 1);
  518. End;
  519. Writeln(StrNumb);}
  520.  
  521. {//Задача 21.(?).
  522. //Даны числа D , M , Y - номер дня в месяце, номер месяца в году и год.
  523. //определить порядковый номер дня, учитывая високосность
  524.  
  525. Var
  526. I, D, M, Y, DaySum, Err: Integer;
  527. Date, Current: String;
  528. Begin
  529. Readln(Date);
  530. DaySum := 0;
  531. Current := Copy(Date,1,Pos('.',Date)-1);
  532. Delete(Date, 1, Pos('.', Date));
  533. Val(Current, D, Err);
  534. Current := Copy(Date,1,Pos('.',Date)-1);
  535. Delete(Date, 1, Pos('.', Date));
  536. Val(Current,M,err);
  537. Val(Date,Y,err);
  538. If Y mod 4 = 0 Then
  539. Inc(DaySum);
  540. For I := 1 to M - 1 do //M - 1, чтобы не учитывать еще весь не пройденный месяц выбранного дня
  541. Begin
  542. If (I = 2) Then
  543. Inc(DaySum, 28);
  544. If (I <= 7) Then
  545. If (I mod 2 = 0) and (I <> 2) Then
  546. Inc(DaySum, 30)
  547. Else
  548. Inc(DaySum, 31)
  549. Else
  550. If (I mod 2 = 0) Then
  551. Inc(DaySum, 31)
  552. Else
  553. Inc(DaySum, 30);
  554.  
  555. End;
  556. Inc(DaySum, D);
  557. Writeln(DaySum);}
  558. {Var
  559. Str: String;
  560.  
  561.  
  562. Begin
  563. //Задача 22.(?).
  564. //Пользователь вводит цифры в строку в формате 'hh:mm:ss', это время. Надо
  565. //проверить правильность ввода и вывести на консоль: да, нет. Там тип нельзя,
  566. //чтобы было 24 часа, 63 секунды и т.д.
  567. Try
  568. Readln(Str);
  569. If (StrToInt(Copy(Str,1,2)) > 23) or (StrToInt(Copy(Str,4,2)) > 59) or (StrToInt(Copy(Str,7,2)) > 59) Then
  570. Writeln('No')
  571. Else
  572. Writeln('Yes')
  573. Except
  574. Writeln('No');
  575. End;}
  576. {//Задача 23 (28).
  577. //Дана матрица 10*10
  578. //Найти в строке нулевой элемент и все элементы после нулевого сложить по
  579. //модулю
  580. Var
  581. Arr: Array[1..10, 1..10] of Integer;
  582. I, J, Sum: Integer;
  583. IsZero: Boolean;
  584. Begin
  585. Randomize;
  586. For I := 1 to 10 do
  587. Begin
  588. For J := 1 to 10 do
  589. Begin
  590. Arr[I,J] := Random(20) - Random(20);
  591. Write(Arr[I,J]:4);
  592. End;
  593. Writeln;
  594. End;
  595. For I := 1 to 10 do
  596. Begin
  597. Sum := 0;
  598. IsZero := False;
  599. For J := 1 to 10 do
  600. Begin
  601. If (Arr[I,J] = 0) Then
  602. IsZero := True;
  603. If (IsZero) Then
  604. Inc(Sum, Abs(Arr[I,J]));
  605. End;
  606. If (isZero) then
  607. Writeln('Row ', I, '. Sum : ', Sum);
  608. End;}
  609. {//Задача 24(37.)
  610. //проверить правильно определён идентификатор, первый символ должен быть латинской
  611. //буквой, все остальное цифра или буква
  612. Var
  613. Str: String;
  614. I: Integer;
  615. IsCorrect: Boolean;
  616. Begin
  617. Readln(Str);
  618. IsCorrect := True;
  619. Str := UpperCase(Str);
  620. If (Ord(Str[1]) - Ord('A') < 0) or (Ord(Str[1]) - Ord('A') > 25) Then
  621. IsCorrect := False;
  622. I := 2;
  623. While (I < Length(Str)) and IsCorrect do
  624. Begin
  625. If ((Ord(Str[I]) - Ord('A') < 0) or (Ord(Str[I]) - Ord('A') > 25)) and ((Ord(Str[I]) - Ord('0') < 0) or (Ord(Str[I]) - Ord('0') > 9)) Then
  626. IsCorrect := False;
  627. Inc(I);
  628. End;
  629. If (IsCorrect) Then
  630. Writeln('Good')
  631. Else
  632. Writeln('Bad');
  633. Readln;
  634. End.}
  635. {//Задача 25(?)
  636. //дано натуральное число, найти сумму четных цифр
  637. Var
  638. N, I, Sum: Integer;
  639. Str: String;
  640. Begin
  641. Readln(N);
  642. Sum := 0;
  643. Str := IntToStr(N);
  644. For I := 1 to Length(Str) do
  645. If Not(Odd(StrToInt(Str[I]))) Then
  646. Inc(Sum, StrToInt(Str[I]));
  647. Writeln(Sum);}
  648. {//Задача 28(33).
  649. //Дана строка с пробелами. Первую букву каждого слова сделать заглавной
  650. Var
  651. Str: String;
  652. I: Integer;
  653. Begin
  654. Readln(Str);
  655. Str := Trim(Str);
  656. Str[1] := UpCase(Str[1]);
  657. For I := 2 to Length(Str) do
  658. If (Str[I - 1] = ' ') and (Str[I] <> ' ') Then
  659. Str[I] := UpCase(Str[I]);
  660. Writeln(Str);}
  661.  
  662. {//+1 задачка с номером 4 у Оношко:
  663. //Дано натуральное число N. Определить,является ли оно простым. Вывести "Да" или "Нет".
  664. Var
  665. Counter, I, N: Integer;
  666. Begin
  667. Readln(N);
  668. Counter := 0;
  669. I := 1;
  670. While (I < N div 2) and (Counter <> 2) do
  671. Begin
  672. If N Mod I = 0 Then
  673. Inc(Counter);
  674. Inc(I);
  675. End;
  676. If (Counter = 2) Then //2, потому что, когда 1, то она инкрементирует Counter
  677. Writeln('Ne Prostoe')
  678. Else
  679. Writeln('Prostoe');}
  680.  
  681. Begin
  682.  
  683. Readln;
  684. End.
  685.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement