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

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

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

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

Есть класс, в котором мне надо забить массив данными с клавиатуры и кое-что посчитать
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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2013, 03:49
Ответы с готовыми решениями:

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

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

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

4
03.12.2013, 14:26

Не по теме:

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

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

Не по теме:

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

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

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

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

Я согласен, было бы значительно проще реализовать 1 класс, потом создать несколько объектов и запустить их в потоках на выполнение, а данные вводить где-нибудь в главном процессе, но нельзя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.12.2013, 18:31
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Оптимизация производительности Express.js бэкенда
Reangularity 23.05.2025
Express. js заслуженно остаётся одним из самых популярных инструментов для создания бэкенда, но даже он не застрахован от проблем с производительностью. Многие разработчики сталкиваются с ситуацией,. . .
Продвинутая обработка данных с LINQ в C#
stackOverflow 23.05.2025
LINQ (Language Integrated Query) — это фундаментальное изменение парадигмы работы с данными в C#. Простые запросы Where и Select знакомы любому разработчику, но настоящая мощь LINQ раскрывается в. . .
Инфраструктура PKI и сертификатов безопасности
Mr. Docker 23.05.2025
PKI (Public Key Infrastructure) — это невидимый фундамент цифрового доверия, без которого современный интернет просто рассыпался бы как карточный домик. За этой аббревиатурой скрывается целый. . .
Аутентификация OAuth в Python
py-thonny 22.05.2025
OAuth (Open Authorization) — это целый стандарт для делегированного доступа. Звучит занудно? Давайте проще: OAuth позволяет приложениям получать доступ к информации пользователя на сторонних сервисах. . .
Хеширование и соль паролей в веб-приложениях C#
stackOverflow 22.05.2025
Когда-то в начале своей карьеры я тоже грешил простейшими подходами к хранению паролей – MD5-хеширование казалось верхом защиты. Но технологии не стоят на месте, вычислительные мощьности растут, и. . .
Генераторы Python для эффективной обработки данных
AI_Generated 21.05.2025
В Python существует инструмент настолько мощный и в то же время недооценённый, что я часто сравниваю его с тайным оружием в арсенале программиста. Речь идёт о генераторах — одной из самых элегантных. . .
Чем заменить Swagger в .NET WebAPI
stackOverflow 21.05.2025
Если вы создавали Web API на . NET в последние несколько лет, то наверняка сталкивались с зелёным интерфейсом Swagger UI. Этот инструмент стал практически стандартом для документирования и. . .
Использование Linq2Db в проектах C# .NET
UnmanagedCoder 21.05.2025
Среди множества претендентов на корону "идеального ORM" особое место занимает Linq2Db — микро-ORM, балансирующий между мощью полноценных инструментов и легковесностью ручного написания SQL. Что. . .
Реализация Domain-Driven Design с Java
Javaican 20.05.2025
DDD — это настоящий спасательный круг для проектов со сложной бизнес-логикой. Подход, предложенный Эриком Эвансом, позволяет создавать элегантные решения, которые точно отражают реальную предметную. . .
Возможности и нововведения C# 14
stackOverflow 20.05.2025
Выход версии C# 14, который ожидается вместе с . NET 10, приносит ряд интересных нововведений, действительно упрощающих жизнь разработчиков. Вы уже хотите опробовать эти новшества? Не проблема! Просто. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru