Вычислить сумму значений из всех строк, на которые указывает первый элемент строки - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д