1)Ввести 10 целых чисел, вычислить сумму чисел, начиная с минимального до последнего элемента.
2)Сформировать массив [4x6], поменять местами столбец с макс. элементом и столбец с минимальным элементом.
3)Сформировать массив [5x5], найти максимальнй элемент, находящийся выше главной диагонали и минимальный элемент, наход-ся ниже главной дипгонали.
Всем очень признательна заранее за помощь
Задачи ведь несложные..
В FAQ'e есть пример циклов, которые проходят по элементам выше\ниже диагоналей; задач на минимум и максимум тоже решалось очень много. Почитай темы и попробуй сделать что-нибудь, а потом, если что, поправим))
Вот:
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.
Ой Айра огромное тебе спасибо за помощь! Очень хорошо всё объяснила.
С этой программкой разобралась. Сейчас попробую сделать оставшиеся 2.
Надеюсь ты мне поможешь, ну или кто-нибудь другой.
загляни сюда, если еще не смотрела..
http://forum.pascal.net.ru/index.php?showtopic=2694
Айра посмотри, вот что получилось:
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.
Запуталась))
все намного проще:
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. // вот и все
Айра спасио тебе ещё раз!
И вот, последнюю сделала, вроде:
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.
Вроде сделала))
readln в конце лучше убрать из цикла..
только смотри, а мы уверены, что в массиве у нас, например, только положительные элементы будут? (я не знаю как по заданию).. просто если сделать массив из целиком отрицательных, то значение максимума будет найдено не верно, точнее оно так и останется нулем, и тогда программа вылетит при попытке поменять местами столбцы..
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. // вот и все
хм.. а что ты ввела? может я что-то не предусмотрела..
Такая ошибка выскакивает если вместо цифр, которые у нас ожидаются, ввести символ..
Это один из вариантов..
Помогите пожалуйста решить эту задачу
В случайном двухмерном массиве программа находит максимальный и минимальный выводит на экран массив и эти элементы