С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 100
Записей в блоге: 2
1

Чтения массива из текстового файла

27.03.2010, 22:44. Показов 1308. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть тхт файл который получился из Опен Офиса(нет у меня не чего кроме него) сл вида:
Код
|6|8|10|12|14|16|18|20|22|24|27|30|36|42|48;
8|||||||||||||||;
10|||||||||||||||;
12|||||||||||||||;
14|||||||||||||||;
16|||||||||||||||;
18|||||||||||||||;
20|||||||||||||||;
22|18||||||||||||||;
25|18||||||||||||||;
28|18|22|||||||||||||;
30|18|22|||||||||||||;
32|18|22|26||||||||||||;
35|18|22|26|30|||||||||||;
38|18|22|26|30|||||||||||;
40|18|22|26|30|34||||||||||;
45|18|22|26|30|34|38|||||||||;
50|18|22|26|30|34|38|42||||||||;
55|18|22|26|30|34|38|42|46|||||||;
60|18|22|26|30|34|38|42|46|50||||||;
65|18|22|26|30|34|38|42|46|50|54|||||;
70|18|22|26|30|34|38|42|46|50|54|60||||;
75|18|22|26|30|34|38|42|46|50|54|60|66|||;
80|18|22|26|30|34|38|42|46|50|54|60|66|||;
85|18|22|26|30|34|38|42|46|50|54|60|66|||;
90|18|22|26|30|34|38|42|46|50|54|60|66|78||;
95|"-"|22|26|30|34|38|42|46|50|54|60|66|78||;
100|"-"|22|26|30|34|38|42|46|50|54|60|66|78||;
105|"-"|"-"|26|30|34|38|42|46|50|54|60|66|78|90|;
110|"-"|"-"|26|30|34|38|42|46|50|54|60|66|78|90|;
115|"-"|"-"|26|30|34|38|42|46|50|54|60|66|78|90|102;
120|"-"|"-"|26|30|34|38|42|46|50|54|60|66|78|90|102;
125|"-"|"-"|26|30|34|38|42|46|50|54|60|66|78|90|102;
130|"-"|"-"|32|36|40|44|48|52|56|60|66|72|84|96|108;
140|"-"|"-"|32|36|40|44|48|52|56|60|66|72|84|96|108;
150|"-"|"-"|32|36|40|44|48|52|56|60|66|72|84|96|108;
160|"-"|"-"|32|36|40|44|48|52|56|60|66|72|84|96|108;
170|"-"|"-"|32|36|40|44|48|52|56|60|66|72|84|96|108;
180|"-"|"-"|32|36|40|44|48|52|56|60|66|72|84|96|108;
190|"-"|"-"|32|36|40|44|48|52|56|60|66|72|84|96|108;
200|"-"|"-"|32|36|40|44|48|52|56|60|66|72|84|96|108;
220|"-"|"-"|"-"|49|57|57|61|65|69|73|79|85|97|109|121;
240|"-"|"-"|"-"|49|57|57|61|65|69|73|79|85|97|109|121;
260|"-"|"-"|"-"|49|57|57|61|65|69|73|79|85|97|109|121;
280|"-"|"-"|"-"|"-"|57|57|61|65|69|73|79|85|97|109|121;
300|"-"|"-"|"-"|"-"|57|57|61|65|69|73|79|85|97|109|121;
В общем в будущем мне это понадобится.
Вот написал код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace temp
{
    class Program
    {
        static void Main(string[] args)
        {
            int KolvoStrok = -2;
            int KolvoZnacheny = 0;
            int VStroke = 0;
            TextReader tr = new StreamReader("Bolt.txt");
            String BoltFile = tr.ReadToEnd();
            tr.Close();
            Console.WriteLine(BoltFile);
            String[] BoltFileString = BoltFile.Split(';');
            try
            {
                for (int i = 0; ; i++)
                {
                 KolvoStrok++;
                }
            }
            catch (System.IndexOutOfRangeException) {
                Console.WriteLine(KolvoStrok);
                Console.ReadKey();
            }
            for (int i = 0; KolvoStrok > i; i++)
            {
                String[] BoltZnacheny = BoltFileString[i].Split('|');
                foreach (string key in BoltZnacheny)
                {
                    KolvoZnacheny++;
                }
                Console.WriteLine();
                Console.WriteLine(KolvoZnacheny);
            }
            int Setchik=0;
            VStroke = KolvoZnacheny / KolvoStrok;
            String[,] BoltMassiv;
            for (int a = 0; KolvoStrok > a; a++)
            {
                for (int b = 0; VStroke > b; b++)
                {
                    BoltMassiv[a, b] = BoltZnacheny[Setchik];
                    Setchik++;
                }
            }
      
    }
    }
}
Программка должна собирать опять матрицу значение что бы потом с ней работать.
Но
Код
BoltMassiv[a, b] = BoltZnacheny[Setchik];
не в какую работать не хочет пишет:
Ошибка 1 Элемент "BoltZnacheny" не существует в текущем контексте. g:\C#\prog\temp\temp\temp\Program.cs 49 40 temp
Не понимаю...
+ Мне кажется что у меня какой сложный метод сборки массивов из файлов, наверняка есть проще.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
27.03.2010, 22:44
Ответы с готовыми решениями:

Чтения текстового файла по кускам
Добрый всем день! Помогите пожалуйста, разобраться с чтением файла по кускам. Есть текстовый файл,...

Реализация чтения текстового файла в форме
Возникла такая проблема, мне нужно сделать программу для обучения и необходимо выложить...

Функция чтения столбцов чисел из текстового файла
Необходима функция, которая откроет текстовый файл, прочтет заранее заданное количество столбцов в...

как с программировать кнопку чтения текстового файла
На рисунки только каркас программы, можите написать код под кнопку открытие, чтоб нажимая ее в поле...

7
16 / 16 / 3
Регистрация: 22.03.2010
Сообщений: 44
28.03.2010, 00:44 2
Есть такое понятие как область видимости переменных которую вы и нарушили.
Объявите ваш
C#
1
 String[] BoltZnacheny
вне цикла.
Следующим образом:
C#
1
2
3
4
5
6
7
8
9
10
11
String[] BoltZnacheny;
for (int i = 0; KolvoStrok > i; i++)
            {
                BoltZnacheny = BoltFileString[i].Split('|');
                foreach (string key in BoltZnacheny)
                {
                    KolvoZnacheny++;
                }
                Console.WriteLine();
                Console.WriteLine(KolvoZnacheny);
            }
И жизнь приложения наладится!
0
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 100
Записей в блоге: 2
28.03.2010, 10:00  [ТС] 3
Написал как сказали - получилось сл:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace temp
{
    class Program
    {
        static void Main(string[] args)
        {
            int KolvoStrok = -2;
            int KolvoZnacheny = 0;
            int VStroke = 0;
            TextReader tr = new StreamReader("Bolt.txt");
            String BoltFile = tr.ReadToEnd();
            tr.Close();
            Console.WriteLine(BoltFile);
            String[] BoltFileString = BoltFile.Split(';');
            try
            {
                for (int i = 0; ; i++)
                {
                 KolvoStrok++;
                }
            }
            catch (System.IndexOutOfRangeException) {
                Console.WriteLine(KolvoStrok);
                Console.ReadKey();
            }
            String[] BoltZnacheny;
            for (int i = 0; KolvoStrok > i; i++)
            {
                BoltZnacheny = BoltFileString[i].Split('|');
                foreach (string key in BoltZnacheny)
                {
                    KolvoZnacheny++;
                }
                Console.WriteLine();
                Console.WriteLine(KolvoZnacheny);
            }
            int Setchik=0;
            VStroke = KolvoZnacheny / KolvoStrok;
            String[,] BoltMassiv = new String[KolvoStrok, VStroke];
            for (int a = 0; KolvoStrok > a; a++)
            {
                for (int b = 0; VStroke > b; b++)
                {
                    BoltMassiv[a, b] = BoltZnacheny[Setchik];
                    Setchik++;
                }
            }
      
    }
    }
}
Но теперь ошибка в строке:
C#
1
BoltMassiv[a, b] = BoltZnacheny[Setchik];
Цитата Сообщение от Microsoft Visual Studio 2008
Ошибка 1 Использование локальной переменной "BoltZnacheny", которой не присвоено значение G:\C#\prog\temp\temp\temp\Program.cs 50 40 temp
Как же оно не присвоено если вот оно есть:
C#
1
2
3
4
5
6
7
8
9
10
11
            String[] BoltZnacheny;
            for (int i = 0; KolvoStrok > i; i++)
            {
                BoltZnacheny = BoltFileString[i].Split('|');
                foreach (string key in BoltZnacheny)
                {
                    KolvoZnacheny++;
                }
                Console.WriteLine();
                Console.WriteLine(KolvoZnacheny);
            }
0
16 / 16 / 3
Регистрация: 22.03.2010
Сообщений: 44
28.03.2010, 13:00 4
Скорее всего здесь ваш объект не инициализируется
C#
1
BoltZnacheny = BoltFileString[i].Split('|');
0
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
28.03.2010, 14:42 5
не, дело в том, что он МОЖЕТ быть непроинициализирован, если KolvoStrok <= 0, а рассматривать надо все варианты!
0
16 / 16 / 3
Регистрация: 22.03.2010
Сообщений: 44
28.03.2010, 17:11 6
Значит здесь
C#
1
2
3
4
5
6
7
8
for (int a = 0; KolvoStrok > a; a++)
            {
                for (int b = 0; VStroke > b; b++)
                {
                    BoltMassiv[a, b] = BoltZnacheny[Setchik];
                    Setchik++;
                }
            }
проверяйте BoltZnacheny на то что он проинициализирован!
0
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 100
Записей в блоге: 2
28.03.2010, 20:10  [ТС] 7
В общем вот решил
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace temp
{
    class Program
    {
        static void Main(string[] args)
        {
            int KolvoStrok = -1;
            int KolvoZnacheny = 0;
            TextReader tr = new StreamReader("Bolt.txt");
            string BoltFile = tr.ReadToEnd();
            tr.Close();
            string[] BoltFileString = BoltFile.Split(';');
            foreach(string key in BoltFileString)
            {
                //Console.WriteLine(key);
                    KolvoStrok++;
            }
            
            
                Console.WriteLine("Количество строк:"+KolvoStrok);
                Console.ReadKey();
            string[,] BoltMassiv = new string[KolvoStrok, 16];
            string[] BoltZnacheny = new string[16];
            for (int i = 0; KolvoStrok > i; i++)
            {
                BoltZnacheny = BoltFileString[i].Split('|');
                for (int z=0;z<16;z++)
                {
                    BoltMassiv[i, z] = BoltZnacheny[z];
                    KolvoZnacheny++;
                }
 
            }
            Console.WriteLine();
            Console.WriteLine("Количество значений:" + KolvoZnacheny);
            for (int a = 0; a < KolvoStrok; a++)
            {
                for (int b = 0; b < 16; b++)
                { Console.Write("  "+BoltMassiv[a, b]);}
                Console.WriteLine();
                }
 
            
                Console.ReadKey();
 
 
 
        }
    }
}
Непонятно почему правда надо писать KolvoStrok=-1, откуда он берет одну лишению строку - непонятно...
0
16 / 16 / 3
Регистрация: 22.03.2010
Сообщений: 44
28.03.2010, 23:40 8
Измените строки на следующие:
C#
1
string[] BoltFileString = BoltFile.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
C#
1
BoltZnacheny = BoltFileString[i].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
И нчего не нужно ставить в -1.

Эту часть
C#
1
2
3
4
5
foreach(string key in BoltFileString)
{
    //Console.WriteLine(key);
     KolvoStrok++;
            }
можно заменить на
C#
1
KolvoStrok = BoltFileString.Length;
Ну и количество значений можно проинициализировать так:
C#
1
KolvoZnacheny = BoltMassiv.Length;
1
28.03.2010, 23:40
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
28.03.2010, 23:40
Помогаю со студенческими работами здесь

Программа для чтения из текстового файла в бинарный.
Доброго времени суток! Пытаюсь разобраться в коде. Программа для чтения из текстового файла в...

Как отловить событие чтения текстового файла
Приветствую всех, друзья! Возник такой вопрос: Вот у меня есть некий текстовый файл....

Запись и чтения текстового массива в файл
Всем привет! Пытаюсь записать массив, состоящий из строк, в файл. Builder ругается, когда пытаюсь...

Открытие текстового файла для чтения с общим доступом
Всем здравствуйте. Есть текстовый файл cо строками одинакового формата. Используется он для...


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

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