PDA

Просмотр полной версии : Динамические структуры данных, работа с файлами (TurboPascal)



Raze
15.02.2007, 16:57
Помогите пожалуйста решить 2 задачи, кто может и у кого есть время. Или выложите похожие задачи, чтобы мне разобраться в алгоритме. Просто я только начал изучать Turbo Pascal и многих вещей ещё не знаю. Помогите, если не сложно. Заранее всем спасибо!

1. Дана квадратная матрица А порядка n. Получить матрицу (A-3*E)^2, где Е – единичная матрица порядка n. (Динамические структуры данных)
2. Дан файл на языке Паскаль. Проверить правильность расстановки операторов begin и end. Если ли есть лишние, вывести в какой строке. (Работа с файлами)

Игорь Акопян
15.02.2007, 17:45
стараемся размещать темы в правильном разделе. ;)

Хыиуду
16.02.2007, 10:51
A-3E:
for i:=1 to n do A[i,i]:=A[i,i]-3.
А вот как ее в квадрат возводить, писать не буду, ибо перемножение матриц есть мозгоедство :)
По второй - идешь, считываешь файл по строке, разбиваешь каждую строку на слова (см. раздел Алгоритмы), проверяшь, не является ли слово begin или end. Если begin - увеличиваешь счетчик на 1, если end - уменьшаешь. Если счетчик стал меньше 0 - выводишь ошибку (лишний end). Если в конце программы счетчик больше 0 -выводишь ошибку (лишний begin)

Oleg_Rus
17.02.2007, 05:55
в принципе вторая задача решается довольно просто - из файла читаешь по словам, сравниваешь с заданными константами и если совпадает, то увеличивай счетчик

const
RazeBegin='begin';
RazeEnd='end';
begin
assign(f, '*.pas'); Reset(f);
while not eof do
begin
read(s);
if s=RazeBegin then Inc(CountBegin);
if s=RazeEnd then Inc(CountEnd);
end;
if CountBegin<>CountEnd then Writeln('Error!!!') Else Writeln('All Right');
end;

немного доработаешь по теме заглавные буквы и усе - ЧТД(Что и Требовалось Доказать)

Хыиуду
17.02.2007, 22:49
Oleg_Rus, а если в программе, например, такой кусок текста:
if i=0
then begin

Тогда же ведь этот бегин окажется пропущенным
Дело в том, что когда Паскаль считывает из файла строку, он читает ее полностью. Это только числа в строке он может читать по очереди.
Кстати, если уходить в усложнение, можно вспомнить, что end завершает не только begin, но и except, record, case, asm, finally.