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 character chr=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); |
Выход: