Parse error at " end "
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Guido Gonzalez
el 15 de Abr. de 2022
Comentada: Guido Gonzalez
el 15 de Abr. de 2022
I have an parse error at ''end'' at the end of the code and I don't know why. Please help. I know I have other errors, I still haven't finish the program. I'm just trying to solve this one first.
classdef Plateforme < handle
% Caractéristiques ou données encapsulées
properties (Access = private)
nbBanques = 0;
banques = [];
end
% Comportements
methods
% Methode qui charge la base de donnees
function ChargerBaseDeDonnees(obj)
% Importer les constantes
ImporterConstantes
% Fixer la semence aleatoire
rng(0)
% Lire la base de donnees
FID = fopen(CHEMIN_BD, 'r');
texte = {};
while ~feof(FID)
texte{end + 1} = fgetl(FID);
end
fclose(FID);
% Reconstruire la base de donnees
% Le nombre de banques
temp = strsplit(texte{1}, ':');
nombreBanques = str2double(temp{end});
% La ligne qui contient le nom de la banque
ligneNomBanque = 2;
for i = 1 : nombreBanques
% Nom de la banque
temp = strsplit(texte{ligneNomBanque}, ':');
nomBanque = strtrim(temp{end});
% Numero d'institution de la banque
temp = strsplit(texte{ligneNomBanque + 1}, ':');
numeroInstitution = strtrim(temp{end});
% Initialiser la banque
listeBanques(i) = Banque(nomBanque, numeroInstitution);
% Le nombre de client de la banque
temp = strsplit(texte{ligneNomBanque + 2}, ':');
nbClients = str2double(temp{end});
% La ligne qui contient le prénom du client
lignePrenomClient = ligneNomBanque + 5;
for j = 1 : nbClients
% Prenom du client
temp = strtrim(strsplit(texte{lignePrenomClient}, ':'));
prenom = temp{end};
% Nom de famille du client
temp = strtrim(strsplit(texte{lignePrenomClient + 1}, ':'));
nom = temp{end};
% Numero d'assurance sociale du client
temp = strtrim(strsplit(texte{lignePrenomClient + 2}, ':'));
numeroAssuranceSociale = temp{end};
% Creer le client
unClient = Client(prenom, nom, numeroAssuranceSociale);
% Nombre de comptes du client
temp = strsplit(texte{lignePrenomClient + 3}, ':');
nbComptes = str2double(temp{end});
% La ligne qui contient le solde du comptes de cheques du client
ligneSoldeCheque = lignePrenomClient + 5;
% Charger tous les comptes
for k = ligneSoldeCheque : 3 : ligneSoldeCheque + 3 * (nbComptes - 1)
% Lire le solde du compte cheques
temp = strsplit(texte{k}, ':');
soldeCheque = str2double(temp{end});
% Lire le solde du compte epargne
temp = strsplit(texte{k + 1}, ':');
soldeEpargne = str2double(temp{end});
% Instancier le compte
unCompte = Compte(soldeCheque, soldeEpargne);
% Le client est desormais le proprietaire du compte
unCompte.proprietaire = unClient;
% Ajouter le compte a la banque
listeBanques(i).AjouterCompte(unCompte, unClient);
end
% Ajouter le client a la banque
listeBanques(i).AjouterClient(unClient);
% Ligne du prochain client
lignePrenomClient = k + 3;
end
% Ligne de la prochaine banque
ligneNomBanque = lignePrenomClient - 1;
end
% Enregistrer les parametres dans la plateforme
obj.nbBanques = nombreBanques;
obj.banques = listeBanques;
end
% Accesseurs (get.) pour la position du nombre de banque
function positionNbBanques = getNbBanques(obj)
positionNbBanques = obj.nbBanques;
end
%Méthode 3
function AnalyserJournalTransactions(obj,nomTexte)
validateattributes(nomTexte,{'char'},{'scalartext'})
FID = fopen(nomTexte,'r');
assert(FID ~= -1,'Erreur d"ouverture de fichier.');
data = textscan(FID,'%f %s %f %s %f','Delimiter',',');
fclose(FID);
obj.noInstitution = data(1);
obj.typeTransaction = data(2);
obj.idCompte = data(3);
obj.typeCompte = data(4);
obj.montant = data(5);
end
%methode 4
function GenererRapport(obj,nomRapport)
ImporterConstantes
finTexte = endsWith(nomRapport,'.txt');
if finTexte == 0
nomRapport = [nomRapport,'.txt'];
end
cheminDossier = [CHEMIN_RAPPORTS,'/',nomRapport];
FID = fopen(cheminDossier,'w');
assert(FID ~= -1,'Erreur d"ouverture de fichier.');
for i = 1 : obj.nbBanques
fprintf(FID,'Banque No. %d \n\n',i);
fprintf(FID,'\tNom : \n');
fprintf(FID,'\tNo. institution : \n');
fprintf(FID,'\tNombre de clients : \n');
fprintf(FID,'\tNombre de comptes : \n\n');
fprintf(FID,'\tDétails des comptes clients : \n\n');
for j = 1:
fprintf(FID,'\t\tClient No.%d\n\n',j);
fprintf(FID,'\t\t\tPrénom :\n');
fprintf(FID,'\t\t\tNom :\n\n');
for k = 1:
fprintf(FID,'\t\t\t\tCompte No. %d\n\n',k);
fprintf(FID,'\t\t\t\t\tIdentifiant :\n');
fprintf(FID,'\t\t\t\t\tSolde cheques :\n');
fprintf(FID,'\t\t\t\t\tSolde epargnes :\n\n');
end
fprintf(FID,'\t\t\tTotal cheques :\n');
fprintf(FID,'\t\t\tTotal epargne :\n\n');
end
end
end
end
end
Respuesta aceptada
Steven Lord
el 15 de Abr. de 2022
When you get a parse error like this, look for the Code Analyzer messages in the Editor's right margin. Of particular importance are the red Code Analyzer messages indicating problems that are likely to be fatal and prevent your code from running at all. If you click on the first of the red lines you'll see that it's flagging this line:
for j = 1:
You're missing the upper limit of your for loop. The same holds for the for loop over k a few lines later. When I added some dummy upper limits all the red messages went away. If this is part of the code that you're planning to work on, maybe just give it a dummy limit, say 1:1, and add a comment you can search for to find the work you need to complete. % TODO is a popular choice for such a comment.
Más respuestas (0)
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!