Исправление ошибок. - Pascal

Узнай цену своей работы

Формулировка задачи:

товарищи мозги дайте пожалуста правельное решение по паскалю помогите исправеть ошибки напешите как надо пожалуста а не посвоему. ребят зарание вам БОЛЬШОЕ СПАСИБО надеюсь на вас мои дорогие друзь +7. Найти все различающиеся элементы целочисленной квадратной матрицы размерностью nxn. +9. Записать в текстовый файл N символов. Выполнить следующие операции с созданным файлом: - Выяснить, чего в нем больше: русских букв или цифр; - Выяснить, вхо¬дит ли данное слово в указанный текст, и если да, то сколько раз; - Составить в ал¬фавитном порядке список всех слов, встречающихся в этом тексте. +10. Составить программу, вычеркивающую любую букву из данного текста. у восьмой нет условия
Листинг программы
  1. program p71;
  2. const
  3. n=10;// n только от 2 до 15!
  4. var
  5. Matrix:array[1..n,1..n]of byte;//только byte!
  6. uni:set of byte;
  7. i,j:byte;
  8. begin
  9. randomize;//инициализация генератора случайных чисел
  10. uni:=[];
  11. //создание матрицы
  12. for i:=1 to n do
  13. begin
  14. for j:=1 to n do
  15. begin
  16. Matrix[i,j]:=Random(128);//генератор случайных чисел
  17. write(Matrix[i,j]:3,' ');
  18. end;
  19. writeln;
  20. end;
  21. //поиск уникальных элементов
  22. writeln;
  23. writeln;
  24. for i:=1 to n do
  25. for j:=1 to n do uni:=uni + [Matrix[i,j]];
  26. write('Unikalnye chisla: ');
  27. for i:=0 to 255 do
  28. if i in uni then write(i:3,' ');
  29. writeln;
  30. readln;
  31. end.
  32. program p9;
  33. uses crt;
  34. const
  35. CEndOfFile='@';//Символ конца файла. Можно задать любой символ или их комбинацию
  36. type
  37. TPDict=^TDict;
  38. TDict=record
  39. data:string;
  40. next:TPDict;
  41. end;
  42. var
  43. f:text;
  44. s,n,w:string;
  45. RusLet,Nums,Words:integer;
  46. Dict:TPDict;
  47. //функция подсчёта цифр
  48. function CountNums(data:string):integer;
  49. var
  50. res,i:integer;
  51. begin
  52. res:=0;
  53. for i:=1 to length(data) do
  54. if data[i] in ['0'..'9'] then inc(res);
  55. CountNums:=res;
  56. end;
  57. //функция подсчёта русских букв
  58. function CountRusLet(data:string):integer;
  59. var
  60. res,i:integer;
  61. begin
  62. res:=0;
  63. for i:=1 to length(data) do
  64. if byte(data[i]) in [128..255] then inc(res);//считаем НЕанглийские буквы
  65. //Если надо считать другие символы - их коды ввести в квадратных скобках вместо [128..255]
  66. CountRusLet:=res;
  67. end;
  68. //функция, приводящая все английские буквы к верхнему регистру
  69. function UpCaseStr(data:string):string;
  70. var
  71. i:integer;
  72. begin
  73. for i:=1 to length(data) do data[i]:=UpCase(data[i]);
  74. UpCaseStr:=data;
  75. end;
  76. //функция подсчёта вхождения слов
  77. function CountWords(data,wrd:string):integer;
  78. var
  79. n,res,i:integer;
  80. s:string;
  81. begin
  82. res:=0;
  83. data:=UpCaseStr(data);
  84. wrd:=UpCaseStr(wrd);
  85. s:='';
  86. for i:=1 to length(data) do
  87. if byte(data[i]) > 32 then s:=s+data[i] else
  88. begin
  89. if s <> '' then
  90. begin
  91. if s=wrd then inc(res);
  92. s:='';
  93. end;
  94. end;
  95. if s=wrd then inc(res);
  96. CountWords:=res;
  97. end;
  98. //функция проверяет наличие заданного слова в словаре
  99. function IsWordExist(pdict:TPDict;wrd:string):boolean;
  100. var
  101. res:boolean;
  102. begin
  103. res:=false;
  104. while pdict <> nil do
  105. begin
  106. if UpCaseStr(pdict^.data)=UpCaseStr(wrd) then
  107. begin
  108. res:=true;
  109. break;
  110. end;
  111. pdict:=pdict^.next;
  112. end;
  113. IsWordExist:=res;
  114. end;
  115. //процедура создания словаря (если существует - дополняет)
  116. //строка не обрабатывается
  117. procedure CreateDict(var pdict:TPDict;dat:string);
  118. var
  119. wlist:TPDict;
  120. begin
  121. if pdict = nil then
  122. begin
  123. new(pdict);
  124. pdict^.data:=dat;
  125. pdict^.next:=nil;
  126. end else
  127. begin
  128. wlist:=pdict;
  129. while wlist^.next <> nil do wlist:=wlist^.next;
  130. new(wlist^.next);
  131. wlist:=wlist^.next;
  132. wlist^.next:=nil;
  133. wlist^.data:=dat;
  134. end;
  135. end;
  136. //процедура пополнения словаря (если не существует - создаёт)
  137. //автоматически разделяет строку на слова
  138. procedure StrToDict(var pdict:TPDict;data:string);
  139. var
  140. s:string;
  141. i:integer;
  142. begin
  143. s:='';
  144. for i:=1 to length(data) do
  145. if byte(data[i]) > 32 then s:=s+data[i] else
  146. begin
  147. if s <> '' then
  148. begin
  149. if not IsWordExist(pdict,s) then CreateDict(pdict,s);
  150. s:='';
  151. end;
  152. end;
  153. if s <> '' then
  154. if not IsWordExist(pdict,s) then CreateDict(pdict,s);
  155. end;
  156. //процедура сортировки слов в словаре
  157. procedure SortDict(var pdict:TPDict);
  158. var
  159. head,tmp1,tmp2,nf:TPDict;
  160. n:string;
  161. begin
  162. head:=nil;
  163. nf:=pdict;
  164. repeat
  165. tmp1:=nf;
  166. tmp2:=tmp1;
  167. n:=tmp1^.data;
  168. while tmp1 <> nil do
  169. begin
  170. if UpCaseStr(tmp1^.data) < UpCaseStr(n) then
  171. begin
  172. tmp2:=tmp1;
  173. n:=tmp1^.data;
  174. end;
  175. tmp1:=tmp1^.next;
  176. end;
  177. tmp1:=nf;
  178. if tmp1 = tmp2 then nf:=tmp2^.next else
  179. begin
  180. while tmp1 <> nil do
  181. begin
  182. if tmp1^.next <> tmp2 then tmp1:=tmp1^.next else
  183. begin
  184. tmp1^.next:=tmp2^.next;
  185. break;
  186. end;
  187. end;
  188. end;
  189. tmp2^.next:=nil;
  190. if head=nil then head:=tmp2 else
  191. begin
  192. tmp1:=head;
  193. while tmp1^.next <> nil do tmp1:=tmp1^.next;
  194. tmp1^.next:=tmp2;
  195. end;
  196. until nf=nil;
  197. pdict:=head;
  198. end;
  199. //процедура сохранения словаря в файл
  200. procedure WriteDict(pdict:TPDict;path:string);
  201. var
  202. f:text;
  203. begin
  204. assign(f,path);
  205. rewrite(f);
  206. while pdict <> nil do
  207. begin
  208. writeln(f,pdict^.data);
  209. pdict:=pdict^.next;
  210. end;
  211. close(f);
  212. end;
  213. //Освобождение памяти от нашего словарика
  214. //(мы ж культурные и должны за собой прибраться )
  215. procedure DestroyDict(var pdict:TPDict);
  216. var
  217. tmp1, tmp2:TPDict;
  218. begin
  219. tmp1:=pdict;
  220. pdict:=nil;
  221. while tmp1 <> nil do
  222. begin
  223. tmp2:=tmp1^.next;
  224. Dispose(tmp1);
  225. tmp1:=tmp2;
  226. end;
  227. end;
  228. begin
  229. //инициализация переменных
  230. Nums:=0;
  231. RusLet:=0;
  232. Words:=0;
  233. Dict:=nil;
  234. //ввод пути и создание файла
  235. clrscr;
  236. write('Vvedite put k failu: ');
  237. readln(n);
  238. assign(f,n);
  239. rewrite(f);
  240. clrscr;
  241. //ввод текста и запись его в файл
  242. writeln('Vvedite tekst.');
  243. writeln('Dlja okonchania vvedite na novoj stroke "@" (bez kavychek).');
  244. writeln;
  245. readln(s);
  246. while s<>CEndOfFile do
  247. begin
  248. writeln(f,s);
  249. readln(s);
  250. end;
  251. close(f);
  252. //ввод слова для поиска
  253. clrscr;
  254. write('Vvedite slovo dlja poiska: ');
  255. readln(w);
  256. //открытие только что записанного файла на чтение
  257. //и его анализ в соответствии с заданием
  258. assign(f,n);
  259. reset(f);
  260. while not eof(f) do
  261. begin
  262. readln(f,s);
  263. Nums:=Nums+CountNums(s);
  264. RusLet:=RusLet+CountRusLet(s);
  265. Words:=Words+CountWords(s,w);
  266. StrToDict(Dict,s);
  267. end;
  268. close(f);
  269. SortDict(Dict);
  270. clrscr;
  271. if Nums > RusLet then writeln('Tsyfr bolshe, chem russkih bukv') else
  272. if Nums < RusLet then writeln('Russkih bukv bolshe, chem tsyfr') else writeln('Russkih bukv i tsyfr porovnu');
  273. writeln('Slovo "',w,'" vhodit v tekst ',Words,' raz.');
  274. write('Vvedite put k failu slovarja: ');
  275. readln(s);
  276. WriteDict(Dict,s);
  277. DestroyDict(Dict);
  278. writeln;
  279. writeln('Press [Enter] for exit.');
  280. readln;
  281. end.
  282. program p10;
  283. var
  284. s:string;
  285. c:char;
  286. n:integer;
  287. f,h:text;
  288. begin
  289. //начало основной программы
  290. write('Type path to input file: ');
  291. readln(s);
  292. assign(f,s);
  293. reset(f);
  294. write('Type path to output file: ');
  295. readln(s);
  296. assign(h,s);
  297. rewrite(h);
  298. writeln;
  299. write('Input letter: ');
  300. readln(c);
  301. while not eof(f) do
  302. begin
  303. readln(f,s);
  304. n:=Pos(c,s);
  305. while n > 0 do
  306. begin
  307. Delete(s,n,1);
  308. n:=Pos(c,s);
  309. end;
  310. writeln(h,s);
  311. end;
  312. writeln;
  313. writeln('Finished. Press [Enter] for exit.');
  314. readln;
  315. end.

Решение задачи: «Исправление ошибок.»

textual
Листинг программы
  1.  while not eof(f) do

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы