Вычислить сумму значений из всех строк, на которые указывает первый элемент строки - C#
Формулировка задачи:
Доброго всем времени, задали нам такую лабораторную:
Файл in.csv (текст с разделителями «;») содержит строки с числами. Самый первый элемент строки имеет индекс 0. Его значение определят то, с каким элементом строки будет вестись работа.
1.Вычислить сумму значений из всех строк, на которые указывает первый элемент строки (с индексом 0).
2.Подсчитать и вывести кол-во строк с ошибками.
Примеры входных данных
Пример 1 in.csv:
3;qw;4;5,2;2,7
15;;;k;5
1;-3,14;fgh;5
0;;e1;2;3
-2,3;a;b;c
b;d;e
Output:
result(5,2 - 3,14 + 0,0) = 2,06
error-lines = 3
Замечания к задаче
1. В алгоритме запрограммировать ход работы программы в случае корректных данных, ошибочные ситуации (не число, выход за границы массива) обрабатывать через исключения.
2. Строки csv – файла разбивать на элементы методом Split( ).
3. Не использовать регулярные выражения.
4. Не выводить строку с результатом отдельными фрагментами. Согласно условию нужно сформировать ответ в виде строки. Обратите внимание на наличие пробелов в выходной строке. В частности, если первое число отрицательное, то после знака минус нет пробела. Далее каждый знак (плюс, минус, равно) окружен пробелами.
5. Обязательно проверить тест, в котором отсутствует входной файл.
Начинаю разбираться и понимаю что все туго, из набросок только
сделал чтение из файла, на остальном что дальше делать пока не понимаю, как мне проверить на начале считывания элементы под индексом [0], присвоить значению переменной число с этого индекса и вынять число со значением нужного нулевого индекса помогите чем можете.
Как понимаю в примечании 4 потребуется построить строки? Решение задачи: «Вычислить сумму значений из всех строк, на которые указывает первый элемент строки»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Stings1
{
class Program
{
public static void Main(string[] args)
{
int error = 0;
double value = 0;
double result = 0;
string plus = " + ";
string minus = " - ";
StringBuilder strResult = new StringBuilder("Result(");
StringBuilder strError = new StringBuilder("Error-lines = ");
int resultLenght = strResult.Length;
StreamReader sr = File.OpenText(@"in.csv");
List<string[]> allElements = new List<string[]>();
while (true)
{
string str = sr.ReadLine();
if (str == null)
break;
string[] elements = str.Split(';');
allElements.Add(elements);
try
{
int num = Int32.Parse(elements[0]);
value = Double.Parse(elements[num].Replace('.',','));
result += value;
strResult.Append(value < 0 ? minus : plus).Append(Math.Abs(value));
}
catch (FormatException e)
{
error++;
}
catch(SystemException)
{
error++;
}
}
strResult.Append(") = " + result);
Console.WriteLine(strResult);
strError.Append(error);
Console.WriteLine(strError);
sr.Close();