0 / 0 / 0
Регистрация: 11.03.2012
Сообщений: 11
1

Ошибка при вводе данных в двумерный массив через консоль

03.12.2013, 03:49. Показов 977. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Есть класс, в котором мне надо забить массив данными с клавиатуры и кое-что посчитать
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
 
namespace prolabcs
{
    public class Thread1
    {
        public Thread1 (String name, int pos, SemaphoreSet ss)
        {
            this.name = name;
            this.pos = pos;
            this.ss = ss;
        }
 
        private String name;
        private int pos;
        private SemaphoreSet ss;
 
        public void run() {
            //thread start
            Console.WriteLine (name+ " started...");
 
            int dim = Data.Dim;
 
            //data input
            ss.S_inp.WaitOne();
            for(int i=0;i<dim;i++) {
                for(int j=0;j<dim;j++) {
                    Console.WriteLine ("MK["+(i)+"]["+(j)+"]:");
                    Data.MK[i,j]= Convert.ToInt32(Console.ReadLine());
                }
            }
            ss.L_inp.Signal();
            ss.S_inp.Release();
 
            ss.L_inp.Wait();
 
            //copy variables then do B*MO
            ss.S_count1.WaitOne();
 
            int B_local = Data.B;
            int C_local = Data.C;
            int[,] MK_local = Data.MK;
            int[,] ME_local = Data.ME;
            int[,] MO_local = Data.MO;
 
            ss.S_count1.Release();
 
            for(int i=0; i<dim; i++) {
                Data.BMO[pos,i] = MO_local[pos,i]*B_local;
            }
            ss.L_count1.Signal();
            ss.L_count1.Wait();
 
 
            //do MK*ME
            ss.S_count2.WaitOne();
            int pos2 = 0;
            for(int i=0; i<dim; i++)  {
                for(int j=0;j<dim; j++) {
                    Data.MKE[pos,i]+=MK_local[pos,j]*ME_local[j,pos2];
                }
                pos2++;
            }
            ss.L_count2.Signal();
            ss.S_count2.Release();
 
            ss.L_count2.Wait();
 
            //do C*(MK*ME)
            ss.S_count3.WaitOne();
            int[,] MKE_local = Data.MKE;
            for(int i=0; i<dim; i++) {
                Data.CKE[pos,i] = MKE_local[pos,i]*C_local;
            }
            ss.L_count3.Signal();
            ss.S_count3.Release();
 
            ss.L_count3.Wait();
 
            //do addition
            ss.S_count4.WaitOne();
            for(int i=0; i<dim; i++) {
                Data.A[pos,i] = Data.BMO[pos,i]+Data.CKE[pos,i];
            }
            ss.L_count4.Signal();
            ss.S_count4.Release();
 
            //all done
            Console.WriteLine (name+ " finished...");
        }
    }
}
Программа нормально запускается, но на этапе ввода данных при вводе элемента [0,1] массива вываливается из-за System.FormatException (т.е. первое значение как-то воспринимается). IDE, естественно, указывает на строку с выражением
C#
1
Data.MK[i,j]= Convert.ToInt32(Console.ReadLine());
С C# знаком всего пару часов. Программу писал не с нуля, а брал за основу код на Java, который у меня работает. Не могу понять в чем проблема. Помогите, пожалуйста, разобраться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2013, 03:49
Ответы с готовыми решениями:

Ошибка при вводе данных
ошибка при ввводе данных, изучаю с# во решил поэкспериментировать с массивами и создал отдельный...

Ошибка при вводе в динамический двумерный массив
заполнить матрицу не могу. ошибка где то от 19 до 24 строки. #include &lt;conio.h&gt; #include...

Ошибка при вводе значений в массив через stringgrid
Собственна проблема вот в чем: при нажатии на button2 вылазиет ошибка is not a valid integer value...

Глюк при вводе через консоль
Как можно обеспечить правильный ввод? При вводе цифр все нормально, а вот когда ввести символ...

4
Anderok
03.12.2013, 14:26
  #2

Не по теме:

Не нужно лупить ввод-вывод на консоль в самом классе.Это не комильфо, так делать нельзя!

0
0 / 0 / 0
Регистрация: 11.03.2012
Сообщений: 11
03.12.2013, 15:55  [ТС] 3
Цитата Сообщение от Anderok Посмотреть сообщение

Не по теме:

Не нужно лупить ввод-вывод на консоль в самом классе.Это не комильфо, так делать нельзя!

У меня по заданию так надо делать.

В общем, разобрался, все оказалось просто.
0
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
03.12.2013, 16:33 4
Цитата Сообщение от ktoto Посмотреть сообщение
У меня по заданию так надо делать.

В общем, разобрался, все оказалось просто.
В задании написано: класс должен выводить на консоль?
Если нет, то используйте отложенные вычисления.
0
0 / 0 / 0
Регистрация: 11.03.2012
Сообщений: 11
03.12.2013, 18:31  [ТС] 5
Цитата Сообщение от Anderok Посмотреть сообщение
В задании написано: класс должен выводить на консоль?
Если нет, то используйте отложенные вычисления.
У меня несколько потоков, в разных потоках надо вводить разные данные, потом все это считать. Вывод тоже должен быть реализован внутри одного из потоков.

Я согласен, было бы значительно проще реализовать 1 класс, потом создать несколько объектов и запустить их в потоках на выполнение, а данные вводить где-нибудь в главном процессе, но нельзя.
0
03.12.2013, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2013, 18:31
Помогаю со студенческими работами здесь

Нужно создать код задачи через консоль.Двумерный массив
Помогите пожалуйста,буду очень благодарен!) Дана целочисленная матрица M х N. Переставляя строки...

Двумерный динамический массив в классе. Зависание при вводе и вызове деструктора
Объект класса содержит двумерный массив строк фиксированного размера(80) и длины n. При обращении к...

При вводе данных в консоль разрешалось вводить только определённые символы или пары букв (mm, YYYY)
Пользователь вводит формат даты( mm:ss MM/YYYY). Есть только определённые символы и сочетания букв,...

Ввод массивов через множество textBox, подсчёт суммы, и вывод через listBox. Ошибка при вводе через textBox
Создал я кучу текст боксов, там происходит ввод каждого элемента массива. И вывод через листбокс ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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