Исправление ошибок. - Pascal
Формулировка задачи:
товарищи мозги дайте пожалуста правельное решение по паскалю помогите исправеть ошибки напешите как надо пожалуста а не посвоему. ребят зарание вам БОЛЬШОЕ СПАСИБО надеюсь на вас мои дорогие друзь
+7. Найти все различающиеся элементы целочисленной квадратной матрицы размерностью nxn.
+9. Записать в текстовый файл N символов. Выполнить следующие операции с созданным файлом:
- Выяснить, чего в нем больше: русских букв или цифр;
- Выяснить, вхо¬дит ли данное слово в указанный текст, и если да, то сколько раз;
- Составить в ал¬фавитном порядке список всех слов, встречающихся в этом тексте.
+10. Составить программу, вычеркивающую любую букву из данного текста.
у восьмой нет условия
program p71; const n=10;// n только от 2 до 15! var Matrix:array[1..n,1..n]of byte;//только byte! uni:set of byte; i,j:byte; begin randomize;//инициализация генератора случайных чисел uni:=[]; //создание матрицы for i:=1 to n do begin for j:=1 to n do begin Matrix[i,j]:=Random(128);//генератор случайных чисел write(Matrix[i,j]:3,' '); end; writeln; end; //поиск уникальных элементов writeln; writeln; for i:=1 to n do for j:=1 to n do uni:=uni + [Matrix[i,j]]; write('Unikalnye chisla: '); for i:=0 to 255 do if i in uni then write(i:3,' '); writeln; readln; end. program p9; uses crt; const CEndOfFile='@';//Символ конца файла. Можно задать любой символ или их комбинацию type TPDict=^TDict; TDict=record data:string; next:TPDict; end; var f:text; s,n,w:string; RusLet,Nums,Words:integer; Dict:TPDict; //функция подсчёта цифр function CountNums(data:string):integer; var res,i:integer; begin res:=0; for i:=1 to length(data) do if data[i] in ['0'..'9'] then inc(res); CountNums:=res; end; //функция подсчёта русских букв function CountRusLet(data:string):integer; var res,i:integer; begin res:=0; for i:=1 to length(data) do if byte(data[i]) in [128..255] then inc(res);//считаем НЕанглийские буквы //Если надо считать другие символы - их коды ввести в квадратных скобках вместо [128..255] CountRusLet:=res; end; //функция, приводящая все английские буквы к верхнему регистру function UpCaseStr(data:string):string; var i:integer; begin for i:=1 to length(data) do data[i]:=UpCase(data[i]); UpCaseStr:=data; end; //функция подсчёта вхождения слов function CountWords(data,wrd:string):integer; var n,res,i:integer; s:string; begin res:=0; data:=UpCaseStr(data); wrd:=UpCaseStr(wrd); s:=''; for i:=1 to length(data) do if byte(data[i]) > 32 then s:=s+data[i] else begin if s <> '' then begin if s=wrd then inc(res); s:=''; end; end; if s=wrd then inc(res); CountWords:=res; end; //функция проверяет наличие заданного слова в словаре function IsWordExist(pdict:TPDict;wrd:string):boolean; var res:boolean; begin res:=false; while pdict <> nil do begin if UpCaseStr(pdict^.data)=UpCaseStr(wrd) then begin res:=true; break; end; pdict:=pdict^.next; end; IsWordExist:=res; end; //процедура создания словаря (если существует - дополняет) //строка не обрабатывается procedure CreateDict(var pdict:TPDict;dat:string); var wlist:TPDict; begin if pdict = nil then begin new(pdict); pdict^.data:=dat; pdict^.next:=nil; end else begin wlist:=pdict; while wlist^.next <> nil do wlist:=wlist^.next; new(wlist^.next); wlist:=wlist^.next; wlist^.next:=nil; wlist^.data:=dat; end; end; //процедура пополнения словаря (если не существует - создаёт) //автоматически разделяет строку на слова procedure StrToDict(var pdict:TPDict;data:string); var s:string; i:integer; begin s:=''; for i:=1 to length(data) do if byte(data[i]) > 32 then s:=s+data[i] else begin if s <> '' then begin if not IsWordExist(pdict,s) then CreateDict(pdict,s); s:=''; end; end; if s <> '' then if not IsWordExist(pdict,s) then CreateDict(pdict,s); end; //процедура сортировки слов в словаре procedure SortDict(var pdict:TPDict); var head,tmp1,tmp2,nf:TPDict; n:string; begin head:=nil; nf:=pdict; repeat tmp1:=nf; tmp2:=tmp1; n:=tmp1^.data; while tmp1 <> nil do begin if UpCaseStr(tmp1^.data) < UpCaseStr(n) then begin tmp2:=tmp1; n:=tmp1^.data; end; tmp1:=tmp1^.next; end; tmp1:=nf; if tmp1 = tmp2 then nf:=tmp2^.next else begin while tmp1 <> nil do begin if tmp1^.next <> tmp2 then tmp1:=tmp1^.next else begin tmp1^.next:=tmp2^.next; break; end; end; end; tmp2^.next:=nil; if head=nil then head:=tmp2 else begin tmp1:=head; while tmp1^.next <> nil do tmp1:=tmp1^.next; tmp1^.next:=tmp2; end; until nf=nil; pdict:=head; end; //процедура сохранения словаря в файл procedure WriteDict(pdict:TPDict;path:string); var f:text; begin assign(f,path); rewrite(f); while pdict <> nil do begin writeln(f,pdict^.data); pdict:=pdict^.next; end; close(f); end; //Освобождение памяти от нашего словарика //(мы ж культурные и должны за собой прибраться ) procedure DestroyDict(var pdict:TPDict); var tmp1, tmp2:TPDict; begin tmp1:=pdict; pdict:=nil; while tmp1 <> nil do begin tmp2:=tmp1^.next; Dispose(tmp1); tmp1:=tmp2; end; end; begin //инициализация переменных Nums:=0; RusLet:=0; Words:=0; Dict:=nil; //ввод пути и создание файла clrscr; write('Vvedite put k failu: '); readln(n); assign(f,n); rewrite(f); clrscr; //ввод текста и запись его в файл writeln('Vvedite tekst.'); writeln('Dlja okonchania vvedite na novoj stroke "@" (bez kavychek).'); writeln; readln(s); while s<>CEndOfFile do begin writeln(f,s); readln(s); end; close(f); //ввод слова для поиска clrscr; write('Vvedite slovo dlja poiska: '); readln(w); //открытие только что записанного файла на чтение //и его анализ в соответствии с заданием assign(f,n); reset(f); while not eof(f) do begin readln(f,s); Nums:=Nums+CountNums(s); RusLet:=RusLet+CountRusLet(s); Words:=Words+CountWords(s,w); StrToDict(Dict,s); end; close(f); SortDict(Dict); clrscr; if Nums > RusLet then writeln('Tsyfr bolshe, chem russkih bukv') else if Nums < RusLet then writeln('Russkih bukv bolshe, chem tsyfr') else writeln('Russkih bukv i tsyfr porovnu'); writeln('Slovo "',w,'" vhodit v tekst ',Words,' raz.'); write('Vvedite put k failu slovarja: '); readln(s); WriteDict(Dict,s); DestroyDict(Dict); writeln; writeln('Press [Enter] for exit.'); readln; end. program p10; var s:string; c:char; n:integer; f,h:text; begin //начало основной программы write('Type path to input file: '); readln(s); assign(f,s); reset(f); write('Type path to output file: '); readln(s); assign(h,s); rewrite(h); writeln; write('Input letter: '); readln(c); while not eof(f) do begin readln(f,s); n:=Pos(c,s); while n > 0 do begin Delete(s,n,1); n:=Pos(c,s); end; writeln(h,s); end; writeln; writeln('Finished. Press [Enter] for exit.'); readln; end.
Решение задачи: «Исправление ошибок.»
textual
Листинг программы
while not eof(f) do
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д