Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ помогите дорешать 2 задачки

Автор: Vinsent90 27.05.2008 16:13

Возникли проблемы при решении 2х задач. blink.gif

1) Задан двухмерный массив, найти наибольший и наименьший элементы и поменять их местами.
Прикрепленный файл  MAXMIN.PAS ( 1.11 килобайт ) Кол-во скачиваний: 511
. Не могу поменять местами элементы массива sad.gif

2) Дана символьная строка. Определить, содержит ли строка числа, если да, то вывести на экран только чётные.
Прикрепленный файл  STROKA.PAS ( 431 байт ) Кол-во скачиваний: 510
.

Помогите плиз

Автор: sintanial 27.05.2008 17:48

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

Автор: Vinsent90 27.05.2008 20:03

Цитата(sintanial @ 27.05.2008 14:48) *

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

А как запомнить индексы ИМЕННО максимального или минимального элементов?? У меня запоминаются только индексы последнего значения матрицы. Может кто на пальцах объяснит...или прогу допишет dry.gif

Автор: мисс_граффити 27.05.2008 21:00

много раз выкладывалось
ну идея такая...
чтобы найти минимум ты в цикле делаешь, например:

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 28.05.2008 0:33

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

Код
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 28.05.2008 18:48

С первой задачей разобрался, жду коментариев на счёт второй...

Автор: Vinsent90 29.05.2008 0:03

Как определить, содержит ли символьная строка цифры ???

Код
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 29.05.2008 0:08

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


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 29.05.2008 14:35

Задачи решил, всем спасибо. smile.gif

Если кому нужны решения , выкладываю
Прикрепленный файл  1.PAS ( 1.68 килобайт ) Кол-во скачиваний: 467

Прикрепленный файл  2.PAS ( 796 байт ) Кол-во скачиваний: 479