Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 22
1

Ошибка в синтаксисе, работа с матрицами

10.12.2014, 20:13. Показов 1005. Ответов 10
Метки нет (Все метки)

Помогите, пожалуйста, найти ошибку. Программа построена правильно, но не работает, потому что где-то неточность. По заданию нужно составить рандомную матрицу и, если строка начинается с 1, вывести на экран номер строки и среднее арифметическое ее элементов. Сейчас при запуске либо выводит, что строки нет, вне зависимости от результата, либо выводит 14 строку, я не могу понять почему. Не нужно, пожалуйста, кидать ваши коды. Я хочу понять, где у меня ошибка.

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
namespace laba8
{
    public partial class Матрицы : Form
    {
        public Матрицы()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.RowCount = 15;
            dataGridView1.ColumnCount = 15;
            int[,] a = new int[15, 15];
            int i, j;
            Random r = new Random();
            for (i = 0; i < 15; i++)
                for (j = 0; j < 15; j++)
                    a[i, j] = r.Next(0, 50);
            for (i = 0; i < 15; i++)
                for (j = 0; j < 15; j++)
                    dataGridView1.Rows[i].Cells[j].Value =
                        a[i, j].ToString();
            int sum = 0;
            int res = 0;
            for (i = 0; i < 15; i++)
            {
                if (a[i, 1] == 1)
                {
                    for (j = 0; j < 15; j++)
                    {
                        sum += a[i, j];
                        res = sum / 15;
                    }
                    textBox1.Text = ("Номер строки " + i + Environment.NewLine +
                        "Среднее арифметическое = " + res);
                }
                else
                {
                    textBox1.Text = "Строки нет";
                }
            }
                        
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2014, 20:13
Ответы с готовыми решениями:

Ошибка в синтаксисе
Thread adder = new Thread(){/*TEST*/}; Идёт без ошибок, но стоит записать код: Thread adder = new...

Ошибка в синтаксисе
Parse error: syntax error, unexpected '&lt;' in Z:\home\php.test\www\size.php on line 3 &lt;?php...

Ошибка в синтаксисе
Всем привет. Учу реакт. Не могу разобраться вот в чем: есть один компонент const Title = () =&gt; {...

Ошибка в синтаксисе
//----------------------------------------------------------------------------- #ifndef TButGroupH...

10
36 / 36 / 15
Регистрация: 08.12.2014
Сообщений: 171
10.12.2014, 20:18 2
Для начала это надо вынести из цикла, а то вы вообще не пойми что считаете
Цитата Сообщение от Ariana Посмотреть сообщение
res = sum / 15;
Вы уверены что у вас в первом столбце хоть где-то есть 1? а то в силу рандома ее там может и не быть
1
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 22
10.12.2014, 20:25  [ТС] 3
Уверена. Я даже уменьшала конечное число рандомных чисел, так что у меня по несколько единиц было.
0
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 22
10.12.2014, 20:31  [ТС] 4
Из цикла вывела, проблема осталась.
Миниатюры
Ошибка в синтаксисе, работа с матрицами  
0
36 / 36 / 15
Регистрация: 08.12.2014
Сообщений: 171
10.12.2014, 20:39 5
Лучший ответ Сообщение было отмечено Ariana как решение

Решение

Цитата Сообщение от Ariana Посмотреть сообщение
if (a[i, 1] == 1)
Поправьте это на

if (a[i, 0] == 1)

ипосле того как нашли нужную строку делайте return, а то у вас находит строку, но если она не последняя то он пытается искать дальше и выводит последний результат

Добавлено через 50 секунд
Цитата Сообщение от Ariana Посмотреть сообщение
{
sum += a[i, j];
}
res = sum / 15;
extBox1.Text = ("Номер строки " + i + Environment.NewLine +
"Среднее арифметическое = " + res);
return;
1
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 22
10.12.2014, 20:46  [ТС] 6
Цитата Сообщение от Vladar107 Посмотреть сообщение
ипосле того как нашли нужную строку делайте return
все равно не помогло, сижу с Шилдтом, делаю как тут написано, все равно что-то не то.
0
36 / 36 / 15
Регистрация: 08.12.2014
Сообщений: 171
10.12.2014, 20:48 7
покажите что получилось
1
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 22
10.12.2014, 20:50  [ТС] 8
А, теперь все, я метод не туда запихала Спасибо большое, шлю вам миллион цветов!
0
230 / 208 / 92
Регистрация: 26.10.2012
Сообщений: 624
10.12.2014, 20:57 9
Ошибки:
1) переменная sum устанавливается в 0 вне цикла
for (i = 0; i < 15; i++),
ее надо обнулять в начале этого цикла, чтобы сумма корректно считалась
2) За каждый проход цикла вне зависимости от результата пишется текст в один и тот же TextBox.
У вас textBox1 и показывает результат по последней строке.
Или пишите в консоль, или делайте 15 текстовых полей.
А можно в матрицу добавить еще один столбец и результат писать в него
0
418 / 316 / 241
Регистрация: 29.05.2010
Сообщений: 796
Записей в блоге: 1
10.12.2014, 21:53 10
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 int sum = 0;
            int res = 0;
            for (i = 0; i < 15; i++)
            {
                if (a[i, 0] == 1)
                {
                    for (j = 0; j < a.GetLength(1); j++)
                    {
                        sum += a[i, j];
                    }
                    res = sum/15;
                    textBox1.Text += string.Format("Номер строки {0} ", i+1) + Environment.NewLine +  "Среднее арифметическое = " + res;
                   sum = 0;
                }
               
            }
0
0 / 0 / 1
Регистрация: 13.06.2014
Сообщений: 29
12.01.2016, 18:41 11
Здравствуйте! Подскажите, пожалуйста, а если количество колонок выходит больше фиксированного размера DataGridView, горизонтальная прокрутка будет?

Добавлено через 1 минуту
А, уже смог проверить, всё)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2016, 18:41

Ошибка в синтаксисе
Задача : Вася, Юля и Петя решили организовать праздничную вечеринку. Они пригласили в гости Женю с...

Ошибка в синтаксисе
Добрый день! Пытаюсь запустить в MySQL 8.0 следующий код, однако возникает сообщение о...

Ошибка в синтаксисе
Здравствуйте. Подскажите пожалуйста в чем может быть проблема: пытаюсь писать компонет для джумлы,...

Ошибка в синтаксисе
Здравствуйте! такой вопрос устанавливаем скрипт на хостинг и парсер выдаёт ошибку Parse error:...


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

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

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