1)Ввести 10 целых чисел, вычислить сумму чисел, начиная с минимального до последнего элемента. 2)Сформировать массив [4x6], поменять местами столбец с макс. элементом и столбец с минимальным элементом. 3)Сформировать массив [5x5], найти максимальнй элемент, находящийся выше главной диагонали и минимальный элемент, наход-ся ниже главной дипгонали.
Всем очень признательна заранее за помощь
Айра
18.06.2008 10:01
Задачи ведь несложные.. В FAQ'e есть пример циклов, которые проходят по элементам выше\ниже диагоналей; задач на минимум и максимум тоже решалось очень много. Почитай темы и попробуй сделать что-нибудь, а потом, если что, поправим))
Гость
18.06.2008 10:18
Цитата(Айра @ 18.06.2008 6:01)
Задачи ведь несложные.. В FAQ'e есть пример циклов, которые проходят по элементам выше\ниже диагоналей; задач на минимум и максимум тоже решалось очень много. Почитай темы и попробуй сделать что-нибудь, а потом, если что, поправим))
Ну тогда поправляй (сегодня просто надо сдавать эти задачки): 1)вот что я сделала, только не смейтесь: uses crt; var a:array[1..10] of integer; min,k,i,sum,n,s:integer; begin randomize; clrscr; for i:=1 to 10 do begin a[i]:=random(100)-5; end; min:=a[1]; for i:=1 to 10 do begin if a[i]<min then min:=a[i]; end; write('Massiv sostoit:'); for i:=1 to 10 do begin write (a[i], ' '); if min:=a[i] then write (i,' '){вот здесь выводиться номер минимального элемента, а как его запомнить в виде отдельной переменной не знаю?} end; writeln; writeln begin s:=0; k:=min; {как присвоить переменной К номера минимального элемента?} for i:=k to 10 do s:=k+a[i]; writeln; writeln ('Summa elementov',s); end; readkey; end.
Айра
18.06.2008 10:46
Вот:
uses crt; var a: array[1..10] of integer; min,k,i,s:integer; begin randomize; for i:=1 to 10 do a[i]:=random(15)-5; min:=a[1]; for i:=1 to 10 do if a[i]<min then begin min:=a[i]; k:=i; //вот здесь ты запомнила номер минимума end; write('Massiv sostoit:'); for i:=1 to 10 do write (a[i], ' '); writeln; s:=0; for i:=k to 10 do s:=s+a[i]; // а тут все поскладывала writeln ('Summa elementov: ',s); readln; end.
добавлено: я изменила значение random, чтоб можно было самой посчитать и проверить, так что это не суть важно.. Заметь, что если в операторе цикла\условия\и т.п. выполняется только один оператор, то begin\end можно не писать..
Гость
18.06.2008 10:55
Ой Айра огромное тебе спасибо за помощь! Очень хорошо всё объяснила. С этой программкой разобралась. Сейчас попробую сделать оставшиеся 2. Надеюсь ты мне поможешь, ну или кто-нибудь другой.
3)program zadanie3; uses crt; var m: array[1..5,1..5] of integer; i,j:byte; max,min:integer; k1,k2:byte; s: byte; maxi,maxj,mini,minj: byte;
begin
clrscr; repeat write('Введите размерность квадратной матрицы до 5: '); readln(s); until (s>0) and (s<=5);
clrscr; for i:=1 to s do for j:=1 to s do begin write('Введите элемент матрицы: '); readln(m[i,j]); end;
clrscr; writeln('Исходная матрица:'); writeln; for i:=1 to s do begin for j:=1 to s do write(m[i,j]:5); writeln; end;
k1:=0; k2:=0; max:=m[1,2]; min:=m[2,1]; for i:=1 to s do for j:=1 to s do begin if (i<j) and (m[i,j]>max) then begin max:=m[i,j]; readln; writeln; Writeln('Min element ниже гл. диаг.',max); что-то я запуталась? end; if (i>j) and (m[i,j]<min) then begin min:=m[i,j]; readln; writeln; Writeln('Max element выше гл. диаг.',min); что-то я запуталась? end; end;
for i:=1 to s do for j:=1 to s do begin if (i<j) and (m[i,j]=max) then k1:=k1+1;
if (i>j) and (m[i,j]=min) then k2:=k2+1; end;
if (k1>1) or (k2>1) then
begin writeln('В матрице больше одного мин элта ниже гл диагонали и одного макс элта выше'); writeln('Нажмите любую клавишу'); readkey; end; end.
Айра
18.06.2008 12:23
Запуталась)) все намного проще:
const n=5; // если ты уже точно знаешь, какая размерность у массива, то ее можно задать константой // и не пытаться потом спрашивать у пользователя var a: array[1..n,1..n] of integer; max,min,i,j: integer; // максимум, минимум, переменные цикла и больше тебе ничего не надо begin randomize;
for i:=1 to n do for j:=1 to n do readln(a[i,j]);
for i:=1 to n do begin for j:=1 to n do begin // a[i,j]:=random(10); // можно было и чтоб массив сам формировался write(a[i,j]:3); end; writeln; end;
// я так поняла, что элементы, стоящие на диагонали брать не надо
max:=a[1,2]; // тогда это начальное значение максимума, выше диагонали min:=a[2,1]; // минимум_ниже
// я не зря тебя в faq отправила)) там был пример циклов ниже\выше диагоналей // этот цикл перебирает элементы только выше нее for i:=1 to n do for j:=i+1 to n do if a[i,j]>max then max:=a[i,j]; // и ищем максимум давно известным способом
// а здесь элементы только ниже for i:=1 to n do for j:=1 to i-1 do if a[i,j]<min then min:=a[i,j];
writeln('максимум выше диагонали: ',max); writeln('минимум ниже диагонали: ',min); end. // вот и все
p.s. используй теги pascal\delphi, так понятнее код будет ))
-Даша-
18.06.2008 12:31
Айра спасио тебе ещё раз!
И вот, последнюю сделала, вроде:
2)var a:array[1..4,1..6] of integer; max,min,m1,m2,i,j,t:integer; begin randomize; min:=9999; max:=0; for i:=1 to 4 do begin for j:=1 to 6 do begin a[i,j]:=random(50); write(a[i,j]:3); if a[i,j]<min then begin min:=a[i,j]; m1:=j; end; if a[i,j]>max then begin max:=a[i,j]; m2:=j; end; end; writeln; end; for i:=1 to 4 do begin t:=a[i,m1]; a[i,m1]:=a[i,m2]; a[i,m2]:=t;
end; writeln('rezultat:'); for i:=1 to 4 do begin for j:=1 to 6 do begin write(a[i,j]:3); end; writeln; readln; end;
end.
Айра
18.06.2008 12:42
Вроде сделала)) readln в конце лучше убрать из цикла..
только смотри, а мы уверены, что в массиве у нас, например, только положительные элементы будут? (я не знаю как по заданию).. просто если сделать массив из целиком отрицательных, то значение максимума будет найдено не верно, точнее оно так и останется нулем, и тогда программа вылетит при попытке поменять местами столбцы..
Гость
18.06.2008 12:46
Цитата(Айра @ 18.06.2008 8:23)
Запуталась)) все намного проще:
const n=5; // если ты уже точно знаешь, какая размерность у массива, то ее можно задать константой // и не пытаться потом спрашивать у пользователя var a: array[1..n,1..n] of integer; max,min,i,j: integer; // максимум, минимум, переменные цикла и больше тебе ничего не надо begin randomize;
for i:=1 to n do for j:=1 to n do readln(a[i,j]);
for i:=1 to n do begin for j:=1 to n do begin // a[i,j]:=random(10); // можно было и чтоб массив сам формировался write(a[i,j]:3); end; writeln; end;
// я так поняла, что элементы, стоящие на диагонали брать не надо
max:=a[1,2]; // тогда это начальное значение максимума, выше диагонали min:=a[2,1]; // минимум_ниже
// я не зря тебя в faq отправила)) там был пример циклов ниже\выше диагоналей // этот цикл перебирает элементы только выше нее for i:=1 to n do for j:=i+1 to n do if a[i,j]>max then max:=a[i,j]; // и ищем максимум давно известным способом
// а здесь элементы только ниже for i:=1 to n do for j:=1 to i-1 do if a[i,j]<min then min:=a[i,j];
writeln('максимум выше диагонали: ',max); writeln('минимум ниже диагонали: ',min); end. // вот и все
p.s. используй теги pascal\delphi, так понятнее код будет ))
Почему-то программа не работает? Ошибку выдаёт паскаль:Runtime error 106 at 0000:0097
Айра
18.06.2008 12:50
хм.. а что ты ввела? может я что-то не предусмотрела..
Айра
18.06.2008 13:21
Такая ошибка выскакивает если вместо цифр, которые у нас ожидаются, ввести символ.. Это один из вариантов..
Гость
18.06.2008 13:51
Цитата(Айра @ 18.06.2008 9:21)
Такая ошибка выскакивает если вместо цифр, которые у нас ожидаются, ввести символ.. Это один из вариантов..
Неправильно просто из программы вышла Но вот только почему-то цифры надо вводить самой, рандом не работает?
Ютани
18.06.2008 14:03
Помогите пожалуйста решить эту задачу В случайном двухмерном массиве программа находит максимальный и минимальный выводит на экран массив и эти элементы
Айра
18.06.2008 14:28
Цитата
Но вот только почему-то цифры надо вводить самой, рандом не работает?
Ну так потому что он закомментирован)) убери "//" перед ним и он заработает, только тогда убери и заполнение массива вручную..
to Ютани: поиск + не нужно постить свои вопросы в чужих темах.. (кстати часть решения твоей задачи, есть и здесь)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.