Leer numero de un fichero mayores de un umbral

De Ejercicios

Enunciado

Implementa una función que reciba como parámetros de entrada los nombres de dos ficheros de texto y un valor entero que indica un umbral. El primero de los ficheros contendrá una lista de números enteros. La función debe introducir en el segundo fichero los números del primer fichero que sean mayores que el umbral establecido. La función debe devolver dos valores: un valor lógico que indique si lo dos ficheros se han abierto correctamente y un valor entero que indique el número de elementos que se han copiado en el segundo fichero.

Soluciones

Programa en Matlab

function [exito, ncopias]=CopiaMayor(nfichero1, nfichero2, umbral)
% FUNCION [exito, ncopias]=CopiaMayor(nfichero1, nfichero2, umbral)
% Descripción: se copian en el segundo fichero (nfichero2) los valores del 
%    primero (nfichero1) que son mayores que la cota dada en el parámetro umbral
% Parámetros de entrada:
%   nfichero1, nfichero2: ARRAY DE CARACTERES, los nombres de dos ficheros
%   umbral: ENTERO, umbral para realizar la copia
% Parámetros de salida:
%   exito: LÓGICO, verdadero si los ficheros se han abierto correctamente,
%     falso en otro caso
%   ncopias: ENTERO, número de valores que se han copiado del primer 
%     fichero en el segundo
f1=fopen(nfichero1, 'r');
if (f1==-1)
    exito=false;
    ncopias=0;
else
    f2=fopen(nfichero2, 'w');
    if (f2==-1)
        exito=false;
        ncopias=0;
    else
        exito=true;
        ncopias=0;
        todos=fscanf(f1,'%d',inf);
        tam=length(todos);
        for p=1:tam
            if (todos(p)>umbral)
                fprintf(f2,'%d \n',todos(p));
                ncopias=ncopias+1;
            end
        end
        fclose(f2);
    end
    fclose(f1);
end
Tipos de soluciones