Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 26.05.2011, 10:47   #1 (permalink)
~nezabudka~
Новичок
 
Регистрация: 26.05.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Массивы. Нужна помощь в доработке программы.

Дана матрица A[1:5;1:6]. Найти максимальный элемент в каждом столбце и сформировать из них массив. Если наибольший из этих элементов <100, то элементы полученного массива упорядочить по возрастанию. Иначе из полученного массива удалить максимальный элемент.
1. первый шаг я попробовала написать, но почему-то вектор формируется из максимального эл-та только первого столбца. где ошибка?

PROGRAM MATRICA;
USES WINCRT;
VAR
A:ARRAY [1..5,1..6] OF INTEGER;
B:ARRAY[1..6] OF INTEGER;
MAX,MIN,I,J,K:INTEGER;
BEGIN
RANDOMIZE;
FOR I:=1 TO 5 DO
FOR J:=1 TO 6 DO
A[I,J]:=RANDOM(100)-30;
WRITELN('ЗАДАН МАССИВ А');
FOR I:=1 TO 5 DO
BEGIN
WRITELN;
FOR J:=1 TO 6 DO
WRITE(A[I,J]:4);
END;
WRITELN;
FOR J:=1 TO 6 DO
BEGIN
K:=0;
MAX:=A[1,J];
FOR I:=1 TO 5 DO
BEGIN
IF A[I,J]>MAX
THEN
MAX:=A[I,J];
K:=K+1;
B[K]:=MAX;
END;
WRITELN('ВЕКТОР В,СФОРМИРОВАННЫЙ ИЗ МАКС. ЭЛ-ОВ СТОЛБЦОВ:');
FOR J:=1 TO 6 DO
WRITE(B[K]:4);
END;
END.
~nezabudka~ вне форума   Ответить с цитированием

Старый 26.05.2011, 10:47
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вот аналогичное вашей теме

Нужна помощь в написании программы C++
Нужна помощь написании программы-календаря

Старый 26.05.2011, 11:14   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ~nezabudka~ Посмотреть сообщение
где ошибка?
В самом конце. Здесь:
Цитата:
FOR J:=1 TO 6 DO
WRITE(B[K]:4);
Цикл-то у Вас по J, а индекс массива B даете K.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.05.2011, 11:32   #3 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Внутри внешнего цикла for со счетчиком j у вас опять заведен цикл с этим же самым счетчиком.
__________________
Убить всех человеков!
AlexZir на форуме   Ответить с цитированием
Старый 26.05.2011, 15:06   #4 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Сообщение от ~nezabudka~ Посмотреть сообщение

FOR J:=1 TO 6 DO
BEGIN

K:=0;
MAX:=A[1,J];
FOR I:=1 TO 5 DO
BEGIN

IF A[I,J]>MAX THEN MAX:=A[I,J];
K:=K+1;
B[K]:=MAX;
END;
WRITELN('ВЕКТОР В,СФОРМИРОВАННЫЙ ИЗ МАКС. ЭЛ-ОВ СТОЛБЦОВ:');
FOR J:=1 TO 6 DO
WRITE(B[K]:4);

END;
чтобы было понятней, о чём я писал - выделил цветом
__________________
Убить всех человеков!
AlexZir на форуме   Ответить с цитированием
Старый 26.05.2011, 15:10   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

То есть с учетом обоих замечаний, программа должна выглядеть так:
Код:
PROGRAM MATRICA;
 USES WINCRT;
 VAR
   A:ARRAY [1..5,1..6] OF INTEGER;
   B:ARRAY[1..6] OF INTEGER;
   MAX,MIN,I,J:INTEGER;
BEGIN
 RANDOMIZE;
 FOR I:=1 TO 5 DO
  FOR J:=1 TO 6 DO
   A[I,J]:=RANDOM(100)-30;
 WRITELN('ЗАДАН МАССИВ А');
 FOR I:=1 TO 5 DO
  BEGIN
   WRITELN;
   FOR J:=1 TO 6 DO
     WRITE(A[I,J]:4);
  END;
 WRITELN;
 FOR J:=1 TO 6 DO
  BEGIN
   B[J]:=A[1,J];
   FOR I:=2 TO 5 DO
    BEGIN
     IF A[I,J]>B[J]  THEN
     B[J]:=A[I,J];
    END;
  END;
 WRITELN('ВЕКТОР В,СФОРМИРОВАННЫЙ ИЗ МАКС. ЭЛ-ОВ СТОЛБЦОВ:');
 FOR J:=1 TO 6 DO
  WRITE(B[J]:4);
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.05.2011, 09:03   #6 (permalink)
~nezabudka~
Новичок
 
Регистрация: 26.05.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо за поправку. Остальное оказалось попроще.
~nezabudka~ вне форума   Ответить с цитированием
Старый 15.06.2011, 23:53   #7 (permalink)
дима144
Новичок
 
Регистрация: 15.06.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию задать программу нахождения количество участков на которых элементы массива монотонно

помогите пожалуйста



1. Создавайте новую тему, а не отписывайтесь в чужих.
2. Если честно, из вашего задания мало что понял, более подробно и полно задание напишите.
Ваш модератор.
дима144 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:04.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.