• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите в Паскаль

  • Автор темы Автор темы zina
  • Дата начала Дата начала

zina

Ученик
Регистрация
4 Янв 2013
Сообщения
5
Реакции
0
Баллы
0
Помогите в Паскаль

день добрый)помоите кто чем сможет)) буду очеь благодарна)) В заданном целочисленном векторе An найти минимальное число справа, не входящее в вектор.
В заданном целочисленном массиве Ann поменять местами максимальные элементы главной и побочной диагоналей.
Произвести сортировку по возрастанию элементов заданного целочисленного вектора An.
В заданном целочисленном массиве Ann поменять местами строку с наименьшей суммой элементов и столбец с наибольшей.
Определить, является ли введенное слово палиндромом – одинаково читающимся как слева направо, так и справа налево: шалаш.
 
В заданном целочисленном векторе An найти минимальное число справа, не входящее в вектор.
Ребята, кто бы мне объяснил, что означают все эти "минимальные числа справа" да "максимальные слева", "не входящие в вектор", но, тем не менее, их нужно найти "в векторе"? Нет, правда - за всё время учебы и работы ни о чем подобном не слыхал, а сейчас все эти слева-справа посыпались на нашем форуме, как из рога изобилия. О чем речь?
 
Определить, является ли введенное слово палиндромом – одинаково читающимся как слева направо, так и справа налево: шалаш.
Код:
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.
 
В заданном целочисленном массиве 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.
 
знаю там есть лишнее так было удобнее проверять)):tehnari_ru_942:
 
ой) дело в том что она не всегда правилно работает(((tehno015
 
ой) дело в том что она не всегда правилно работает(((
Ага. Потому как не отлажена. Ошибочки имеются.
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.
 
Назад
Сверху