Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процедуры, функции 
:(
    Опции темы
whitey
Дата 14.12.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Нужно эти 2 задачи переделать так чтобы в них были процедуры или функции.
Код
uses crt;
var a:array[1..100,1..100] of integer;
    b:array[1..100] of integer;
    i,j,m,n,k,buf:integer;
begin
clrscr;
write('m='); read(m);
write('n='); read(n);
for i:=1 to m do
    for j:=1 to n do
        begin
             write('a[',i,',',j,']=');
             read(a[i,j]);
        end;
k:=0;
for i:=1 to m do
    for j:=1 to n do if (a[i,j]>a[1,1]) then
        begin
             k:=k+1;
             b[k]:=a[i,j];
        end;
for i:=1 to k-1 do
     for j:=i+1 to k do if b[i]<b[j] then
          begin
                  buf:=b[i];
                  b[i]:=b[j];
                  b[j]:=buf;
          end;
for i:=1 to m do
    begin
         for j:=1 to n do
             write(a[i,j],' ');
             writeln
    end;
writeln;
        for j:=1 to k do
        write(b[j],' ');
end.

Код
uses crt;
const mn:set of char=['a','e','i','y','o','u'];
var st: string;
    i,k,n,p:integer;
    mas:array [1..100] of string;
    flag:boolean;
begin
clrscr;
flag:=false;
n:=0;
repeat
      k:=0;
      n:=n+1;
      readln(mas[n]);
      for i:=1 to length(mas[n]) do if mas[n][i] in mn then inc(k);
      if (k=3) then
         begin
              flag:=true;
         end;
until (flag=true) or (n=100);
writeln (mas[n][length(mas[n])-1],mas[n][length(mas[n])]);
end.


PM MAIL   Вверх
Majar
Дата 14.12.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Цитата

Нужно эти 2 задачи переделать так чтобы в них были процедуры или функции.

Так и переделывайте. Без текста задач трудно понять, что можно сделать процедурой, а вообще как правило их используют для упрощения кода программы, то есть те куски кода, что будут повторяться надо запихнуть в процедуры
PM MAIL   Вверх
whitey
Дата 14.12.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Цитата(Majar @  14.12.2008,  19:25 Найти цитируемый пост)
Так и переделывайте. Без текста задач трудно понять, что можно сделать процедурой, а вообще как правило их используют для упрощения кода программы, то есть те куски кода, что будут повторяться надо запихнуть в процедуры

1) В матрице m*n найти все числа, большие от первого элемента. Вывести на экран матрицу и все числа большие 1-го элемента в порядке по убыванию.
2)Программа должна считывать с клавиатуры слова в массив до тех пор, пока не будет введено слово, которое имеет в себе 3 гласные буквы, после чего должна выдать на экран строку, которая содержит последние 2 буквы введенной последовательности слов.

Это сообщение отредактировал(а) whitey - 14.12.2008, 19:51
PM MAIL   Вверх
Majar
Дата 14.12.2008, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Мда, задачи-то не особо "процедурные". Вот гляньте, я добавил в вашу вторую задачу функцию+оптимизировал и исправил:
Код

uses crt;
const mn:set of char=['a','e','i','y','o','u'];
var
 n: word;
 mas:array [1..100] of string;
function Flag(const s: string):boolean;
var
 i, k: word;
begin
 k:= 0;
 Flag:= false;
 for i:=1 to length(s) do
  if s[i] in mn then
   inc(k);
 if (k=3) then
   Flag:=true;
end;
begin
clrscr;
n:=0;
repeat
 begin
  n:=n+1;
  readln(mas[n]);
 end;
until (flag(mas[n])=true) or (n=100);
 writeln(mas[n][length(mas[n])-1],mas[n][length(mas[n])]);
 readln;
end.

С первой задачей попробуйте сами - сделайте процедуру сортировки массива например и передавайте ваш массив как параметр этой процедуре

Это сообщение отредактировал(а) Majar - 14.12.2008, 20:05
PM MAIL   Вверх
whitey
Дата 14.12.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Код

procedure sort(b:array[1..100] of integer; i,j,m,n,k,buf:integer)
begin
for i:=1 to k-1 do
     for j:=i+1 to k do if b[i]<b[j] then
          begin
                  buf:=b[i];
                  b[i]:=b[j];
                  b[j]:=buf;
          end;
end;

Так?
PM MAIL   Вверх
volvo877
Дата 14.12.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(whitey @  14.12.2008,  19:23 Найти цитируемый пост)
Так? 
Не так... Запусти наконец компилятор, и он тебе скажет, где ошибка... Здесь не удаленный сервер для компилирования программ в конце концов... Уж нажать F9 каждый в состоянии САМ...

PM MAIL   Вверх
Majar
Дата 14.12.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Цитата

Код

procedure sort(b:array[1..100] of integer; i,j,m,n,k,buf:integer)
begin
for i:=1 to k-1 do
     for j:=i+1 to k do if b[i]<b[j] then
          begin
                  buf:=b[i];
                  b[i]:=b[j];
                  b[j]:=buf;
          end;
end;

Так? 

Нет, во-первых, вы должны объявить тип массива, чтобы использовать для указания типа массива в параметрах процедуры
Код

type
massiv = array[1..100] of integer;
...

Во-вторых, зачем передавать в параметры все счетчики? Раз они у вас глобальные переменные нет необходимости их передавать.
Поэтому процедура должна выглядеть так:
Код

procedure sort(var b:massiv);
var
buf: integer;
begin
for i:=1 to k-1 do
     for j:=i+1 to k do if b[i]<b[j] then
          begin
                  buf:=b[i];
                  b[i]:=b[j];
                  b[j]:=buf;
          end;
end;

PS Переменную buf лучше сделать локальной, так как больше она нигде не используется
PM MAIL   Вверх
volvo877
Дата 14.12.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Majar @  14.12.2008,  19:37 Найти цитируемый пост)
Поэтому процедура должна выглядеть так:
Ты в следующий раз добавляй "я думаю", а не приводи свое мнение, как истину в последней инстанции. Потому что тут как минимум напрашивается еще и открытый массив:
Код
procedure sort(var b: array of integer);

PM MAIL   Вверх
Majar
Дата 14.12.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Цитата

Ты в следующий раз добавляй "я думаю", а не приводи свое мнение, как истину в последней инстанции. Потому что тут как минимум напрашивается еще и открытый массив:

 Я не подразумевал, что мои слова - "истина в последней инстанции", а просто сказал, как я считаю, и это означало просто мое мнение, а не догму какую-то. А если вы ищете к чему придраться и у вас плохое настроение - ваши проблемы. Интересно было бы знать зачем здесь открытый массив, если в самой программе размер данного массива постоянен и нет работы с массивами разных размерностей?

Это сообщение отредактировал(а) Majar - 14.12.2008, 21:04
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.