[Паскаль] три задачи, матрицы

Ответить
Armake
Сообщения: 2
Зарегистрирован: 12 май 2008, 19:15

Перешел в лицей в 10 класс, до этого программированием не занимался вообще, а тут (в лицее) до этого программированием занимались с 7 класса. Задолжал несколько задачек. Помогите плз! Очень прошу!

1. В данной действительной квадратной матрице порядка n найти сумму желемнтов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такоЙ элемент единственный
2. Даны действительные числа a1, a2, ... , a4. Поменять местами наибольший и наименьший элемент
3. Сформировать квадратную матрицу порядка n по заданному образцу

1 2 3 k n-2 n-1 n
2 3 4 k n-1 n 0
3 4 5 k n 0 0
M M M 0 M M M
n-1 n 0 k 0 0 0
n 0 0 k 0 0 0

Очень прошу
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

1. Раздел "Алгоритмы", тема "Нахождение максимума". Один символ поменять - будет нахождение минимума. Найдется минимум - пройти в цикле по строке с тем же индексом, что и у него, просуммировать значения.
2. Там же, то же.
3.

Код: Выделить всё

for i:=1 to N do
for j:=1 to N do
  if i+j-1<=N then A[i,j]:=i+j-1 else A[i,j]:=0;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

Armake, чтоб не мучеца на вот тебе код задачи №2

Код: Выделить всё

uses crt;
const n=4;
var min,max,tmp,i,k,kk:integer;
    m:array[1..n]of integer;
BEGIN
 clrscr;
 randomize;
 for i:=1 to n do
  begin
   m[i]:=random(10);
  end;
 for i:=1 to n do
  write(m[i]:3);
 writeln;
 writeln;
 min:=m[1];
 max:=m[1];
 for i:=1 to n do
  begin
   if m[i]>max
   then begin
         max:=m[i];
         k:=i;
        end;
   if m[i]<min
   then begin
         min:=m[i];
         kk:=i;
        end;
  end;
 tmp:=m[k];
 m[k]:=m[kk];
 m[kk]:=tmp;
 for i:=1 to n do
  write(m[i]:3);
 readln;
END.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Vovchik, а можно и проще цикл сделать

Код: Выделить всё

max:=1;
min:=1;
for i:=2 to N do
  if m[i]>m[max] then max:=i;
    else if m[i]<m[min] then min:=i; 
m[max]:=m[max]+m[min];
m[min]:=m[max]-m[min];
m[max]:=m[max]-m[min];
Избавились от трех переменных
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

Хыиуду, ну я не спорю так тоже правильно, но я тока програмист новичёк по етому многово не знаю !!!!
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Vovchik, знание тут не при чем. Просто, уж извините мне мою гордость, хороший программист-новичок себе ставит цель, чтобы программа работала, и обычно этого добивается. А для опытного программиста не составляет никакого труда заставить программу работать, поэтому он добивается уже не работоспособности, а эффективности. Это придет со временем. В коде, предложенном мной, нет совершенно ничего, что вам было бы незнакомо.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

Хыиуду, да я посмотрел, и там всё знакомо для меня, только у вас в коде всё слегка упрошённо !!!!
Ответить