Пропадает результат picturebox. |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Пропадает результат picturebox. |
IUnknown |
7.05.2011 15:06
Сообщение
#21
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата Да и твой код я так в полной мере не понял. Что именно не понятно? Вроде все прозрачно: читаем из потока первую строку, там - размерность, конвертируем ее в целое число, запоминаем в Len. Дальше - читаем оставшуюся часть файла (ReadToEnd), и разбиваем ее на строки (разделитель - конец строки, или '\n'). Первые Len строк /от 0 до Len - 1/ нас не интересуют, поэтому их не обрабатываем. Начинаем с индекса Len, и до конца массива. Что делать с каждой из строк? Разбить ее по пробелу на последовательность элементов строки и каждый сконвертировать в целое число. Для этого нужен двумерный массив: int [ , ] значит массив с двумя измерениями.Цитата И наконец,для чего вообще нужен массив iArr Ты меня спрашиваешь? Тебе надо было, не мне:Цитата У меня есть файл в котором лежит число(размерность матрицы),затем исходная матрица и преобразованная матрица(размерность одинаковая).Можно ли как то считать быстро ненужную мне исходную матрицу ,чтобы быстро приступить к нужной Вот iArr - и есть нужная матрица. Целочисленная, если что.Насчет C++/CLI ничем помочь не могу, кроме ссылки. Вот тут посмотри: How to read in a two dimensional array or any dimensional array from a file? , там решается подобная задача. Аналогичным методом. |
Krjuger |
8.05.2011 11:18
Сообщение
#22
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Возвращаясь к тем же баранам.Тот код ,что ты скидывал прекрасно работает для целых чисел.Я заменил строку.
iArr[i - Len, j++] = Convert::ToInt32(st); на iArr[i - Len, j++] = Convert::ToDouble(st); и тут возникли проблемы,когда число целое все прекрасно скидывается и записывается,но когда число дробное,то выдает сразу ошибку. Цитата An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll Additional information: Входная строка имела неверный формат. Я попробовал сделать так.
и вызывать
Но теперь уже в темп ничего не записывается.В общем опять нужна помощ. Когда я руками заменил вместо "." на "," все нормально отработало с U[i - Len][j++] = double::Parse(st);(его я тоже попробовал),да и с U[i - Len][j++] = Convert::ToDouble(st); тоже. Но я считаю,что руками это делать,это во-первых занятие неблагодарное,а во-вторых,не по программистски) А еще меня ооооочень интересует что за у.... нехороший человек придумал,что число дабл храниться в в памяти с точкой и соответственно записывается в файл с точкой,а вот считыватся должно с запятой,а потом преобразуется с точкой. Сообщение отредактировано: Krjuger - 8.05.2011 11:31 |
-TarasBer- |
8.05.2011 11:48
Сообщение
#23
|
Гость |
> ,что число дабл храниться в в памяти с точкой
ЧЁ Просто во американским стандартам, отражённым во всех ЯП, вещественные числа пишутся через точку. Но дядя Билл решил, что раз в России принята запятая, то пусть и стандартный разделитель в русской версии винды будет запятая, что влияет на НЕКОТОРЫЕ функции ввода (и преобразования строк в числа). Короче, я не знаю, как в С++.НЕТ это делается, но у тебя либо есть способ поменять разделитель для функции преобразования, либо взять другую функцию для преобразования строки в число. |
Krjuger |
8.05.2011 12:39
Сообщение
#24
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Да решение оказалось действительно достаточно простым.
|
Krjuger |
8.05.2011 14:22
Сообщение
#25
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
|
Текстовая версия | 13.06.2024 2:36 |