MATLAB — чтение слов в файле в обратном порядке
Опубликовано: 10 Января, 2023
        MATLAB расшифровывается как Matrix Laboratory. Это высокопроизводительный язык, который используется для технических вычислений. Это позволяет манипулировать матрицами, отображать функции, реализовывать алгоритмы и создавать пользовательские интерфейсы.
Допустим, нам дан текстовый файл, содержащий следующие слова «Я УЧУСЬ У ГИККОВ ДЛЯ ГИККОВ». Теперь, если мы хотим прочитать слова файла в обратном порядке, результат должен быть «ГЕКСЫ ДЛЯ ГИККОВ ИЗ ИССЛЕДОВАНИЯ I».
Алгоритм:
- Откройте данный файл с помощью функции fopen() (эта функция принимает имя файла в качестве аргумента и возвращает указатель на тип структуры FILE, который можно использовать для доступа к открытому файлу).
 - Перейти по возвращаемому указателю в конец заданного текстового файла с помощью функции fseek()
 - Теперь переместите этот указатель в положение end-1.
 - Прочитайте символ, на который указывает указатель, используя функцию fread(), и сохраните его в матрице.
 - Затем переместите указатель в текущую-2 позицию, снова прочитайте символ, на который указывает указатель, и сохраните его в матрице.
 - Теперь, если символ является пробелом, переверните массив. Используйте fliplr(), чтобы перевернуть массив/
 - Затем добавьте массив к строке и инициализируйте массив нулем.
 - Повторяйте этот алгоритм, пока указатель fp не достигнет начала файла.
 - Закройте файл с помощью функции fclose().
 
Пример 1:
Matlab
% MATLAB program for read words% Opening the given file to read,% name of the file is passed as% an argument in fopen() function.fp=fopen("rev.txt");% Using fseek(),% we will move fp to the end of file.fseek(fp,0,"eof");% Finding the position of fp using ftell()fsz=ftell(fp);i=1;% Using fseek(), move fp to% the current-1 position.fseek(fp,-1,"cof");% Using fread(),read a characterchr=fread(fp,1,"*char");% Store the character in the matrix Z.Z(1,i)=chr;Word=0;% Checking if fp has reached to% start of the file.    while(fseek(fp,-2,"cof")~=-1)                c=fread(fp,1,"*char");        % Character array is        % reversed and appended into a string when a space occurs.        if(isspace(chr))              if(Word==0)                  %Step 9- At first, the string is empty.                  % Step 10- Now, the array is appended in                  % the reverse order with a blank space.                   Word=[fliplr(Z) blanks(1)];              else                  % Append the reversed character                  % array to the string                   Word=[Words fliplr(Z)];              end           i=1;           Z="";        else            % The array is updated with the            % characters until blank space is            % encountered           i=i+1;           Z(1,i)=chr;                   end    end    Word=[Word fliplr(Z)];display(Word);fclose(fp); | 
Выход: