Skip to content
2 changes: 1 addition & 1 deletion FP2021/Cin/Cin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Cin.cs" />
<Compile Include="ConsoleIn.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Expand Down
70 changes: 57 additions & 13 deletions FP2021/Cin/Cin.cs → FP2021/Cin/ConsoleIn.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,26 +54,26 @@ public static string NextToken()
/// <summary>
/// Citeste urmatorul int dat ca si input in consola.
/// </summary>
/// <returns>valoarea int data.</returns>
/// <returns>valoarea int data sau 0 daca este intalnita o exceptie.</returns>
/// <exception cref="FormatException">daca valoarea data nu este formata doar din cifre 0-9.</exception>
/// <exception cref="OverflowException">daca valoarea data este mai mare de <see cref="int.MaxValue"/>.</exception>
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;
Expand All @@ -82,29 +82,73 @@ public static int NextInt()
/// <summary>
/// Citeste urmatorul double dat ca si input in consola.
/// </summary>
/// <returns>valoarea double data.</returns>
/// <returns>valoarea double data sau 0 daca este intalnita o exceptie.</returns>
/// <exception cref="FormatException">daca valoarea data nu este alcatuita doar din cifre 0-9 si caracterele . si ,</exception>
/// <exception cref="OverflowException">daca valoarea data este mai mare de <see cref="Double.MaxValue"/></exception>
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;
}

/// <summary>
/// Citeste urmatorul long dat ca si input in consola.
/// </summary>
/// <returns>valoarea long data sau 0 daca este intalnita o exceptie.</returns>
/// <exception cref="FormatException">daca valoarea data nu este alcatuita doar din cifre 0-9</exception>
/// <exception cref="OverflowException">daca valoarea data este mai mare decat <see cref="long.MaxValue"/> sau mai mica decat <see cref="long.MinValue"/>.</exception>
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;
}

/// <summary>
/// Citeste primele n cuvinte date in consola.
/// </summary>
/// <param name="count">numarul de cuvinte care va fi citit.</param>
/// <returns>string-ul format prin concatenarea tuturor cuvintelor citite.</returns>
public static string FirstWords(int count)
{
StringBuilder sb = new StringBuilder();

for (int i = 1; i <= count; ++i)
{
sb.Append($"{NextToken()} ");
}
return sb.ToString();
}
}
}
}