IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> двумерные массивы, Очень очень срочно
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Ребята,помогите!!! мне нужно решить 2 задачки.Вот уже сессия через 2 дня начнется..одна на одномерный массив,а другая на двумерный.
1.двумерный:Создать матрицу A[1..N,1..M].Упорядочить ее строки по убыванию их первых элементов.
2.одномерный:Создать массив целых чисел B[1..N].Сформировать новый массив,содержащий суммы элементов,раположенных между соседними локальными минимумами.Заранее большое спасибо!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


1. Матрицу как задавать? случайным образом? Элементы целые? Тогда так:
fo j:=1 to M for i:=1 to N do A[i,j]:=Random(MaxInt);

Что касается сортировки - посмотри тему FAQ (ссылочка вверху, красная), там есть. Единственная загвоздка - как менять строки. Подумай, если не получится - спрашивай.

2. Локальный минимум, как я понимаю, удовлетворяет условию:
((i=1) or (B[i-1]>B[i]) and ((i=N) or (B[i]<B[i+1]))

Проверяй его в цикле и, если выполнено - добавляй число в массив C[j], увеличивая его счетчик j :
Inc(j);
C[j]:=B[i];

Упс, ошибочка... Серое - неправильно. забыл, что спрашивается в условии sad.gif. Сейчас исправлюсь!

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
Единственная загвоздка - как менять строки.
И насчет этого тоже неплохо было бы посмотреть FAQ. Уже делалось.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Lapp,с одномерным массивом вроде разобрался,а вот с двумерным пока чет не очень получается.

Вот программка(если конечно ее можно так назвать)

{создать матрицу A[1..N,1..M].упорядочить ее строки по убыванию их первых элементов.}

{-------------}
{для того,чтобы поменять местами строки в матрице максимально быстро,матрицу нужно задавать как массив строк:}
program one;
const
n = 10; { число строк }
m = 8; { число столбцов }
type
stroka = array[1 .. m] of integer;
smatrix = array[1 .. n] of stroka;


{при таком определении для того,чтобы поменять местами строки матрицы,достаточно сделать следующее:}
procedure sort(var a: smatrix);
var{const} i, j: integer;
var c:stroka;
begin
for i:=2 to n do
for j:=n downto i do
begin
if c[j-1]>c[j] then
begin
c:=a[j-1];a[j-1]:=a[j];a[j]:=c;
end;
end;


{вывод готовой матрицы}
procedure print(var a: smatrix);
var i, j: integer;
begin
for i := 1 to n do
begin
for j := 1 to m do
write(a[i,j]:4);
writeln
end;
end;

var
a: smatrix;
i, j: integer;

begin
{ заполнение матрицы }
randomize;
for i := 1 to n do
for j := 1 to m do
a[i,j] := random(100);

{ матрица до обмена }
writeln('до обмена:'); print(a);

{ обмен строк }
sort(a);

{ матрица после обмена }
writeln('после обмена:'); print(a);
end.


М
Пожалуйста, используй теги для программного текста (выделить программу блоком и выбрать нужный тип в меню CODE сверху от окна ввода)
-- Lapp



Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Давай разбираться.
В процедуре sort, что имел в виду под этим:
      if c[j-1]>c[j] then
- а?

Во-первых, сравнивать нужно только первые элементы.
Во-вторых, строка с служит всего лишь буфером. В самом начале, например, в ней вообще ничего осмысленного нету.
В третьих, тебе надо по убыванию, а ты делаешь по возрастанию. Поменяй знак неравенства.
Короче, надо так:
      if a[j-1][1]<a[j][1] then


Остальное пока не смотрел.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


хорощо.Буду пробовать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Это ведь сортировка массива методом обмена?

procedure sort(var a: smatrix);
var{const} i, j: integer;
var c:stroka;
begin
for i:=2 to n do
for j:=n downto i do
begin
if a[j-1][1]<a[j][1] then
begin
c:=a[j-1][1];a[j-1][1]:=a[j][1];a[j][1]:=c;
end;
end;
end;

Теперь выдает ошибку 26(несоответствие типов)

Сообщение отредактировано: Lyorri -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
Теперь выдает ошибку 26(несоответствие типов)
yes2.gif Потому что нельзя в переменную типа stroka затолкать Integer, и наоборот... Вот так менять строки местами:

      if a[j-1][1]<a[j][1] then
begin
c:=a[j-1];a[j-1]:=a[j];a[j]:=c;
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Спасибо,Lapp.
Спасибо,volvo.
Все работает..
пойду сдаваться..

Сообщение отредактировано: Lyorri -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Нет, не понял... Я тебе написал, как... Ты же все, чего добьешься - это отсортируешь ПЕРВЫЕ элементы по убыванию, а по заданию тебе надо отсортировать СТРОКИ по убыванию их первых элементов. Это разные вещи...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


VOLVO,так получилось я не то скинул.Не посмотрев...
Сейчас все нормально,спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


у меня тут есть одна программка.Она рабочая на другом компьютер,а на моем компилируется,но не запускается выдает ошибку 200(деление на ноль)>наверно что то в установках паскаля.Подскажите...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Было бы здорово, если бы ты показал отрывок программы, где эта ошибка фиксируется компилятором иначе как уже неоднократно было сказано "все экстрасенсы в отпуске".


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


просто появляется окно с этой ошибкой...и все.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Цитата
просто появляется окно с этой ошибкой.

Здесь смотрел?
Error 200. Crt & Delay
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


VOLVO,спасибо.Посмотрел и разобрался...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 2:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name