|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Помогите с прогой на TurboPascal, проверяющую является ли матрица А трёхдиагональной |
|
|
Разное - [решено] Помогите с прогой на TurboPascal, проверяющую является ли матрица А трёхдиагональной
|
Новый участник Сообщения: 40 |
Профиль | Отправить PM | Цитировать НУжно составить программу, проверяющую, является ли матрица А трёхдиагональной
Трёхдиагональная матрица выглидит как матрица три диагонали которой (средняя и две прилегающие) не равны нулю, а все остальные элементы, не входящие в эти диагонали, равны 0. Вот тут код есть один, не могу найти ошибку program diagonal; const n=8; var a:array[1..n,1..n]of integer; f:boolean; l,i,j:integer; begin l:=1; for i:=1 to n do for j:=1 to n do begin write('Enter A[',i,',',j,']:=');readln(a[i,j]); end; f:=true; for i:=1 to n do for j:=1 to n do if (abs(i-j)>l)and(a[i,j]<>0)then f:=false; write('matrix band:',f:7); readln; end. 1-элементы, входящие в эти три диагонали не равны нулю. 2-элементы , не входящие в эти три диагонали равны нулю. |
|
Отправлено: 15:33, 16-10-2010 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать dasha131, у тебя вполне рабочий код.
|
------- Отправлено: 16:19, 16-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Второй код я вообще не поняла, столько непонятных строк...
Давайте лучше разберем мой код, что тут нужно дополнить для работоспособности Цитата lxa85:
1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 matrix band: true (согласна) затем вводилась матрица 1 1 0 0 1 0 1 0 0 1 1 1 0 0 1 1 тоесть а[2,2] = 0 это уже не ленточная матрица, но код опять же выводит matrix band: true Дак в чем же ошибка? Нашелся вариант когда программа выводит False Это случай когда элементы не входящие в эти три диагонали неравны нулю. |
|
Отправлено: 07:51, 17-10-2010 | #3 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Что то сам себе огорчаюсь, теряю квалификацию прям на ходу :(
dasha131, добавь в цикл еще одно условие. Т.е. мы проверяем чтобы все что за 3мя было нулевым, а что внутри - нет. |
------- Отправлено: 10:38, 17-10-2010 | #4 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Теперь проверяю этот код
program asdf; const n=4; var a:array[1..n,1..n]of integer; f:boolean; l,i,j:integer; begin l:=1; for i:=1 to n do for j:=1 to n do begin write('Enter A[',i,',',j,']:='); readln(a[i,j]); end; f:=true; for i:=1 to n do for j:=1 to n do begin if (abs(i-j)>l)and(a[i,j]<>0)then f:=false; if (abs(i-j)<l)and(a[i,j]=0)then f:=false; write('matrix band:',f:7); readln; end; end. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 matrix band: true |
|
Отправлено: 12:11, 17-10-2010 | #5 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать dasha131, где у тебя end; // for j ?
цикл for j:=1 to n do begin if (abs(i-j)>l)and(a[i,j]<>0)then f:=false; if (abs(i-j)<l)and(a[i,j]=0)then f:=false; end; А верней закрыт, но не там. program asdf; const n=4; var a:array[1..n,1..n]of integer; f:boolean; l,i,j:integer; begin l:=1; for i:=1 to n do for j:=1 to n do begin write('Enter A[',i,',',j,']:='); readln(a[i,j]); end; f:=true; for i:=1 to n do for j:=1 to n do begin if (abs(i-j)>l)and(a[i,j]<>0)then f:=false; if (abs(i-j)<l)and(a[i,j]=0)then f:=false; end;//for j write('matrix band:',f:7); readln; end. |
------- Последний раз редактировалось lxa85, 17-10-2010 в 12:19. Причина: add code Отправлено: 12:15, 17-10-2010 | #6 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Да, теперь работает)) и еще во втором условии не хватало "=" для проверки элементов первой и третьей диагоналей
А что это за закрытие такое интересное Цитата lxa85:
|
|
Отправлено: 12:27, 17-10-2010 | #7 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата dasha131:
Показывает принадлежность к for, while, case и т.д. |
|
------- Отправлено: 13:17, 17-10-2010 | #8 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать А без нее можно код как то записать?
|
Отправлено: 19:27, 17-10-2010 | #9 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Ой рассмешила.
Конечно можно! //for j - это комментарий. Он на работу программы никак не влияет Вообще, все что за двойным слешем - // это строчный комментарий. Все что между фигурных скобок {многострочный комментарий} |
------- Отправлено: 20:17, 17-10-2010 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Вектор и матрица | toy | Программирование и базы данных | 8 | 01-06-2010 19:15 | |
Матрица ноутбука | Vlademort | Ноутбуки | 2 | 26-10-2009 12:03 | |
матрица - Windows | belyinosorog | Ноутбуки | 5 | 05-05-2009 08:03 | |
Rowerbooke512wh матрица | Pasha_11 | Ноутбуки | 0 | 13-12-2008 11:48 | |
Delphi - Помогите с прогой | Forsberg | Программирование и базы данных | 2 | 30-05-2008 19:35 |
|