Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 4

Подсчитать количество единиц на главной диагонали матрицы

26.04.2010, 16:57. Показов 2087. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с решением задач.
Миниатюры
Подсчитать количество единиц на главной диагонали матрицы  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.04.2010, 16:57
Ответы с готовыми решениями:

Подсчитать количество нулей на главной диагонали матрицы
дана вещественная матрица 9х6 подсчитать кол-во нулей на главной диагонале (через процедуру) Добавлено через 9 часов 31 минуту ...

Подсчитать количество положительных элементов на главной диагонали матрицы
В квадратной матрице А ( н х н ) элементы матрицы целые, задаются датчиком случайных чисел из интервала от-35 до 40. Подсчитать количество...

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

15
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
26.04.2010, 16:59
MaKu, это 7 разных задач. Желательно для каждой задачи иметь отдельную тему, тогда есть шансы, что вам помогут, а большое количество задач отпугивает помощников. Да и вообще,сомневаюсь, что кто-то бесплатно станет вам решать 7 задач. Может, вам лучше во фриланс?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
26.04.2010, 17:12
Знал бы я ещё, что такое главная и побочная диагональ, мож помог бы, а то универ уже 2 года назад закончил всё позабывал нафиг.
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 4
26.04.2010, 17:39  [ТС]
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Да и вообще,сомневаюсь, что кто-то бесплатно станет вам решать 7 задач.
Ну мне ненужно что бы один человек мне все решал. Один человек одну решит, другой другую, так глядишь и все решится
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
26.04.2010, 17:45
Пройди по предыдущим темам и посчитай тех, кто решал. Наберёшь 7?
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 4
26.04.2010, 20:02  [ТС]
кот Бегемот, Ну хотя бы несколько номеров кто нибудь решил.
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
26.04.2010, 20:03
Ну, жди. Я уже всё сказал.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
27.04.2010, 08:32
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

1.

PureBasic
1
2
3
4
5
6
7
8
9
10
' Матрица
DIM M(1 TO 7, 1 TO 7)
' Кол-во единиц
DIM Edinic AS INTEGER
    ' Ищем единицы и увеличиваем их счётчик
    FOR i = 1 to 7
       IF M(i, i) = 1 THEN Edinic = Edinic + 1
    NEXT
 
PRINT "Edinic na glavnoj diagonali:"; Edinic
MaKu, объяснишь что такое побочная диагональ мб решу.
1
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
27.04.2010, 09:31
>Quiet Snow<, побочная диагональ начинается из правого верхнего угла матрицы и идёт в левый нижний a(i,n+1-i)
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
27.04.2010, 13:09
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

кот Бегемот ясно, спасибо за разъяснение...

Первый и второй пункты, исправил кое-что...

PureBasic
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
' Матрица
DIM M(1 TO 7, 1 TO 7)
' Счетчик кол-ва единиц
DIM Edinic AS INTEGER
' Произведение эл-ов
DIM Proizved AS DOUBLE
'(опять же никто ничего не уточняет, посему удобнее так,
' ибо матрица по умолчанию типа SINGLE)
 
  RANDOMIZE 755   'Кому надо поменяет цифру(так удобней)
 
    ' Заполним матрицу случайными числами
    FOR ix = 1 TO 7: FOR iy = 1 TO 7
       M(ix, iy) = (RND * 5) -2.5
       ' Случайным образом расставим единицы на главной диагонали
       IF (INT(RND*2) = 1) AND (ix = iy) THEN M(ix, iy) = 1
    NEXT: NEXT
 
    ' Ищем единицы и увеличиваем их счётчик
    FOR i = 1 TO 7
       IF M(i, i) = 1 THEN Edinic = Edinic + 1
    NEXT
 
    ' Ищем произведение эл-ов
    FOR i = 1 TO 7
       IF i = 1 THEN
         Proizved = M(1, 7)
       ELSEIF i <> 1 THEN
         Proizved = Proizved * M(i, 8-i)
       END IF
    NEXT
 
 
PRINT "Edinic na glavnoj diagonali:"; Edinic
PRINT "Proizvedeniye elementov pobochn diagonali:"; Proizved
1
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
27.04.2010, 13:26
>Quiet Snow<, повторюсь: никто не требует от новичков описания типов переменных, поэтому в объявлении массива достаточно
PureBasic
1
DIM M(7,7)
А поскольку Бейсик - вообще язык не строгий, объявлять другие переменные, кроме массивов, вообще не надо, они по умолчанию - вещественные.

Ваш способ задания случайных чисел - это не из QBASIC, в нем задаётся вход в таблицу псевдослучайных чисел - как функция времени, прошедшего от начала суток, то есть
PureBasic
1
RANDOMIZE TIMER
, а само случайное (целое) число из некоторого интервала (например, -50+50) задается как
PureBasic
1
m(i,j)=int(rnd*101)-50
и последнее, IF..END IF, конечно, удобный блок, но по возможности лучше обходиться без него, сразу подозрение: шибко умный. Несколько команд после IF можно просто разделять двоеточиями в той же строке.

А по алгоритму никаких вопросов
1
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 4
28.04.2010, 15:14  [ТС]
Мне вот алгоритм словами написали:
1) главная диагональ - когда у элемента a[i,j], индексы i=j.

k=0
цикл i от 1 до n делать
если a[i,i]=1 тогда
k=k+1
конец если
конец цикла

на выходе имеем k=число единиц на главной диагонали.

2) побочная диагональ, когда у элемента a[i,j], индексы i+j=n+1 или j=n+1-i.

p=1
цикл i от 1 до n делать
p=p*a[i,n+1-i]
конец цикла

на выходе имеем p=произведение элементов побочной диагонали.

3) элемент над главной диагональю, когда j>i.
считаем что максимальный - первый элемент из верхнего треугольника.

max=a[1,2]
maxi=1
maxj=2
цикл i от 1 до n делать
цикл j от i+1 до n делать
если a[i,j]>max тогда
max=a[i,j]
maxi=i
maxj=j
конец если
конец цикла
конец цикла

на выходе max=максимальный элемент, maxi и maxj - его индексы

4) менять будем через временную переменную temp

цикл i от 1 до n делать
temp=a[i,1]
a[i,1]=a[i,4]
a[i,4]=temp
конец цикла

5) что такое "удалить четвертую строку?"
если забить нулями, то так:

цикл j от 1 до n делать
a[4,j]=0
конец цикла

6) среднее арифметическое всех элементов? тогда так:

avr=0
цикл i от 1 до n делать
цикл j от 1 до n делать
avr=avr+a[i,j]
конец цикла
конец цикла
avr=avr/(n*n)

7) вставить второй столбец с клавиатуры, какой-нить оператор INPUT небось.

цикл i от 1 до n делать
ввести (a[i,2])
конец цикла

или

цикл i от 1 до n делать
ввести (temp)
a[i,2]=temp
конец цикла
Добавлено через 22 часа 5 минут
В самом Basic'е все это пропечатываю, ничего не получается (((
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
28.04.2010, 20:28
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

>IF..END IF, конечно, удобный блок, но по возможности лучше обходиться без него

кот Бегемот, я не помню когда последний раз серьёзно напрягал мозги, но ты меня вогнал в такие рамки, что даже будучи матёрым программистом знающим все операнды диалекта сложно сообразить в таких экстримальных условиях, не говоря уже про новичков, которым хоть за что нибудь бы ухватиться - понять суть и объяснить олдскульному фортранному() преподу who is who.
Ну вот что должен знать новичёк?
Как определить массив, переменные их типы...
Как заполнить оные(ввод/вывод данных). Естественно семантические особенности, хотя бы общие понятия.
Написание математических/логических выражений, оператор присваивания.
Ключевые слова ветвлений, циклов, условий.
Это базовые вещи, без них вообще никуда, указанные задания не выполняются без них.
Заниматься оптимизацией на уровне "сложно/просто" это тоже с какой стороны посмотреть, препод сам не дурак(кому как не мне знать, что значит пытаться доказать что-то кандидату математических наук, знающему Asm и тонны теорий о всяких машинах Тьюринга и прочих прелестях типа Lisp).
Я не в укор говорю, а просто реально теряюсь, судя по всему размах знаний для таких дел нужен существенно меньше.

псевдокод появился, это радует, посмотрю и если буду уверен в его правильности, перефигачу в *.BAS* (те пункты в которых уверен)...

>что такое "удалить четвертую строку?"
Матрица с нулями в 4 строке и матрица без 4 строки - это 2 разных матрицы, к тому же разной размерности, в этом случае нужно перенести оставшуюся часть матрицы в 4-ю, 5-ю, 6-ю строки и "формально" уменьшить размерность при дальнейших операциях, матрица станет 7x6 (7 столбцов, 6 строк).

Добавлено через 48 минут
Всё кроме пункта 3, в нём я не уверен.

PureBasic
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
' Матрица
DIM M(1 TO 7, 1 TO 7)
' Счетчик кол-ва единиц
DIM Edinic AS INTEGER
' Произведение эл-ов
DIM Proizved AS DOUBLE
'(опять же никто ничего не уточняет, посему удобнее так,
' ибо матрица по умолчанию типа SINGLE)
DIM SredneeM
 
  CLS
  RANDOMIZE TIMER   'Таблица случ. ч. по таймеру
 
    ' Заполним матрицу случайными числами
    FOR ix = 1 TO 7: FOR iy = 1 TO 7
       M(ix, iy) = (RND * 5) - 2.5 ' Пусть все числа будут веществ, кроме тех
                                           ' которые будут переодич. появляться на диагонали  
       ' Случайным образом расставим единицы на главной диагонали
       IF (INT(RND * 2) = 1) AND (ix = iy) THEN M(ix, iy) = 1
    NEXT: NEXT
 
        PRINT "Ishodnaya matrica :"
 
     FOR iy = 1 TO 7: FOR ix = 1 TO 7
       PRINT M(ix, iy);
     NEXT: PRINT : NEXT
 
 
    ' Ищем единицы и увеличиваем их счётчик (Пункт 1)
    FOR i = 1 TO 7
       IF M(i, i) = 1 THEN Edinic = Edinic + 1
    NEXT
 
    ' Ищем произведение эл-ов (Пункт 2)
    FOR i = 1 TO 7
       IF i = 1 THEN
         Proizved = M(1, 7)
       ELSEIF i <> 1 THEN
         Proizved = Proizved * M(i, 8 - i)
       END IF
    NEXT
 
 
PRINT "Edinic na glavnoj diagonali:"; Edinic
PRINT "Proizvedeniye elementov pobochn diagonali:"; Proizved
 
    'Меняем столбцы (Пункт 4)
    FOR i = 1 TO 7
      SWAP M(1, i), M(4, i)
    NEXT
 
    'Копируем 5,6,7 строки в 4,5,6 соотв. (Пункт 5)
    'Теперь 7-ой строки для нас НЕТ
     FOR iy = 4 TO 6: FOR ix = 1 TO 7
       M(ix, iy) = M(ix, iy + 1)
     NEXT: NEXT
 
        PRINT "Novaya matrica :"
 
     FOR iy = 1 TO 6: FOR ix = 1 TO 7
       PRINT M(ix, iy);
     NEXT: PRINT : NEXT
 
    'Ищем среднее арифм. эл-в изменённой матрицы (Пункт 6)
     FOR iy = 1 TO 6: FOR ix = 1 TO 7
       SredneeM = SredneeM + M(ix, iy)
     NEXT: NEXT: SredneeM = SredneeM / 42
      PRINT "Srednee arifmeticheskoye matrici:"; SredneeM
 
    'Ввести 2 столбик с клавиатуры (Пункт 7)
      PRINT "Vvedite elementi vtorogo stolbca po odnomy"
      INPUT "1:", M(2, 1): INPUT "2:", M(2, 2): INPUT "3:", M(2, 3)
      INPUT "4:", M(2, 4): INPUT "5:", M(2, 5): INPUT "6:", M(2, 6)
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
28.04.2010, 21:11
>Quiet Snow<, я понимаю, как не хочется корежить себя, но вот беда: уровень преподавания в наших учебных заведениях таков, что всё даётся по минимуму, к примеру, если это объявление массива, то не

PureBasic
1
DIM masiv( 1 to 20,1 to 10)as single
а
PureBasic
1
а dim a(20,10)
не
PureBasic
1
2
3
4
if nomerStr>maxNomer then
indeks=indeks+1
massiv(indeks)=nomerStr
end if
а
PureBasic
1
if n>m then k=k+1:a(k)=n
а в нормальную запись не врубаются ни ученики, ни их тупые преподы
вот в чём беда!
а если ещё объявлять переменные или писать значок %, то тут можно ввести ученика (и учителя) в ступор!
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
28.04.2010, 21:45
кот Бегемот, во-во точняк...

>объявлять переменные
Вообще реально странно, преподы совсем обленились чтоли? Лет 5 назад такого ещё не было, основы давали как полагается пусть и без % ! # & $...
0
28.04.2010, 22:06

Не по теме:

Не учителя обленились, а часы сократились. Как мне известно, на программирование всё меньше часов в школах и колледжах

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2010, 22:06
Помогаю со студенческими работами здесь

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

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

Подсчитать количество элементов матрицы, лежащих выше главной диагонали
В двумерном массиве подсчитать количество элементов лежащих выше главной диагонали.

Матрицы. Подсчитать количество положительных элементов на и ниже главной диагонали
В TurboPascal 2)Двухмерный массив задан последовательностью случайных чисел от 0 до M. Размерность массива определяет...

Подсчитать количество нечетных элементов, расположенных ниже главной диагонали матрицы
Дана квадратная матрица А(N,N). Составить программу подсчета количества нечетных элементов, расположенных ниже главной диагонали.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru