Ce petit problème fort intéressant peut etre résolu de divers manières, mais j’ai voulu montrer comment on pouvait créer un dictionnaire en C# qui contient 2 clés, en utilisant les tuples.
[code language= »csharp »]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Exercises
{
class Program
{
static void ClosestToTarget(int[] array1, int[] array2, int target)
{
int i,
j = 0;
var dictionary = new Dictionary < Tuple ,
int > ();
int x = 0;
int[, ] totals = new int[array1.Length, array2.Length];
for (i = 0; i < array1.Length; i++)
{
for (j = 0; j < array2.Length; j++)
{
int total = array1[i] + array2[j];
totals[i, j] = total;
var key = new Tuple (i, j);
dictionary.Add(key, array1[i] + array2[j]);
}
}
foreach(KeyValuePair < Tuple , int > kvp in dictionary)
var bestMatch = dictionary.OrderBy(e = >Math.Abs(e.Value – target)).FirstOrDefault();
i = bestMatch.Key.Item1;
j = bestMatch.Key.Item2;
Console.WriteLine(« Elément issu du premier tableau : {0} , Elément issu du deuxième tableau : {1}, La Somme = {2} qui se rapproche le plus de la cible : {3} », array1[i], array2[j], array1[i] + array2[j], target);
}
static void Main(string[] args)
{
Console.WriteLine(« Ce programme prend en entré 2 tableau de taille n et vous donne quel pairs d’éléments des 2 tableaux se rapproche le plus d’une cible x »);
Console.WriteLine(« Veuillez entrer la taille des tableaux: »);
int size = 0;
while (!int.TryParse(Console.ReadLine(), out size))
Console.Write(« Attention, la valeur doit être un entier. Veuillez réessayer »);
int[] array1 = new int[size];
int[] array2 = new int[size];
int i;
Console.WriteLine(« Entrez les {0} chiffres pour le premier tableau: », size);
for (i = 0; i < size; i++)
{
while (!int.TryParse(Console.ReadLine(), out array1[i]))
Console.Write(« Attention, la valeur doit être un entier. Veuillez réessayer »);
}
Console.WriteLine(« Entrez les {0} chiffres pour le deuxième tableau: », size);
for (i = 0; i < size; i++)
{
while (!int.TryParse(Console.ReadLine(), out array2[i]))
Console.Write(« Attention, la valeur doit être un entier. Veuillez réessayer »);
La norme ISO 20022 une norme ISO régissant l’échange de données informatisé entre les institutions financières. Standard international et ouvert, ISO 20022 n’est pas contrôlé par un seul intérêt: il peut être utilisé par n’importe qui dans l’industrie et implémenté sur n’importe quel réseau. Il a des processus entièrement établis pour sa maintenance, son évolution et sa gouvernance.
Première publication en 2004, l’ISO 20022 est largement reconnue comme la norme du futur. En plus d’être assez flexible pour travailler avec les dernières technologies,
ISO 20022 peut également s’adapter aux nouvelles technologies à mesure qu’elles emergent.
La norme ISO 20022 est décrite dans le document «ISO 20022 Financial Services – Système de messages de l’industrie financière universelle».
L’édition actuelle de la norme comprend huit parties, publiées en mai 2013:
ISO 20022-1: Métamodèle
ISO 20022-2: profil UML
ISO 20022-3: Modélisation
ISO 20022-4: Génération de schémas XML
ISO 20022-5: Ingénierie inverse
ISO 20022-6: Caractéristiques de transport des messages
ISO 20022-7: Enregistrement
ISO 20022-8: génération ASN.1
Les commandes d’ISO 20022 et d’autres normes internationales ou publications ISO peuvent être obtenues sur http://www.iso.org. Dans la zone Rechercher, tapez 20022, puis Rechercher. Les huit parties de la norme sont disponibles à l’achat en format PDF ou papier
Dans l’example qui va suivre, nous allons voir comment générer un XML sur C# en utilisant plus spécifiquement le message « Customer Credit Transfer Initiation » : pain.001.001.03
Je vous invite à consulter le lien ci dessous de la CFONB ( Comité Francais d’Organisation et de Normalisation Bancaire ) pour avoir plus de details sur le virement SEPA (Single Euro Payments Area ) et les instructions de paiements.
CreateNode("Dbtr", namespace_xml, "PmtInf");
// GetDataTableEmetteur est une methode qui retourne un DataTable
// Le libelle_Emetteur dans la Table Emetteur
CreateNode("Nm", namespace_xml, "Dbtr", GetDataTableEmetteur.Rows[0].ItemArray[0].ToString());
CreateNode("DbtrAcct", namespace_xml, "PmtInf");
CreateNode("Id", namespace_xml, "DbtrAcct");
//Le IBAN_Emetteur dans la Table Emetteur
CreateNode("IBAN", namespace_xml, "Id", GetDataTableEmetteur.Rows[0].ItemArray[2].ToString());
CreateNode("DbtrAgt", namespace_xml, "PmtInf");
CreateNode("FinInstnId", namespace_xml, "DbtrAgt");
//Le BIC dans la Table Emetteur
CreateNode("BIC", namespace_xml, "FinInstnId", GetDataTableEmetteur.Rows[0].ItemArray[1].ToString());
CreateNode("Cdtr", namespace_xml, "CdtTrfTxInf");
//GetDataTableRecepteur est une méthode qui retourne une DataTable
CreateNode("Nm", namespace_xml, "Cdtr", GetDataTableRecepteur.Rows[0].ItemArray[0].ToString());
string targetPath = @"\DOSSIER_SORTIES\" + Global.GetImportDate.ToString("yyyy MM dd");
// Creation d’un dossier pour sauvegarder le XML
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}