IXOXO | Дата: Суббота, 12.05.2012, 06:00 | Сообщение # 1 |
Новичок
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Программа написана и работает, но только в "Turbo Pascal АВС" из-за "Chr". Как заставить работать ее в "Turbo Pascal 7.0"?
№ вар. Задание M<=10 N<=-- Файл с данными RUS.TXT Одномерный массив строк длиной по 80 символов заполнить из файла. Используя функцию, найти, какая русская буква (не различая прописные и строчные) встречается чаще. К функции обращаться, передавая ей строчную и прописную буквы и символьную строку массива. Распечатать исходный массив процедурой. Какая русская буква встречается чаще
PROGRAM MaxChar; TYPE Elem= string[33]; mas = array[1..10,1..80] of char; mas2 = array[1..32] of integer; CONST Zad: Elem='Задайте число элементов массива: '; VAR AR: mas2; A: mas; M,max,maxn,I,J : integer; t: char; Fin, Fout : text;
{ Процедура ввода размера массива } PROCEDURE InpMN(Txt:Elem; MaxK:integer; Var Kol:integer); Begin WriteLn; Write(Txt); Repeat Readln(Kol); If Kol>MaxK then Write('Можно ввести не более ',MaxK,'. Задайте снова: '); until Kol<=MaxK; End;
{ Процедура вывода в файл } PROCEDURE PrintMas(Txt: string; A: mas; NKol: integer); VAR i,j : integer; Begin Writeln(Fout,Txt); For i:= 1 to NKol do for j:=1 to 80 do begin Write(Fout,A[i][j]); end; End;
{Функция вернет количество элементов номер _i в строке N массива A} function EQ(_i, N :integer; A: mas): integer; var _j,ar: integer; begin for _j:=1 to 80 do if ( (A[N,_j]=Chr(191+_i)) or (A[N,_j]=Chr(223+_i)) ) then {если A[N,j]= А или а} begin ar:=ar+1; end; EQ:=ar; end;
BEGIN { Основная программа } InpMn(Zad,10,M); {Задать число строк (10 макс)} Assign(Fout,'Lab7.txt'); ReWrite(Fout); Assign(Fin,'_Data\Rus.txt'); ReSet(Fin);
for i:=1 to M do for j:=1 to 80 do Read(Fin,A[i][j]); Close(Fin);
PrintMas (' Исходный массив:', A,M);
For j:=1 to M do for i:=1 to 32 do AR[i]:=AR[i]+EQ(i, j, A);{добавляет количество символов номер i в алфавите, содержащихся в строке номер j данного текстового массива}
for i:=1 to 32 do write(AR[i],'; ');
for i:=1 to 32 do if(AR[i]>max) then begin max:=AR[i]; maxn:=i; end; t:=chr(maxn+191); Writeln(Fout); Writeln(Fout); Write(Fout,'Наиболее часто (',max,' раз) встречается буква ', t);
Close(Fout); END.
|
|
| |
Seqular | Дата: Среда, 22.08.2012, 23:05 | Сообщение # 2 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Не пробовали после Program написать?
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |