Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2009, 21:44   #1
art_melnichenko
 
Регистрация: 22.01.2009
Сообщений: 6
Восклицание Помогите пожалуйста с 2-мя задачками

1. Тема работы - СТРОКОВЫЙ ТИП ДАННЫХ
Дан текст (массив символьных строк). Найти в тексте номер первой по порядку группы цифр, начинающейся цифрой 2.


2. Тема работы - РАБОТА С ДВУМЕРНЫМИ МАССИВАМИ
В работе необходимо максимально использовать аппарат процедур и функций.
В матрице определить минимальный элемент на главной диагонали. Строку, содержащую этот элемент, поменять местами со столбцом, число положительных элементов в котором максимально.
art_melnichenko вне форума Ответить с цитированием
Старый 22.01.2009, 22:23   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вторая:
Следует заметить, что если номер строки и номер столбца не совпадают, то один элемент теряется (тот, который на пересечении).
Код:
uses crt;
const n=5;
type matrix = array[1..n,1..n] of integer;   
var
M : matrix;
i,j,a,b : integer;

function minimum(mmm : matrix) : integer;   { функция нахождения минимума }
  var mi,mj : integer;
  begin
  mj := 1;       { считаем, что первый элемент диагонали - минимум }
  for mi:=1 to n do     { идем по главной диагонали }
    if mmm[mi,mi]<mmm[mj,mj] then mj := mi;   { если элемент меньше текущего минимума, запоминаем его }
  minimum := mj;      { возвращаем номер строки }
  end;

function maxstolb(mmm : matrix) : integer;  
  var mi,mj,k,c,nm : integer;
  begin
  c := 0;   { считаем, что в первом столбце 0 положительных элементов} 
  nm := 1;  
  for mj:=1 to n do   { проходим по всем столбцам }
    begin
    k := 0;   { зануляем счетчик для текущего столбца }
    for mi:=1 to n do     { идем по элементам столбца }
      if mmm[mi,mj]>0 then    { если элемент положительный... }
        inc(k); { увеличиваем счетчик }
    if k>c then   { если количество положительных эл-в в этом столбце больше }
       begin
       c := k;   { запоминаем количество  }
       nm := mj;  { запоминаем номер }
       end;
    end;
  maxstolb := nm;  { возвращаем номер }
  end;

procedure obmen(ti,tj : integer; var mmm : matrix); { принимаем номера троки и столбца }
  var mi,tmp : integer;
  begin
  for mi := 1 to n do  { идем по строке (где минимум нашли)  }
    begin
    tmp := mmm[mi,tj];      { обмениваем значения элементов строки и столбца }
    mmm[mi,tj] := mmm[ti,mi];
    mmm[ti,mi] := tmp;
    end;
  end;

begin
clrscr;
randomize;   { инициализируем генератор случайных чисел }
{ заполняем массив }
for i:=1 to n do
  begin
  for j:=1 to n do
    begin
    M[i,j] := random(20)-9;
    write(M[i,j]:4);  { ...и выводим сразу }
    end;
  writeln;
  end;
writeln;
{-----}
a := minimum(M);  { берем номер строки }
b := maxstolb(M);  { ...номер столбца }
obmen(a,b,M);   { и обмениваем }
{ выводим новую матрицу }
for i:=1 to n do
  begin
  for j:=1 to n do
  write(M[i,j]:4);
  writeln;
  end;

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 22.01.2009 в 23:31. Причина: добавил комменты
Sazary вне форума Ответить с цитированием
Старый 22.01.2009, 22:34   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Первая:
Код:
uses crt;
const mn = ['0'..'9'];
var
s : string;
i,k : integer;
fl : boolean;  { флаг }
begin
clrscr;
writeln('Enter text:');
readln(s);  { читаем строку }
i:=1;  { текущий символ - первый }
k:=0;  { счетчик блоков цифр }
fl := false;  { 2 не найдена }
while i<=length(s) do  
  begin
  if s[i] in mn then   { если встретили цифру... }
    begin
    inc(k);   { увеличиваем счетчик }
    while s[i] in mn do  { идем до конца блока }
      begin
      if s[i] = '2' then   { если встретили 2... }
        begin
        fl := true;   { устанавливаем флаг }
        break; { выходим из цикла }
        end;
      inc(i);   
      end;
    end;
  if fl then break;   { если нашли 2, то выходим из внешнего цикла }
  inc(i);
  end;

writeln('Nomer gruppy: ',k);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 22.01.2009 в 23:35. Причина: добавил комменты
Sazary вне форума Ответить с цитированием
Старый 22.01.2009, 23:11   #4
art_melnichenko
 
Регистрация: 22.01.2009
Сообщений: 6
По умолчанию

спасибо большое за задачки, кажись всё в как надо работает.
А можно к каждой строчке в программке написать комментарий, я то преподаватель спросит чё нибудь. Заранее ещё раз спасибо, очень выручили.
art_melnichenko вне форума Ответить с цитированием
Старый 22.01.2009, 23:35   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Добавил в листинги
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Друзья помогите пожалуйста с задачками! sting Паскаль, Turbo Pascal, PascalABC.NET 32 07.07.2008 17:05
Помогите, пожалуйста с задачками по Паскалю Космонавт Помощь студентам 20 13.06.2008 00:14
Помогите с задачками lexIS Помощь студентам 0 05.12.2007 23:17
Помогите пожалуйста с 2-мя задачками Shatyn Помощь студентам 1 13.06.2007 15:42
Выручте пожалуйста с тремя задачками ByteMan Помощь студентам 8 07.06.2007 23:39