задача на двумерный массив(Pascal)
Дана вещественная квадратная матрица порядка 5, все элементы которой различны. Найти наименьший элемент среди стоящих на побочной диагонали и поменять его местами с элементом, располагающимся в правом нижнем углу матрицы.
Сформировать массив, состоящий из наибольших элементов каждой строки матрицы.
на форуме есть правило: давать название ветке тематически.
Читайте правила постинга , и предупреждаю что в следущий раз, если вы дадите подобное название, я закрою/удалю вашу тему без предупреждения.
Уважаемый сладкоежка,
на форуме есть правило: давать название ветке тематически.
Читайте правила постинга , и предупреждаю что в следущий раз, если вы дадите подобное название, я закрою/удалю вашу тему без предупреждения.
Оля, прокати тему в Студенческий раздел.
Оля, прокати тему в Студенческий раздел.
Слушаюсь :}
подскажите пожалуйста, как записать решение в Паскале:
Дана вещественная квадратная матрица порядка 5, все элементы которой различны. Найти наименьший элемент среди стоящих на побочной диагонали и поменять его местами с элементом, располагающимся в правом нижнем углу матрицы.
Сформировать массив, состоящий из наибольших элементов каждой строки матрицы.
Ищем минимальный элемент:
For i:=1 To 5 Do
For j:=5 DownTo 1 Do
If min>A[i,j] Then min:=A[i,j];
в итоге: min - минимальный элемент
теперь ищем элемент равный min т.е. минимальный элемент:
For j:=5 DownTo 1 Do
If min=A[i,j] Then {если нашли}
Begin
A[i,j]:=A[5,5]; \ меняем
A[5,5]:=min; / местами
End;
Ищем минимальный элемент:
For i:=1 To 5 Do
For j:=5 DownTo 1 Do
If min>A[i,j] Then min:=A[i,j];
в итоге: min - минимальный элемент
теперь ищем элемент равный min т.е. минимальный элемент:
For j:=5 DownTo 1 Do
If min=A[i,j] Then {если нашли}
Begin
A[i,j]:=A[5,5]; \ меняем
A[5,5]:=min; / местами
End;
не обижайся, но ты намудрил :)
нарисуй матрицу N*N (т.к. говорим о диагонали), и проследи как индексы меняются по побочнои диагонали
p.s.подсказка: двойной фор не нужен
Ищем максимальные элементы в массиве A (или матрице) и записываем их в массив B:
For j:=1 To 5 Do
Begin
If j=1 Then B:=A[j,i] Else
If B<A[j,i] Then B:=A[j,i];
End;
Ну а теперь требуемый реультат выведем на экран:
For i:=1 To 5 Do Write(B:3);
Ищем максимальные элементы в массиве A (или матрице) и записываем их в массив B:
For j:=1 To 5 Do
Begin
If j=1 Then B:=A[j,i] Else
If B<A[j,i] Then B:=A[j,i];
End;
Ну а теперь требуемый реультат выведем на экран:
For i:=1 To 5 Do Write(B:3);
a mozet byt' tak:
For i:=1 To 5 Do
For j:=1 To 5 Do
Begin
If j=1 Then B:=A[i,j] Else
If B<A[i,j] Then B:=A[i,j];
End;
vse taki stroki issleduem :)
a mozet byt' tak:
For j:=1 To 5 Do
Begin
If j=1 Then B:=A[i,j] Else
If B<A[i,j] Then B:=A[i,j];
End;
vse taki stroki issleduem :)
Да ты права, я без паскаля писал и немного запутался между строками и столбцами :( P(
не обижайся, но ты намудрил :)
нарисуй матрицу N*N (т.к. говорим о диагонали), и проследи как индексы меняются по побочнои диагонали
p.s.подсказка: двойной фор не нужен
Уф, [SIZE=4]SORRY[/SIZE]
Здесь я действительно намудрил..., только проснулся, видимо еще сплю...
ВО:
For i:=1 To 5 Do
If min>A[6-i,i] Then min:=A[6-i,i];
For i:=1 To 5 Do
If min=A[6-i,i] Then
Begin
A[6-i,i]:=A[5,5];
A[5,5]:=min;
End;
исправил :}
При условии, что: A[[COLOR=red]строка[/COLOR],[COLOR=green]столбец[/COLOR]]
Уф, [SIZE=4]SORRY[/SIZE]
Здесь я действительно намудрил..., только проснулся, видимо еще сплю...
ВО:
For i:=1 To 5 Do
If min>A[6-i,i] Then min:=A[6-i,i];
For i:=1 To 5 Do
If min=A[6-i,i] Then
Begin
A[6-i,i]:=A[5,5];
A[5,5]:=min;
End;
исправил :}
При условии, что: A[[COLOR=red]строка[/COLOR],[COLOR=green]столбец[/COLOR]]
что то ты меня совсем запутал :
eto zachem ?
If min=A[6-i,i] Then
Begin
A[6-i,i]:=A[5,5];
A[5,5]:=min;
End;
на мой взгляд достаточно в цикле сохранить i, j(row, column) минимума (само значение тогда сохранять не надо), а потом:
A[row][column] := A[5][5];
A[5][5] := temp;
{or}
A[5][5] := A[5][5] xor A[row][column];
A[row][column] := A[row][column] xor A[5][5];
vmesto
For i:=1 To 5 Do
If min=A[6-i,i] Then
Begin
A[6-i,i]:=A[5,5];
A[5,5]:=min;
End;
A[row][column] := A[5][5];
A[5][5] := temp;
В принципе можно и так сделать, проге хоть поменьше операций придется выполнять.
Сладкоежке надо будет учесть, что в побочной диагонали может быть два (или более) минимальных элемента, в таком случае i,j(row, column) минимума
надо будет сохранять во второй массив (если хотим вместо ВСЕХ мин. эл. вставить A[5,5]).
если на сохранять в МАССИВ, т.е. сохранить ПОСЛЕДНИЙ встречающийся мин. эл. в данном случае это будет 2-йка перед 4-кой, т.к. в нашем случае нахождение мин. ведется слева направо
то это будет выглядеть вот так:
MATRIX:
0 0 0 [COLOR=green]2[/COLOR] 0 0 0 0 [COLOR=red]9[/COLOR] 0
0 0 7 0 0 => 0 0 7 0 0
0 3 0 0 0 0 3 0 0 0
[COLOR=green]2[/COLOR] 0 0 0 [COLOR=red]9[/COLOR] [COLOR=green]2[/COLOR] 0 0 0 [COLOR=green]2[/COLOR]
Если сохранить все i,j(row, column) минимума, то можно будет сделать так:
MATRIX:
0 0 0 [COLOR=green]2[/COLOR] 0 0 0 0 [COLOR=red]9[/COLOR] 0
0 0 7 0 0 => 0 0 7 0 0
0 3 0 0 0 0 3 0 0 0
[COLOR=green]2[/COLOR] 0 0 0 [COLOR=red]9[/COLOR] [COLOR=red]9[/COLOR] 0 0 0 [COLOR=green]2[/COLOR]
В принципе можно и так сделать, проге хоть поменьше операций придется выполнять.
Сладкоежке надо будет учесть, что в побочной диагонали может быть два (или более) минимальных элемента....MATRIX:
0 0 0 [COLOR=green]2[/COLOR] 0 0 0 0 [COLOR=red]9[/COLOR] 0
0 0 7 0 0 => 0 0 7 0 0
0 3 0 0 0 0 3 0 0 0
[COLOR=green]2[/COLOR] 0 0 0 [COLOR=red]9[/COLOR] [COLOR=green]2[/COLOR] 0 0 0 [COLOR=green]2[/COLOR]
в задачке говорилось что в матрице все элементы различны, т.е. один минимум
Задача:
Даны числа множество 1,2,3,4,5,6,7,8,9 всего 9-ть штук
Расставить их в шаблон вида XXX = XXX = XXX где X число из множества
Так чтобы равенство выполнялось, и найти все варианты.
Цель задачи:
Найти наиболее быстрый алгоритм скорость я померю и выложу результаты для тех решений, которые выдают все варианты верных ответов
Срок действия задачи:
Пока не будет придуман алгоритм круче моего, и тогда я выложу комментарии, ошибки и код…
Требование:
Программа должна быть написана на VBScript и выполняться программой cscript, никаких наворотов ненужно, всё выводить в консоль…
PS
size=9 - знак умножения гы гы
XX и XXX - двухзначное и трёхзначное число т.е. например XX -> 12
Кидать отлаженный текст проги мне в личку…
если хотите сказать что то неприятное или дельное всё в личку…