NelIfandieva

DataTransfer_C#AdvancedExam_Oct14_2018

Oct 15th, 2018
96
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace _Exam_Problem01_DataTransferNoRegex
  5. {
  6.     class Program
  7.     {
  8.         static void Main()
  9.         {
  10.             int inputLength = int.Parse(Console.ReadLine());
  11.             //string sendersName = "";
  12.             //string receiversName = "";
  13.             //string cleanMessage = "";
  14.             int totalDataTransferred = 0;
  15.            
  16.             while(inputLength > 0)
  17.             {
  18.                 string[] input = Console.ReadLine()
  19.                     .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
  20.                
  21.                 inputLength--;
  22.                 if (input.Length != 3)
  23.                 {
  24.                     continue;
  25.                 }
  26.                 char[] rawSender = input[0].ToCharArray();
  27.                 char[] rawReceiver = input[1].ToCharArray();
  28.                 char[] rawMessage = input[2].ToCharArray();
  29.                 string sendersName = "";
  30.                 string receiversName = "";
  31.                 string cleanMessage = "";
  32.                 bool invalidSender = false;
  33.                 bool invalidReceiver = false;
  34.                 bool invalidMessage = false;
  35.                 if(rawSender[0] != 's' || rawSender[1] != ':' || rawSender.Contains(';'))
  36.                 {
  37.                     continue;
  38.                 }
  39.                 if(rawReceiver[0] != 'r' || rawReceiver[1] != ':' || rawReceiver.Contains(';'))
  40.                 {
  41.                     continue;
  42.                 }
  43.                
  44.                 if(rawMessage[0] != 'm' || rawMessage[1] != '-' || rawMessage[2] != '-' || (!rawMessage.Contains('"')))
  45.                 {
  46.                     continue;
  47.                 }
  48.                 bool messageIsValid = CheckForValiMessage(rawMessage);
  49.                 if(!messageIsValid)
  50.                 {
  51.                     continue;
  52.                 }
  53.                 for (int i = 2; i < rawSender.Length; i++)
  54.                 {
  55.                     char currentElement = rawSender[i];
  56.                     if(Char.IsLetter(currentElement))
  57.                     {
  58.                         sendersName += currentElement;
  59.                     }
  60.                     else if(Char.IsDigit(currentElement))
  61.                     {
  62.                         totalDataTransferred += int.Parse(currentElement.ToString());
  63.                     }
  64.                     else if(currentElement == ';')
  65.                     {
  66.                         invalidSender = true;
  67.                         break;
  68.                     }
  69.                 }
  70.                 for (int i = 2; i < rawReceiver.Length; i++)
  71.                 {
  72.                     char currentElement = rawReceiver[i];
  73.                     if(Char.IsLetter(currentElement) || currentElement == ' ')
  74.                     {
  75.                         receiversName += currentElement;
  76.                     }
  77.                     else if(Char.IsDigit(currentElement))
  78.                     {
  79.                         totalDataTransferred += int.Parse(currentElement.ToString());
  80.                     }
  81.                     else if(currentElement == ';')
  82.                     {
  83.                         invalidReceiver = true;
  84.                         break;
  85.                     }
  86.                 }
  87.                 for(int i = 4; i < rawMessage.Length -1; i++)
  88.                 {
  89.                     char currentElement = rawMessage[i];
  90.                     if(Char.IsLetter(currentElement) || currentElement == ' ')
  91.                     {
  92.                         cleanMessage += currentElement;
  93.                     }
  94.                     else
  95.                     {
  96.                         invalidMessage = true;
  97.                         break;
  98.                     }
  99.                 }
  100.                 if(invalidSender || invalidReceiver || invalidMessage)
  101.                 {
  102.                     continue;
  103.                 }
  104.                 Console.WriteLine($"{sendersName} says \"{cleanMessage}\" to {receiversName}");
  105.                
  106.             }
  107.             Console.Write("Total data transferred: {0}MB", totalDataTransferred);
  108.         }
  109.  
  110.         private static bool CheckForValiMessage(char[] rawMessage)
  111.         {
  112.             bool validMessage = true;
  113.             for (int i = 5; i < rawMessage.Length - 1; i++)
  114.             {
  115.                 char current = rawMessage[i];
  116.                 if(!Char.IsLetter(current) && current != ' ' )
  117.                 {
  118.                     validMessage = false;
  119.                     break;
  120.                 }
  121.             }
  122.             return validMessage;
  123.         }
  124.     }
  125. }
RAW Paste Data