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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2011, 22:37   #1
NikaAutumn
 
Регистрация: 07.06.2011
Сообщений: 9
Стрелка Формирование и обработка массивов арифметических данных с использованием процедур с параметрами

Всем привет! Ребят, очень требуется ваша помощь!!!

Нужно решить задачу:

Имеется массив С из пяти строк и 6 столбцов.
1). Сформировать одномерный массив В, содержащий все положительные элементы массива C (если элемент отрицательный, то значение элемента :=0) и двумерный массив D, содержащий координаты элементов массива B;
2). определить сумму отобранных элементов и их кол-во;
3). определить минимальное и максимальное значения отобранных элементов и их координаты и поменять местами столбцы исходной матрицы, в которой они найдены, если номера столбцов разные.

Примечание: массив считывается из текстового файла и результат решения задачи выводится на черный экран(либо в текстовый файл).

Буду очень благодарна за любую помощь!
Заранее спасибо.

Последний раз редактировалось NikaAutumn; 10.06.2011 в 22:59.
NikaAutumn вне форума Ответить с цитированием
Старый 10.06.2011, 22:42   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И? Покажите ваши наработки, расскажите, что не получается или огласите сумму и способы получения вознаграждения за решение.
Цитата:
выводится на черный экран
оО
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.06.2011, 22:49   #3
NikaAutumn
 
Регистрация: 07.06.2011
Сообщений: 9
По умолчанию

Меня интересует больше пункт1.
Примерно мои мысли:

for i:=1 to 5
for j:=1 to 6
begin
readln(f, c[i,j]);
if c[i,j]>0 then b[i]:=c[j,i]; d[?]:=i; d[?]:=j else b[i]:=0; d[?]:=i; d[?]:=j;
end.




Turbo Pascal
NikaAutumn вне форума Ответить с цитированием
Старый 10.06.2011, 22:50   #4
NikaAutumn
 
Регистрация: 07.06.2011
Сообщений: 9
По умолчанию

Так же у меня есть похожая задача.

выложу через пару минут
NikaAutumn вне форума Ответить с цитированием
Старый 10.06.2011, 23:04   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
если элемент отрицательный, то значение элемента :=0
Что-то не очень понял, что это означает: элементу С или B.
Цитата:
if c[i,j]>0 then b[i]:=c[j,i]
Если не положительное, то следующее положительое число запишется не за последним, а где-то дальше, перепрыгнув. Если выше имеется в виду массив В, то b[i] надо 0 присвоить если число отрицательное.
upd:ой, и i же уже используется в цикле. Надо другой счетчик для В использовать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 10.06.2011 в 23:07.
Alex11223 вне форума Ответить с цитированием
Старый 10.06.2011, 23:16   #6
NikaAutumn
 
Регистрация: 07.06.2011
Сообщений: 9
По умолчанию

PROGRAM LR5;
USES CRT;
CONST M=3; N=6;
TYPE TB=ARRAY [1..M,1..N] OF REAL;
VAR A,AN:STRING[80];
B:TB;
I,J:INTEGER;
IMAX,JMAX,IMIN,JMIN:INTEGER;
MIN,MAX:REAL;
FI:TEXT;


PROCEDURE P (B:TB; M,N:INTEGER);
BEGIN
FOR I:=1 TO M DO BEGIN
WRITE (CHR(186));
FOR J:=1 TO N DO CASE J OF
1,2,4,5: WRITE (B[I,J]:11:4,GHR(179));
3: WRITE (B[I,J] :11,CHR(179):2);
6: WRITELN (B[I,J]:12, CHR(186));
END;
IF I = M THEN WRITELN (AN) ELSE WRITELN (A) ;
END
END;

PROCEDURE VVOD (VAR B:TB);
BEGIN
ASSIGN (FI,'D:\LR5.txt');
RESET(FI);
FOR I:=1 TO 4 DO BEGIN
READLN (FI, A);
WRITELN (A);
END;
READLN (FI,A);
READLN (FI,AN);
CLOSE(FI);
RESET(FI);
FOR I:=1 TO M DO
FOR J:=1 TO N DO
READ (FI,B[I,J]);
P(B,M,N);
CLOSE(FI);
END;

PROCEDURE OBR (VAR B:TB; M,N:INTEGER;VAR MN, MX:REAL;VAR II,12,Jl,J2:INTEGER );
VAR I,J:NTEGER;
R:REAL;
BEGIN
MN:= B[1,1] ; MX:= B[1,1];
I1:= 1; I2:= 1; J1:=1; J2:= 1;
FOR I:= 1 TO M DO
FOR J :=1 TO N DO
IF B[I,J] < MN THEN BEGIN
MN :=B[I,J]; I1:=I; J1:=J;
END
ELSE
IF B[I,J]>MX THEN BEGIN
MX:=B[I,J]; 12:=I; J2:=J;
END;
WRITELN ('I1=', I1, 'J1=', J1,'I2=', I2, 'J2=',J2);
B[I1,J1]:= MX; B[I2,J2] :=MN;
END;

{ OSNOVNAYA }
BEGIN
CLRSCR;
ASSIGN(OUTPUT,'');
REWRITE(OUTPUT);
VVOD (B);
OBR(B,M,N,MON,MAX,IMIN,IMAX,JMIN,JM AX);
WRITELN(#10#13, 'REZULTATY:', #10#13);
P(B,M,N);
WRITELN (#10#13,'MIN=', MIN:12, 'IMIN=',IMIN, 'JMIN=', JMIN,
#10#13,'MAX=', MAX:12, 'IMAX=',IMAX, 'JMAX=', JMAX);
CLOSE (OUTPUT);
END .
NikaAutumn вне форума Ответить с цитированием
Старый 10.06.2011, 23:18   #7
NikaAutumn
 
Регистрация: 07.06.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что-то не очень понял, что это означает: элементу С или B.
если в исходном массиве элемент отрицательный, то новому массиву присваивается ноль
NikaAutumn вне форума Ответить с цитированием
Старый 10.06.2011, 23:27   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Как-то так тогда.
Код:
k:=1;
for i:=1 to 5 do
   for j:=1 to 6 do 
   begin   
      if (c[i,j] >= 0) then b[k]:=c[i,j] else b[k]:=0;
      inc(k);
   end;
А про координаты в двухмерном массиве D я что-то тоже не понял оО

Кстати, используйте тег [CODE] (значок #) для сохранения форматирования и подсветки кода в сообщении.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.06.2011, 23:32   #9
NikaAutumn
 
Регистрация: 07.06.2011
Сообщений: 9
По умолчанию

Координаты записываются в две строки, в 1 - i, во 2 -j.

Я сама смысла в этом не вижу...

Изначально пункт один звучал так: Сформировать трехмерный массив из всех положительных значений и их индексов в исходном массиве; если таких значений нет, результат должен быть равен нулю.

Но преподаватель подумал, что это сложновато-то и сказал делать два массива.
NikaAutumn вне форума Ответить с цитированием
Старый 10.06.2011, 23:41   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Тогда так вроде.
Код:
k:=1;
for i:=1 to 5 do
   for j:=1 to 6 do 
   begin   
      if (c[i,j] >= 0) then b[k]:=c[i,j] else b[k]:=0;
      d[1, k]:=i;
      d[2, k]:=j;
      inc(k);
   end;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка массивов данных MASOFF Помощь студентам 0 21.05.2011 11:51
Обработка массивов с использованием подпрограмм фалькон Паскаль, Turbo Pascal, PascalABC.NET 4 08.03.2011 18:43
Обработка массивов структур с использованием контейнеров artyom060791 Помощь студентам 0 14.04.2009 22:43
Формирование и обработка массивов (pascal) deceiver Помощь студентам 5 17.03.2009 17:38