Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Требуется решить задачу |
Философия, технологии, алгоритмы! |
|
Опции темы |
10.10.2005, 09:48 | #1 |
TrancePort
Сообщений: 151
Регистрация: 28.05.2005
Не в сети |
Требуется решить задачу
Задача: Задана действительная квадратная матрица А порядка n.Заменить элементы главной и побочной диагоналей - на 1,а на их пересечении поместить 0.
Нужно написать программу на Паскале и составить структурную схему алгоритма. p/s/ Предлагайте,кто за какую цену согласиться это написать. Мое мыло: [email protected] |
10.10.2005, 13:59 | #2 |
Альдо Апачи
Сообщений: 11,183
Регистрация: 21.06.2005
Возраст: 43
Не в сети |
это шутка? или за такие задачи кто-то действительно готов отдать деньги??? мозги соФФсем атрофировались?
|
11.10.2005, 07:54 | #5 |
TrancePort
Сообщений: 151
Регистрация: 28.05.2005
Не в сети |
Блин тут все такие умные,а решить не могут....обидно
Я только в сентябре начал изучать Паскаль. |
11.10.2005, 12:31 | #7 |
Кэп Улитка
Сообщений: 8,067
Регистрация: 04.05.2005
Возраст: 43
Не в сети |
Самое лучшее тогда наверно найти чела который просто бы объяснил Паскаль и основы проганья, а программу сам бы ты после написал
В принципе я бы мог попробовать втолковать (хотя честно, Паскаль знаю хреново [больше прогал на Delphi6-7, а там уже отличия]) |
11.10.2005, 14:11 | #9 |
Альдо Апачи
Сообщений: 11,183
Регистрация: 21.06.2005
Возраст: 43
Не в сети |
Кстати, а не сказано что делать, если диагонали не пересекаются? (При четном n) Что менять на 0? Или в таком случае на 0 ничего не меняется?
З.Ы. С каждого по паре строк - голому программа programm Matrix (input, output); var n,i,j:integer; A:array [1..100,1..100] of Integer; begin |
11.10.2005, 16:26 | #12 | |
Альдо Апачи
Сообщений: 11,183
Регистрация: 21.06.2005
Возраст: 43
Не в сети |
Цитата:
|
|
11.10.2005, 16:26 | #13 |
Альдо Апачи
Сообщений: 11,183
Регистрация: 21.06.2005
Возраст: 43
Не в сети |
Забыли ввод n и собственно ввод массива.
|
12.10.2005, 01:12 | #14 |
sotriciano cosmoticatrio
|
ну так и напишем процу для ввода
Pprocedure Input; begin Writeln('Input dimension of matrix:'); Readln(n); While not(n in [1..100]) do begin Writeln('Error. Input again:'); Readln(n); end; For i := 1 to n do For j := 1 to n do begin Writeln('Input ('+IntToStr(i)+','+IntToStr(j)+') element of matrix'); Readln(a[i,j]); end; end; |
12.10.2005, 07:30 | #15 | |
Форумец
Сообщений: 526
Регистрация: 21.06.2004
Не в сети |
Цитата:
в делфях есть, начиная с каких то 3 или 4, а в каноническом паскале нет! |
|
12.10.2005, 08:48 | #16 |
Бывалый форумец
Сообщений: 687
Регистрация: 05.08.2005
Не в сети |
А можно и сразу вычислить, куда девать (или не девать) 0, и не считать это каждый раз в цикле
например, на С или С++ (Паскаль уже подзабыла, каюсь, лет 10 или 12 на нем не работала, хотя паскалевские заклинания легко понимаю на чтение ): int centre=(n%2)? n/2+1 : -1; (это для С-шных массивов, где индекс начинается с 0) и потом сравнивать (i==j && i==centre) - тады писать там 0. в смысле, если n нечетное (есть пересечение), то centre будет индексом "середины". Если n четное (нет пересечения), то в centre здесь "загнана" -1, которая в циклах никогда потом не встретится и соотв. не будет значения 0 в выходной матрице. |
13.10.2005, 08:10 | #19 |
Лентяй
Сообщений: 5,456
Регистрация: 23.03.2005
Возраст: 51
Не в сети |
Yandex Подожди, ещё я не выступал
В общем, нафик паскаль, пишем на Ц. Впрочем, двухмерный массив тоже нафик, всё равно память линейна - а пересчёты мы соптимайзим лучше компилера. int n; int *a, i; // assign dimension to n here a = malloc( n * n * sizeof( int ) ); // insert array input here if( n & 1 ) a[ n + ( n >> 1 ) ] = 0; for( i = 0; i < n; i++ ) a[ i * ( n + 1 ) ] = a[ ( n - i ) * ( n - 1 ) ] = 1; // insert array output here free( a ); 4283361984 Устроит? На паскаль сам переведи, чтоб жизнь мёдом не казалась. Ввод-вывод надесь, проблем не составит PS: А что, порезвиться нельзя? |
13.10.2005, 12:38 | #20 |
бибизьян
Сообщений: 3,031
Регистрация: 17.02.2004
Не в сети |
Balrog Вспомнилось, как в универе я измывался над преподом, оформляя программы примерно так:
begin asm ...здесь содержательная часть кода... end; end; Он спрашивал, увидев очередной мой опус, это что? Я говорил, как что, программа на Pascal-е. - Какой же это паскаль? - Как какой, самый обычный, компилятор принял, значит - ПАСКАЛЬ ЗЫ. Глупый был, нарывался... |
17.10.2005, 04:05 | #21 |
sotriciano cosmoticatrio
|
вот и забили пареньку голову, если он не мог решить столько "школьной" задачи, то вы его своими Сями завели в тако глупое положение, что он захочет взять книжку и научится таи это паскалю!
зы. а может даже и Сям!!! |
17.10.2005, 08:53 | #22 |
TrancePort
Сообщений: 151
Регистрация: 28.05.2005
Не в сети |
Вот собрал программу,только что то она не работает.В чем причина ?
program Matrix (input, output); var n,i,j:integer; A:array [1..100,1..100] of Integer; begin For i:=1 to n do begin For j:=1 to n do begin If i=j then a[i,j]:=1; If i=(j-n-1) then a[i,j]:=1; If (i=j) and (i=n/2) then a[i,j]:=0; end; end; |
17.10.2005, 09:03 | #23 |
Лентяй
Сообщений: 5,456
Регистрация: 23.03.2005
Возраст: 51
Не в сети |
4283361984 А с чего ты взял, что она не работает? Если ты привёл всю программу - то она скорее всего работает, ты просто результатов не видишь. Ввод-вывод (или хотя бы только вывод) вставь, да? А, ещё в конце строчку
end. |
17.10.2005, 14:38 | #25 | |
Альдо Апачи
Сообщений: 11,183
Регистрация: 21.06.2005
Возраст: 43
Не в сети |
Цитата:
|
|
17.10.2005, 15:35 | #26 |
Бывалый форумец
Сообщений: 687
Регистрация: 05.08.2005
Не в сети |
Хм.. у меня С-шный текст прекрасно работал только на 2-х циклах, без проверки принадлежности. На 2-х - только потому, что это - первое, что пришло в голову. Как справедливо замечает народ, там даже второго цикла не нужно - одного хватит.
Что-то типа того for (i=0; i<n; i++) a[i][i]=a[i][n-1-i]=(i==centre)?0:1; только навскидку не помню a[i][n-1-i] или a[n-1-i][i] |
17.10.2005, 15:43 | #27 |
Альдо Апачи
Сообщений: 11,183
Регистрация: 21.06.2005
Возраст: 43
Не в сети |
Кстати да, проще сделать все в 1 цикле.
|
18.10.2005, 11:33 | #28 |
Форумец
Сообщений: 5
Регистрация: 18.10.2005
Возраст: 41
Не в сети |
Мдаа, товарисчи..
А как тема начиналась - "это шутка? или за такие задачи кто-то действительно готов отдать деньги??? мозги соФФсем атрофировались?" Потом путем мучительно, общими усилиями родили. В 2х циклах. Это, вам, не GUI с базами данных мучать)) const n = 100; var a:array[1..n,1..n] of real; i:integer; begin //ввод for i:=1 to n do begin a[i,i]:=1; a[i, n-i+1]:=1; end; if (n mod 2 = 0) then a[n div 2,n div 2]:=0; //вывод end. |