MATLAB: lea palabras en un archivo en orden inverso

MATLAB significa Laboratorio Matrix. Es un lenguaje de alto rendimiento que se utiliza para la informática técnica. Permite la manipulación de arrays, el trazado de funciones, la implementación de algoritmos y la creación de interfaces de usuario.

Supongamos que nos dan un archivo de texto que contiene las siguientes palabras «ESTUDIO DE GEEKS PARA GEEKS». Ahora, si queremos leer las palabras del archivo en orden inverso, el resultado debería ser «GEEKS PARA GEEKS DEL ESTUDIO I».

Algoritmo:

  • Abra el archivo dado usando la función fopen() (Esta función toma el nombre del archivo como su argumento y devuelve un puntero a un tipo de estructura de ARCHIVO que se puede usar para acceder al archivo abierto).
  • Salta el puntero devuelto al final del archivo de texto dado usando la función fseek()
  • Ahora, mueva ese puntero a la posición final-1.
  • Lea el carácter al que apunta el puntero usando la función fread() y guárdelo en una array.
  • A continuación, cambie el puntero a la posición actual-2, vuelva a leer el carácter al que apunta el puntero y guárdelo en una array.
  • Ahora, si el carácter es un espacio en blanco, invierta la array. Use fliplr() para invertir la array/
  • Luego, agregue la array a una string e inicialice la array a cero.
  • Replique este algoritmo hasta que el puntero fp alcance el inicio del archivo.
  • Cierra el archivo usando la función fclose().

Ejemplo 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 uisng ftell()
fsz=ftell(fp);
i=1;
  
% Using fseek(), move fp to
% the current-1 position.
fseek(fp,-1,'cof');
  
% Uisng 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);

Producción:

 

Publicación traducida automáticamente

Artículo escrito por parthmadan3739 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *