Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 04.01.2013, 11:08   #1 (permalink)
zina
Новичок
 
Регистрация: 04.01.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите в Паскаль

день добрый)помоите кто чем сможет)) буду очеь благодарна)) В заданном целочисленном векторе An найти минимальное число справа, не входящее в вектор.
В заданном целочисленном массиве Ann поменять местами максимальные элементы главной и побочной диагоналей.
Произвести сортировку по возрастанию элементов заданного целочисленного вектора An.
В заданном целочисленном массиве Ann поменять местами строку с наименьшей суммой элементов и столбец с наибольшей.
Определить, является ли введенное слово палиндромом – одинаково читающимся как слева направо, так и справа налево: шалаш.
zina вне форума   Ответить с цитированием

Старый 04.01.2013, 11:08
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Отправляю вам топики, которые по содержанию напоминают ваш

Паскаль! Помогите с задачкой
Кто Паскаль знает - помогите
Помогите решить. Паскаль
Помогите решить, Паскаль

Старый 04.01.2013, 15:10   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от zina Посмотреть сообщение
В заданном целочисленном векторе An найти минимальное число справа, не входящее в вектор.
Ребята, кто бы мне объяснил, что означают все эти "минимальные числа справа" да "максимальные слева", "не входящие в вектор", но, тем не менее, их нужно найти "в векторе"? Нет, правда - за всё время учебы и работы ни о чем подобном не слыхал, а сейчас все эти слева-справа посыпались на нашем форуме, как из рога изобилия. О чем речь?
Vladimir_S вне форума   Ответить с цитированием
Старый 04.01.2013, 15:21   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от zina Посмотреть сообщение
Определить, является ли введенное слово палиндромом – одинаково читающимся как слева направо, так и справа налево: шалаш.
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 04.01.2013, 18:41   #4 (permalink)
zina
Новичок
 
Регистрация: 04.01.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от zina Посмотреть сообщение
В заданном целочисленном массиве Ann поменять местами максимальные элементы главной и побочной диагоналей..
подправьте код))
Код:
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.
zina вне форума   Ответить с цитированием
Старый 04.01.2013, 18:42   #5 (permalink)
zina
Новичок
 
Регистрация: 04.01.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

знаю там есть лишнее так было удобнее проверять))
zina вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 04.01.2013, 18:43   #6 (permalink)
zina
Новичок
 
Регистрация: 04.01.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ой) дело в том что она не всегда правилно работает(((
zina вне форума   Ответить с цитированием
Старый 04.01.2013, 19:55   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от zina Посмотреть сообщение
ой) дело в том что она не всегда правилно работает(((
Ага. Потому как не отлажена. Ошибочки имеются.
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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:20.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.