diff --git a/FP2021/Cin/Cin.csproj b/FP2021/Cin/Cin.csproj index d9823e9..4787d05 100644 --- a/FP2021/Cin/Cin.csproj +++ b/FP2021/Cin/Cin.csproj @@ -38,7 +38,7 @@ - + diff --git a/FP2021/Cin/Cin.cs b/FP2021/Cin/ConsoleIn.cs similarity index 53% rename from FP2021/Cin/Cin.cs rename to FP2021/Cin/ConsoleIn.cs index fc8d53f..3bcfc84 100644 --- a/FP2021/Cin/Cin.cs +++ b/FP2021/Cin/ConsoleIn.cs @@ -54,26 +54,26 @@ public static string NextToken() /// /// Citeste urmatorul int dat ca si input in consola. /// - /// valoarea int data. + /// valoarea int data sau 0 daca este intalnita o exceptie. /// daca valoarea data nu este formata doar din cifre 0-9. /// daca valoarea data este mai mare de . public static int NextInt() { + string token = NextToken(); int value; try { - value = int.Parse(NextToken()); + value = int.Parse(token); } catch (FormatException e) { - Console.WriteLine("Valoarea data nu poate fi transformata in int!"); - throw; + throw new FormatException($"Valoarea {token} nu poate fi transformata in int!", e); } catch (OverflowException e) { - Console.WriteLine($"Valoarea data este mai mare decat {int.MaxValue}!"); - throw; + throw new OverflowException( + $"Valoarea {token} este mai mare decat {int.MaxValue} sau mai mica decat {int.MinValue}!", e); } return value; @@ -82,29 +82,73 @@ public static int NextInt() /// /// Citeste urmatorul double dat ca si input in consola. /// - /// valoarea double data. + /// valoarea double data sau 0 daca este intalnita o exceptie. /// daca valoarea data nu este alcatuita doar din cifre 0-9 si caracterele . si , /// daca valoarea data este mai mare de public static double NextDouble() { + string token = NextToken(); double value; try { - value = double.Parse(NextToken().Replace(',', '.')); + value = double.Parse(token.Replace(',', '.')); } catch (FormatException e) { - Console.WriteLine("Valoarea data nu poate fi transformata in double!"); - throw; + throw new FormatException($"Valoarea {token} nu poate fi transformata in double!", e); } catch (OverflowException e) { - Console.WriteLine($"Valoarea data este mai mare decat {double.MaxValue}!"); - throw; + throw new OverflowException( + $"Valoarea {token} este mai mare decat {double.MaxValue} sau mai mica decat {double.MinValue}!", e); } return value; } + + /// + /// Citeste urmatorul long dat ca si input in consola. + /// + /// valoarea long data sau 0 daca este intalnita o exceptie. + /// daca valoarea data nu este alcatuita doar din cifre 0-9 + /// daca valoarea data este mai mare decat sau mai mica decat . + public static long NextLong() + { + string token = NextToken(); + long value; + + try + { + value = long.Parse(token); + } + catch (FormatException e) + { + throw new FormatException($"Valoarea {token} nu poate fi transformata in long!", e); + } + catch (OverflowException e) + { + throw new OverflowException( + $"Valoarea {token} este mai mare decat {long.MaxValue} sau mai mica decat {long.MinValue}!", e); + } + + return value; + } + + /// + /// Citeste primele n cuvinte date in consola. + /// + /// numarul de cuvinte care va fi citit. + /// string-ul format prin concatenarea tuturor cuvintelor citite. + public static string FirstWords(int count) + { + StringBuilder sb = new StringBuilder(); + + for (int i = 1; i <= count; ++i) + { + sb.Append($"{NextToken()} "); + } + return sb.ToString(); + } } -} \ No newline at end of file +}