04.01.2013, 11:08 | #1 (permalink) |
Новичок
Регистрация: 04.01.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите в Паскаль
В заданном целочисленном массиве Ann поменять местами максимальные элементы главной и побочной диагоналей. Произвести сортировку по возрастанию элементов заданного целочисленного вектора An. В заданном целочисленном массиве Ann поменять местами строку с наименьшей суммой элементов и столбец с наибольшей. Определить, является ли введенное слово палиндромом – одинаково читающимся как слева направо, так и справа налево: шалаш. |
04.01.2013, 11:08 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Отправляю вам топики, которые по содержанию напоминают ваш Паскаль! Помогите с задачкой Кто Паскаль знает - помогите Помогите решить. Паскаль Помогите решить, Паскаль |
04.01.2013, 15:10 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ребята, кто бы мне объяснил, что означают все эти "минимальные числа справа" да "максимальные слева", "не входящие в вектор", но, тем не менее, их нужно найти "в векторе"? Нет, правда - за всё время учебы и работы ни о чем подобном не слыхал, а сейчас все эти слева-справа посыпались на нашем форуме, как из рога изобилия. О чем речь?
|
04.01.2013, 15:21 | #3 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Var S:String; b:boolean; i:Byte; Begin Write('Enter the word: '); Readln(S); b:=true; For i:=1 to (Length(S) div 2) do If S[i]<>S[Length(S)-i+1] then b:=false; Writeln(b); Readln End. |
|
04.01.2013, 18:41 | #4 (permalink) | |
Новичок
Регистрация: 04.01.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
Код:
uses crt; const n=5; var a: array[1..n,1..n] of byte; i,j: byte; max2,max1,max1i,max1j,max2i,max2j,temp: byte; begin randomize; for i:=1 to n do for j:=1 to n do a[i,j]:= Random(100); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln end; writeln; max1:=a[1,1]; max2:=a[1,n]; for i:=2 to n do begin if a[i,i]>max1 then begin max1:=a[i,i]; max1i:=i; max1j:=j; end; if a[i,n-i+1]>max2 then begin max2:=a[i,n-i+1]; max2i:=i; max2j:=n-i+1; end; end; writeln('maxglavn: ',max1); writeln('maxpoboch: ',max2); writeln; temp:= max1; A[max1i,max1j] := A[max2i,max2j]; A[max2i,max2j] := temp; writeln(); for i := 1 to n do begin writeln(); for j := 1 to n do begin write(A[i,j]:4); end; end; readln(); end. |
|
04.01.2013, 18:42 | #5 (permalink) |
Новичок
Регистрация: 04.01.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
знаю там есть лишнее так было удобнее проверять))
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
04.01.2013, 19:55 | #7 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ага. Потому как не отлажена. Ошибочки имеются.
1. Циклы поиска максимумов по диагоналям объединять нельзя. Ну то есть можно, но тогда нужно иначе задавать стартовые значения максимумов (типа "меньше наименьшего") и начинать объединенный цикл не с 2, а с 1. Дело в том, что, если, например, максимальным элементом главной диагонали окажется [1,1], то Ваш цикл не выполнится ни разу, и, следовательно, индексам max1i и max1j вообще не будут присвоены значения, точнее, они останутся нулевыми, и программа выдаст ошибку. Поэтому исходные значения индексам необходимо присвоить, а поскольку для диагоналей они разные, циклы пришлось разделить. Впрочем, если Вы очень хотите объединенный цикл, то, повторяю, можно, но несколько иначе. 2. Ошибка в присваивании значения max1j: у Вас j, а надо i. С учетом этого и еще по мелочи - вот отлаженный вариант: Код:
uses crt; const n=5; var a: array[1..n,1..n] of byte; i,j,max2,max1,max1i,max1j,max2i,max2j,temp: byte; begin clrscr; randomize; for i:=1 to n do for j:=1 to n do a[i,j]:= Random(100); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln end; writeln; max1:=a[1,1]; max1i:=1; max1j:=1; for i:=2 to n do if a[i,i]>max1 then begin max1:=a[i,i]; max1i:=i; max1j:=i; end; max2:=a[1,n]; max2i:=1; max2j:=n; for i:=2 to n do if a[i,n-i+1]>max2 then begin max2:=a[i,n-i+1]; max2i:=i; max2j:=n-i+1; end; writeln('maxglavn: ',max1); writeln('maxpoboch: ',max2); writeln; A[max1i,max1j]:=max2; A[max2i,max2j]:=max1; writeln; for i:=1 to n do begin writeln; for j:=1 to n do write(A[i,j]:4); end; readln; end. Код:
uses crt; const n=5; var a: array[1..n,1..n] of byte; i,j,max2,max1,max1i,max1j,max2i,max2j,temp: byte; begin clrscr; randomize; for i:=1 to n do for j:=1 to n do a[i,j]:= Random(99)+1; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln end; writeln; max1:=0; max2:=0; for i:=1 to n do begin if a[i,i]>max1 then begin max1:=a[i,i]; max1i:=i; max1j:=i; end; if a[i,n-i+1]>max2 then begin max2:=a[i,n-i+1]; max2i:=i; max2j:=n-i+1; end; end; writeln('maxglavn: ',max1); writeln('maxpoboch: ',max2); writeln; A[max1i,max1j]:=max2; A[max2i,max2j]:=max1; writeln; for i:=1 to n do begin writeln; for j:=1 to n do write(A[i,j]:4); end; readln; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|