Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/32: Рейтинг темы: голосов - 32, средняя оценка - 4.63
10 / 10 / 0
Регистрация: 09.10.2010
Сообщений: 57
1

Заполнение двумерного массива из файла

18.08.2011, 12:03. Показов 5699. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача: заполнить массив [8, стопицот] из текстового файла. Сначала заполняю одномерный массив:
C#
1
2
3
4
using (StreamReader sReader = new StreamReader(fileName))
            {
               string[] helpArray = sReader.ReadToEnd().Split(' ');
            }
Затем пытаюсь заполнить двумерный массив, парсом преобразуя из string в double. Однако, в helpArray у меня появляются непонятные элементы: "3.83124097e-006\r\n1", "3.69083887e-006\r\n2", "3.24329790e-006\r\n3" итд.
Сплитом пытался убрать '\\', 'n', 'r', но он их не убирает. Помогите, пожалуйста, разобраться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2011, 12:03
Ответы с готовыми решениями:

Заполнение двумерного массива из файла
Помогите, пожалуйста, новичку и не отсылайте по ссылкам!!!!перечитала много, а толку никакого!!!...

Заполнение двумерного массива из файла
Доброго времени суток! Прошу вас, помогите! Необходимо заполнить двумерный массив из файла вида:...

Заполнение двумерного массива из файла
Здравствуйте! Необходимо заполнить двумерный массив из txt файла следующим образом: первый элемент...

Заполнение двумерного массива из файла
Есть файл вещественных чисел для нижнетреугольной матрицы (файл содержит ненулевую часть матрицы,...

8
71 / 71 / 23
Регистрация: 22.05.2011
Сообщений: 528
18.08.2011, 12:29 2
C#
1
2
3
4
5
using (StreamReader sReader = new StreamReader(fileName))
            {
               string[] s = { "\n", "\r", " " };
               string[] helpArray = sReader.ReadToEnd().Split(s,StringSplitOptions.RemoveEmptyEntries );
            }
1
67 / 67 / 9
Регистрация: 18.04.2011
Сообщений: 124
18.08.2011, 12:32 3
C#
1
2
3
4
5
6
7
8
9
string[] helpArray=s.Reader.ReadToEnd().Split(' ', '\r', '\n', StringSplitOptions.RemoveEmptyEntries);
double[] realArray=new double[8, стопиццот];
int k=0;
for (int i=0; i<8; i++) {
for (int j=0; j<стопиццот; j++) {
Double.TryParse(helpArray[k], out readlArray[i,j]);
k++;
}
}
Так работает?
2
10 / 10 / 0
Регистрация: 09.10.2010
Сообщений: 57
18.08.2011, 13:12  [ТС] 4
Теперь другая проблема, в файле числа следующего формата: 2.00000009e-003, 1.70000009e-002 ну и так далее. Из string-а в double он не хочет парсить: ставит везде нули. В свое оправдание могу сказать, что такими их выдает ANSYS, так что я не виноват, что они такие.
То есть с TryParse ставит нули, а просто Parse выдает ексепшон, мол "Входная строка имела неверный формат."
0
67 / 67 / 9
Регистрация: 18.04.2011
Сообщений: 124
18.08.2011, 13:20 5
Э-ээ... попробуйте так)

C#
1
Double.TryParse(helpArray[k].Replace('.',','), out realArray[i,j]);
1
10 / 10 / 0
Регистрация: 09.10.2010
Сообщений: 57
18.08.2011, 13:26  [ТС] 6
Цитата Сообщение от somethingrotten Посмотреть сообщение
Э-ээ... попробуйте так)

C#
1
Double.TryParse(helpArray[k].Replace('.',','), out realArray[i,j]);
Да как вы это делаете вообще?
Спасибо большое.
0
67 / 67 / 9
Регистрация: 18.04.2011
Сообщений: 124
18.08.2011, 13:31 7
Zanzibarsky, волшебный Parse не опознает число, если вместо десятичной запятой там стоит точка. При этом в коде C# вместо десятичной запятой как раз ставится точка, что, кстати, слегка удивляет) Соответственно нужный результат получаем, поменяв точку на запятую)
0
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
18.08.2011, 14:09 8
Вообще, при преобразовании строки в число с плавающей запятой, используется формат записи, заданный по умолчанию в настройках компьютера. Очевидно, что это русский. А в русском формате - разделителем является запятая. Соответственно, если запустить программу на компьютере, где в настройках поставлен американский стандарт (точка), то программа вылетит с ошибкой. На этом прокалываются многие программисты.
Правильно будет сделать следующим образом:
C#
1
Double.Parse(str, new CultureInfo("en-US"))
2
3 / 3 / 1
Регистрация: 04.02.2014
Сообщений: 69
01.06.2014, 15:41 9
здравствуйте, у меня что то не пашит данный код. Пишет что в этой строке using (StreamReader sReader = new StreamReader(Map)) - Необработанное исключение типа "System.ArgumentException" произошло в mscorlib.dll

Дополнительные сведения: Путь содержит недопустимые знаки.

Помогите пожалуйста
0
01.06.2014, 15:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2014, 15:41
Помогаю со студенческими работами здесь

Заполнение двумерного массива данными из файла
Здравствуйте. Возможна ли передача на динамический двумерный массив с 2-мя столбцами и с числом...

Заполнение двумерного массива
Console.Write(&quot;введите количество строк : &quot;); int n =...

Заполнение двумерного массива строками
using System; class Program { static void Main(string args) { ...

Заполнение двумерного массива по спирали
Необходимо заполнить двумерный массив по спирали. Что нужно сделать, чтобы: 1) он заполнялся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru