Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите дорешать 2 задачки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Vinsent90
Возникли проблемы при решении 2х задач. blink.gif

1) Задан двухмерный массив, найти наибольший и наименьший элементы и поменять их местами.
Нажмите для просмотра прикрепленного файла . Не могу поменять местами элементы массива sad.gif

2) Дана символьная строка. Определить, содержит ли строка числа, если да, то вывести на экран только чётные.
Нажмите для просмотра прикрепленного файла .

Помогите плиз
sintanial
НУ для первого я думаю так, запоминаешь для минимального -его индексы в переменные ну например k,l а максимульный запоминаешь допустим в s,t . Дальше тупо берешь a[k,l]:=min; a[s,t]:=max;. Вроде дожно получиться =)
Vinsent90
Цитата(sintanial @ 27.05.2008 14:48) *

НУ для первого я думаю так, запоминаешь для минимального -его индексы в переменные ну например k,l а максимульный запоминаешь допустим в s,t . Дальше тупо берешь a[k,l]:=min; a[s,t]:=max

А как запомнить индексы ИМЕННО максимального или минимального элементов?? У меня запоминаются только индексы последнего значения матрицы. Может кто на пальцах объяснит...или прогу допишет dry.gif
мисс_граффити
много раз выкладывалось
ну идея такая...
чтобы найти минимум ты в цикле делаешь, например:
if a[i,j]<min then
min:=a[i,j];

а надо делать
if a[i,j]<a[mini,minj] then
begin
mini:=i;
minj:=j;
end;

то есть запоминаешь не значение элемента, а его индексы.
аналогично с максимальным.
Vinsent90
Не находятся коофициенты наименьшего числа. Кто ошибку найдёт?

Код
Program MaxMin;
uses crt;
var i,j,m,n,k,l,s,t,y,x : integer;
     max, min            : integer;
     maxi,maxj,mini,minj : integer;
     A, B, C: array[1..10,1..10] of integer;
Begin
clrscr;
      Write('koli4estvo strok, ne bolee 10 - '); ReadLn(N);
      Write('koli4estvo stolbcov, ne bolee 10 - '); ReadLn(M);
      if ((1>n) or (n>10) or (1>m) or (m>10))
      then begin writeln; writeln('OSHIBKA'); readln; halt; end;
        For i := 1 to N do
        For j := 1 to M do
          begin Write('A[',i, ',',j,']= ');
                ReadLn(A[i, j]);
          end;
       WriteLn;
      WriteLn(' matrica A');
      WriteLn;
      For i := 1 to N do
        begin
          For j := 1 to M do Write(A[i, j] : 5 );
          WriteLn;
          WriteLn;
        end;

  max:=A[1,1];
        for i:=1 to n do begin
        for j:=1 to m do
            if A[i,j]>max then max:=A[i,j]
            end; writeln ('naibolshii element = ', max);

  min:=A[1,1];
        for i:=1 to n do begin
        for j:=1 to m do
            if A[i,j]<min then min:=A[i,j];
            end;writeln ('naimenshii element = ', min);
            writeln;

        for i:=1 to n do begin
        for j:=1 to m do
            if A[i,j]>A[maxi, maxj] then begin
            maxi:=i; maxj:=j; end; end;

        for i:=1 to n do begin
        for j:=1 to m do
            if A[i,j]<A[mini, minj] then begin
            mini:=i; minj:=j; end; end;

writeln ('   mini=',mini,'   minj=',minj,'  maxi=',maxi,'  maxj=',maxj); writeln;

    A[maxi, maxj]:= min;
    A[mini, minj]:= max;

  WriteLn(' otvet= ');
  WriteLn;
     For i := 1 to N do
   begin
     For j := 1 to M do Write(A[i, j] : 5 );
  WriteLn; WriteLn; end;

Readkey;
clrscr;
end.


P.S. Со второй задачей помогите плз
Vinsent90
С первой задачей разобрался, жду коментариев на счёт второй...
Vinsent90
Как определить, содержит ли символьная строка цифры ???

Код
program CTPOKA;
Uses crt;
var n, x, i : integer;
    a: string;

begin

Writeln ('BBEguTe CTpoky');
readln (a);
n:=length(a);

    for i:=1 to n do
    begin



            

    end;

readkey;
clrscr;
end.
klem4
Цитата
Как определить, содержит ли символьная строка цифры ???


i := 1;
while (i <= length(s)) and not (s[i] in ['0'..'9']) do
inc(i);
if i <= length(s) then
writeln('includes numbers')
else
writeln('not includes numbers');
Vinsent90
Задачи решил, всем спасибо. smile.gif

Если кому нужны решения , выкладываю
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.