Люди, подскажите как решить задачу в паскале. Завтра надо сдавать, а она у меня не готова!!! Проверить, является ли матрица X (15,15) симметричной (в симметричной матрице X(i,j) = x(j,i). Напечатать сообщение о результатах проверки. (это задача 21.10 из семестровой по информатике). HELP!!!
Толь, по-моему так: Program zadacha; uses crt; const n1=15; m1=15; type mat:array[1..m1, 1..n1]; var X:mat; i, j :integer; begin clrscr; writeln('Vvedite razmer matrici'); readln(m,n); for i:=1 to m do begin for j:=1 to n do begin writeln('X[i',i,',',j,']'); read(X[i,j]); end; for i:=1 to m do begin for j:=1 to n do begin if (i=j) and (j=i) writeln('yes') else if (i<>0) and (j<>0) writeln('no'); end; readkey; end. Роман.
Точнее вот так: Код: Program matrix; uses crt; type mat: array[1..15, 1..15]; var X:mat; i,j,m,n: byte; t: boolean; begin clrscr; t:=false; writeln('Введите размер матрицы через пробел:'); readln(m,n); for i:=1 to m do for j:=1 to n do begin write('X[i,',',j,']='); readln(X[i,j]); end; for i:=1 to m do for j:=1 to n do begin if x[i,j] <> x[j,i] then t:=true; end; if t then wirteln('Матрица не симметрична!') else wirteln('Матрица симметрична!') readkey; end.
МарьИванна PoliceMan Пожалуйста, напишите к вашим программам тестовый пример и блок схему... Огоромное спасибо за помощь!!!
ZoRG Извините, а в вашем дипломе будет написано "Волгограддский форум" вместо фамилии и имени вашего? Может за вас еще и сдать пойти эту задачу? Совсем нынче студент обленился и обнаглел. Вроде разжевали уже, так нет, все мало.
Знаешь, сам учусь на первом курсе. Тоже не успеваю. Тебе помогли программой, чего ещё надо? Тестовый пример написать? Так запусти прогу она тебе кучу примеров выдаст. А блок схему делай сам, если честно мне влом. Только что сделал начерталку, долго мучался и просто влом, я лучше в халфу пойду погоняю.
да сколько ж можно тебе помогать уже половина тем в разделе "образование" - твои просьбы о помощи.. и не злобствуй
PoliceMan Начерталку делаю без проблем-сдаю почти всегда самый первый в группе....а вот с информатикой что-то тяжеловато...только что закончил делать семестровую....три задания сделал сам, а четвёртое с вашей помощью!!! Pete. А тебе что жалко??? я тоже сдаю всё сам (ну..за исключением двух лаб по информатике... )
УРА!!!! Всё сделал!!Оформил все лабы и семестровую!!! [off]Мдя...только уже скоро в универ...ну и спать не хочется..пойду почитаю литературу по массивам или развёртку по начерталке сделать ....[/off]
Помогите решить задачу в Паскале (часть 2). Почему у меня программа выдаёт не верный результат??? Задание:Ввести двумерный массив Ф(M,N) (N<=10;M<=15) и выдать егона печать в виде таблицы. В каждой строке массива элементы, стоящие между MAX и MIN элементом, заменить нулями. Выдать преобразованный массив на печать. PROGRAM ABC; uses crt; var A:array[1..5,1..6] of integer; i,j,M,N,MAX,MIN,jMAX,jMIN:integer; begin clrscr; writeln('Введите размерность матрицы:'); write('N='); read(N); write('M='); read(M); for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,']='); readln(A[i,j]); end; for i:=1 to N do begin MAX:=A[i,1]; for j:=1 to M do if A[i,j]> MAX then MAX:=A[i,1]; jMAX:=j; end; for i:=1 to N do begin MIN:=A[i,1]; for j:=1 to M do if A[i,j]<MIN then MIN:=A[i,j]; jMIN:=j; end; for i:=1 to N do begin for j:=1 to M do if (j>jMIN) and (j<jMAX) then A[i,j]:=0; end; writeln('Матрица после преобразования:'); for i:=1 to N do for j:=1 to M do begin writeln(A[i,j]); end; readkey; End.
ZoRG Ну, для начала у тебя на печать выдаётся не таблица, а столбец.... Один.... длииинный такой. Выводи матрицу построчно!
ZoRG Задание не сложное! Бегло... мне кажеться ошибка здесь: for i:=1 to N do begin MAX:=A[i,1]; for j:=1 to M do if A[i,j]> MAX then MAX:=A[i,1]; jMAX:=j; end; for i:=1 to N do begin MIN:=A[i,1]; for j:=1 to M do if A[i,j]<MIN then MIN:=A[i,j]; jMIN:=j; По идее, тебе надо находить max и min в каждой строке? А ты находишь общий max&min! Да, ещё, когда я работал на Паскале я вывод ощуществлял так: for i:=1 to N do for j:=1 to M do begin writeln('A[',i,',',j,']',A[i,j]); end; Красота... и понятнее
с выводом: for i:=1 to N do begin for j:=1 to M do write(A[i,j]:6); writeln end; А вот в программа всё равно не даёт правильный результат. DENRI Мне кажется, что ты не прав насчёт мин и макс...вроде, они находятся в каждой строчке отдельно.... Demon Это я исправил.А дальше???
А еще не забудь инициировать jMax после того как делаешь присваивание MAX:=A[i,1]. Иначе если максимальным является первый элемент, то jMax не определена (то же самое и про минимум).
ZoRG А сколько времени вы смотрели на программу в отладчике перед тем как ее сюда выложить? Какой результат выдает? Какие данные вводите? Телепаты в отпусках. Вы хоть вопрос по-человечески сформулировать можете? Типа: "Не работает то-то и то-то, с такими входными и выходными данными". Или вы думаете, что все сразу бросятся искать то, не знаю что? Извините, но в таких случаях говорят, что ошибка в ДНК. Hermes добавил [date]1102592946[/date]: И, на будущее, давайте с вопросами программирования в СОФТ!!!
Код: for i:=1 to N do begin MAX:=A[i,1]; for j:=1 to M do if A[i,j]> MAX then MAX:=A[i,1]; {Вот здесь должно быть не 1 а j} jMAX:=j; {Вот здесь помойму ошибка, даже если ты нашел максимум} {у тебя все равно jMAX будет присвоен последний элемент} end; for i:=1 to N do begin MIN:=A[i,1]; for j:=1 to M do if A[i,j]<MIN then MIN:=A[i,j]; jMIN:=j; {Здесь тоже самое} end; PoliceMan добавил [date]1102596656[/date]: Hermes Чё ты к парню пристал? Помогаем ему решить задачу, исправляем, нет надо наезжать обязательно, лучше бы помог. PoliceMan добавил [date]1102597130[/date]: ZoRG И прога у тебя некорректная, ты нахдишь общий MIN и MAX и затем все между ними меняешь, пример: Есть матрица: 5 2 3 8 3 1 3 4 7 6 4 1 5 0 1 9 5 2 3 7 Вывод у тебя будет таким: 5 0 0 8 3 1 0 0 7 6 4 0 0 0 1 9 0 0 3 7 А должно быть: 5 2 0 8 3 1 0 0 7 6 4 1 5 0 1 9 0 2 3 7 И ещё надо учитывать что Min и Max могут стоят как в прямом порядке, (Min за Max), так и наоборот (Max за Min).
PoliceMan 1. Я ни к кому не приставал. 2. Прежде чем просить о помощи других надо попытаться разобраться самому. А я сомневаюсь, что ZoRG отладчик открывал и пытался разобраться, судя по его постам. 3. Человек, который хочет получить помощь, должен уважать тех, кого он о помощи просит. То есть по крайней мере ценить их время и корректно формулировать вопросы. А просьбы ZoRG можно спокойно заменить на: "А ну ка быстро напишите мне программу!". По крайней мере тональность этих просьб именно такая. В такой ситуации помогают раз, два, а потом посылают в пешее эротическое путешествие, т.к. человек начинает садиться на шею. У каждого, кто пишет программы рано или поздно возникают вопросы с которыми он лезет на форумы. И, как правило, сообщество настроено благожелательно, если выполняются пункты 2 и 3, которые я привел выше. Проблема новичка в том, что он считает, что отладчик, справка и учебники - пустая трата времени, а вот люди сейчас все бросят и начнут решать его проблемы. Все вышесказанное, ИМХО. Но могу рекомендовать почитать "Как правильно задавать вопросы" на RSDN. Или задать вопрос ZoRG там же :D
ZoRG раз тебе кажется....... креститься надо Ничего.... у тебя всё впереди.... я сейчас грызу Делфу.... скоро проект сдавать.....
PoliceMan Program matrix; uses crt; type mat: array[1..15, 1..15]; var X:mat; i,j,m,n: byte; t: boolean; begin clrscr; t:=false; // зачем, если размер матрицы известен? writeln('Введите размер матрицы через пробел:'); readln(m,n); for i:=1 to m do for j:=1 to n do begin write('X[i,',',j,']='); readln(X[i,j]); end; // Потенциальная дыра for i:=1 to m do for j:=1 to n do begin // если ввели n=15, m=20 // будет сравнение, например if x[15,20] <> x[20,15] // ошибка: выход за границы диапазона if x[i,j] <> x[j,i] then t:=true; end; if t then wirteln('Матрица не симметрична!') else wirteln('Матрица симметрична!') readkey; end. А если вы сейчас будете говорить, что это придирки и матрица должна быть квадратной, то тогда: 1. нафиг вводить 2 размерности (зачем их вообще вводить с клавиатуры - непонятно, условие этого не требует) 2. вместо for i:=1 to m do for j:=1 to n do begin по хорошему нужно написать for i:=1 to х do for j:=i+1 to х do begin где х - размерность матрицы