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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2012, 05:57   #1
Necron
 
Регистрация: 07.04.2012
Сообщений: 7
По умолчанию Программа на паскале через функции

Вообщем нужно написать программу: Вводится двумерный массив произвольного размера,в нём находится последний отрицательный элемент и элемент меньше максимального на заданную величину, ответ вывести в строковом типе. И ещё программа должна быть написана на паскале с использованием функций,это обязательное условие. Прошу помоч
Necron вне форума Ответить с цитированием
Старый 07.04.2012, 12:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это функция ввода массива и вычисления последнего отрицательного
Код:
function _input(a,s:byte):string;
var q,w,n:integer;ss:string;
begin
 for q:=1 to a do begin
  for w:=1 to s do begin
   readln(mass[q,w]);
   if mas[q,w]<0 then n:=mas[q,w];
  end;
end;
str(n,ss);
_input:=ss;
end;
Для нее обьяви массив mass, и вызывай так: write(_input(n,m));
Где n,m - размерность массива.

Идея уловима?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2012, 16:16   #3
Necron
 
Регистрация: 07.04.2012
Сообщений: 7
По умолчанию

Да это я понял ,но у меня в основном проблема была со вторым заданием, найти элемент меньше максимального на заданную величину , проблема конкретно заключается в том что я не могу написать функцию для сортировки методом пузырька двумерного массива, с одномерным проблем нету, а с двумерным никак не получается. ( да ещё я решил использовать сортировку т.к. не имею понятия как иначе найти максимальный элемент, метод пузырька выбрал т.к. он самый простой) Помогите с этим пожалуйста.
Necron вне форума Ответить с цитированием
Старый 07.04.2012, 17:06   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:
max:=-32768;
for i:=1 to n do
	for j:=1 to m do
		if a[i,j]>max then
			max:=a[i,j];
elem:=max-d;
for i:=1 to n do
begin
	if elem=-32768 then
		exit;
	for j:=1 to m do
		if a[i,j]=elem then
		begin
			writeln('Element found');
			elem:=-32768;
			exit;
		end;
end;
if elem<>-32768 then
		writeln('Element not found');
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.04.2012, 08:33   #5
Necron
 
Регистрация: 07.04.2012
Сообщений: 7
По умолчанию

Да это работает но мне бы тоже самое только через функцию...
Necron вне форума Ответить с цитированием
Старый 08.04.2012, 13:23   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:
function max(a:mas):integer;
var
i,j:integer;
begin
max:=-32768;
for i:=1 to high(a) do
	for j:=1 to high(a[i]) do
		if a[i,j]>max then
			max:=a[i,j];
end;


functon search(a:mas;elem:integer):boolean;
var
i,j:integer;
begin
for i:=1 to high(a) do
	for j:=1 to high(a[i]) do
		if a[i,j]=elem then
		begin
			search;=true;
			exit;
		end;
search:=false;
end;


if search(a,max(a)-d) then
	writeln('Found')
else
	writeln('Not found');
Проверьте.
mas - тип массива
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.04.2012, 17:06   #7
Necron
 
Регистрация: 07.04.2012
Сообщений: 7
По умолчанию

Выдаёт ошибку 88 в первой функции на операторе then.

Ещё просьба сделать так чтобы вместо надписи found появлялось именно число которое меньше максимального на заданную величину, и ещё покажите пожалуйста как данные функции вызвать в программе.
Necron вне форума Ответить с цитированием
Старый 08.04.2012, 17:37   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:
Uses CRT;

const
t1=100;
t2=100;

type
mas=array[1..t1,1..t2] of integer;

var
n,m,d,elem,i,j:integer;
a:mas;

function max(a:mas):integer;
var
i,j,tmp:integer;
begin
tmp:=-32768;
for i:=1 to high(a) do
	for j:=1 to high(a[i]) do
		if tmp<a[i,j] then
			tmp:=a[i,j];
max:=tmp;
end;

function search(a:mas;elem:integer):boolean;
var
i,j:integer;
begin
for i:=1 to high(a) do
	for j:=1 to high(a[i]) do
		if a[i,j]=elem then
		begin
			search:=true;
			exit;
		end;
search:=false;
end;

BEGIN
writeln('Input size of matrix and delta');
readln(n,m,d);

for i:=1 to n do
  for j:=1 to m do
  begin
    write('a[',i,',',j,']: ');
    readln(a[i,j]);
  end;
  
for i:=1 to n do
begin
  for j:=1 to m do
    write(a[i,j]:5);
  writeln;
end; 

elem:=max(a)-abs(d);
if search(a,elem) then
	writeln('Found (',elem,')')
else
	writeln('Not found');

readln;
END.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.04.2012, 17:59   #9
Necron
 
Регистрация: 07.04.2012
Сообщений: 7
По умолчанию

Большое вам спасибо,не знаю что бы я без вашей помощи делал!
Necron вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задание в Паскале через записи Novenkaja Помощь студентам 0 10.05.2011 21:14
Программа на СИ++, используя функции работы с файлами и функции <string.h> Аня Popova Фриланс 9 13.09.2010 15:52
выразить arcctg(x) через другие функции? KimiRaikkonen Общие вопросы C/C++ 2 20.11.2009 21:17
C++ Помогите оформить код через функции... hen Помощь студентам 1 11.04.2009 13:27