У меня есть задание сделать одномерный и двумерный массив помогите плиз.....
1)Дан массив L1,..,L20. Заменить элементы, стоящие после Lmin, на среднее арифметическое всего ряда.
begin
closegraph;
textbackground(cyan);
clrscr;
textcolor(Magenta);
gotoxy(2,3);
writeln('DaH MACCuB L[1..20], 3ameHuTb eJIEMEHTbI IIosJIe min, Ha sredHee zna4enee ');
for i:=1 to 20 do begin
gotoxy(10,5);
textcolor(yellow);
writeln('BbeDite elementi massiva ',i);
gotoxy(10,6);
textcolor(white);
gotoxy(2+i*3,7);
readln(L[i]);
end;
s:=0;
L[min]:=L[i];
min:=i;
for i:=1 to 20 do
begin
if L[i]<L[min] then begin
L[min]:=L[i];
s:=s+L[i];
end;
end;
s:=s/20;
for i:=1 to 20 do begin
if L[i]>L[min] then L[i]:=s;
gotoxy(10,2);
writeln('Massiv gotov dlya proverki');
textcolor(black);
gotoxy(i,3+i);
writeln('i= ',L[i] :4 :0);
end;
readkey;
end.
Если приводишь программу, приводи всю.
Ты не написал секцию объявления переменных.
И никогда не занимайся бредом - добавление дизайна в программу, в которой не реализован основной функционал.
Вот твоя программа без дизайно-бреда:
begin
writeln('Дан массив L[1..20], заменить элементыпосле min, на среднее ');
{вводим элементы масива}
for i:=1 to 20 do begin
writeln('BbeDite elementi massiva ',i);
readln(L[i]);
end;
s:=0;
{ВНИМАНИЕ! Откуда взялось значение min ? ОТСЮДА И ДАЛЕЕ КОД ОШИБОЧЕН}
L[min]:=L[i];
min:=i;
for i:=1 to 20 do begin
if L[i]<L[min] then begin
L[min]:=L[i];
s:=s+L[i];
end;
end;
s:=s/20;
for i:=1 to 20 do begin
if L[i]>L[min] then L[i]:=s;
writeln('Massiv gotov dlya proverki');
writeln('i= ',L[i] :4 :0);
end;
end.
Скажи мне, пожалуйста, для чего тебе нужны по всей программе комманды:
textbackground, textcolor, gotoxy? это же не рисование, чтобы раскрашивать все надписи, а программирование.
for i:=1 to 20 do
begin
if L[i]<L[min] then begin
L[min]:=L[i];
s:=s+L[i];{с какой радости ты сумму считаешь здесь? а если у тебя L[i]>L[min]? ведь, сумма не будет считаться тогда!}
end;
s:=s+L[i];{этот оператор должен быть тут}
end;
var i,min:integer;
s:real;
L:array [1..20] of real;
begin
writeln('DaH MACCuB L[1..20], 3ameHuTb eJIEMEHTbI IIosJIe min, Ha sredHee zna4enee ');
for i:=1 to 20 do begin
writeln('BbeDite elementi massiva ',i);
readln(L[i]);
end;
s:=0;
L[min]:=L[i];
min:=i;
for i:=1 to 20 do
begin
if L[i]<L[min] then begin
L[min]:=L[i];
end;
s:=s+L[i];
end;
s:=s/20;
for i:=1 to 20 do begin
if L[i]>L[min] then L[i]:=s;
writeln('i= ',L[i] :4 :0);
end;
readln;
end.
program lab7;
var
L:array[1..20] of real;
min,s:real;
i:integer;
begin
clrscr;
writeln('DaH MACCuB L[1..20], 3ameHuTb eJIEMEHTbI IIosJIe min, Ha sredHee zna4enee ');
for i:=1 to 20 do begin
writeln('Введите элементы массива');
readln(L[i]);{вводим элементы массива}
end;
s:=0;
min:=L[i];
for i:=1 to 20 do
begin
if L[i]<min then begin
min:=L[i];{тут узнаем минимум}
s:=s+L[i];
end;
end;
s:=s/20;{тут узнаем среднее значение}
for i:=1 to 20 do begin
if L[i]>L[min] then L[i]:=s;
writeln('i= ',L[i] :4 :0);{А тут уже должен выводиться на экран готовый массив}
end;
readkey;
end.
zara44, допущена грубая ошибка: когда ты ищешь минимум, ты запоминаешь само значение,
if L[i]<min then begin
min:=L[i];{тут узнаем минимум}
if L[i]>L[min] then L[i]:=s;
zara44,
а по аналогии самому сложно?
добавляешь второй цикл по j, только уменьши размер массива, а то ты его вводить только час будешь.
/7popok . Программу которую ты мне написал. Она тоже не правильно считает у меня
она считает всё и пишет правильно, но, признаюсь, есть один глюк. он последний элемент не изменяет.
min:=i;
У меня выходит примерно так.
Привожу пример
Введите элементы массива:
9 8 9 8 9 8 9 8 9 8 9 8 1(минимум) 4 6 8 7 9 7 9 7 89 7 67 6
А выводит на экран примерно это
7 7 7 7 7 7 7 7 7 7 7 7 1(минимум) 7 7 7 7 7 7 7 7 7 7 7 7 1
const n = 20;
var
i, min:integer;
s: real;
L: array [1 .. n] of real;
begin
writeln('DaH MACCuB L[1..20], 3ameHuTb eJIEMEHTbI IIosJIe min, Ha sredHee zna4enee ');
min := 1; s := 0;
for i:=1 to n do begin
writeln('BbeDite elementi massiva ',i);
readln(L[i]);
{ Сразу здесь же считаем И сумму И минимум }
if L[i] < L[min] then min := i;
s := s + L[i];
end;
s := s / n;
for i := 1 to n do begin
if i > min then L[i] := s; { <--- Сказано же, для всех ИНДЕКСОВ больше ИНДЕКСА минимума !!! }
writeln('i= ',L[i] :4 :0);
end;
readln;
end.
volvo
после цикла оно же равно 20, так как цикл закончился на цифре 20
Спасиба теперь программа работает. Теперь остается только 2)В матрице найти минимальный элемент. Разделить элементы строки, в которой он находится, на найденный минимальный элемент.
Попробуй сам по аналогии... Напиши хоть что-нибудь...
Ок. Постараюсь что нибудь сделать. А щас я в колледж поехал...
Да в любом случае вот это - бред.
L[min]:=L[i];
min:=i;
if L[i]<L[min] then begin
L[min]:=L[i];
if L[i]>L[min] then L[i]:=s;
Вторую задачу смог сделать только так, плиз покажите где ошибки!!!!!!
program lab;
uses crt;
const n = 20;
var
j,i, min1,min2:integer;
s: real;
A:array[1..5,1..5] of real;
begin
clrscr;
min1:= 1; min2:= 1;
for i:=1 to 5 do begin
for j:=1 to 5 do begin
gotoxy(2,2);
writeln('BbeDite element massiva ',i,'x',j);
gotoxy(4+j*2,4+i);
readln(A[i,j]);
{ TyT MbI BBODuM MACCuB }
if A[i,j] < A[min1,min2] then begin
min1 := i;
A[min1,min2]:= A[i,j]; {HAshli minimal'nuu stro4ku i min element}
end;
end;
end;
for i := min1 to min1 do begin
for j:= 1 to 5 do begin
A[min1,j] := A[min1,j]/A[min1,min2]; {Stroku podelili na min !!! }
end;
end;
for i := 1 to 5 do begin
for j:= 1 to 5 do begin
gotoxy(35,2);
writeln('poluchen massiv ');
gotoxy(35+i*2,4+j);
writeln('',A[i,j] :4 :0);
end;
end;
readln;
end.
1. Общие правила форума действуют для всех:
! | 8. Запрещена любая реклама и спам. Форум и сайт "Все о Паскале" - НЕ коммерческий проект, и никакая реклама на нем неприемлема! |
if A[i,j] < A[min1,min2] then begin
{
если текущий элемент меньше элемента в строке, где был минимум,
и в первом столбце - min2 нигде не изменяется и остается равным 1, то
}
min1 := i; {запомнили новую строку с минимальным}
A[min1,min2]:= A[i,j]; {первый элемент в этой строке заменили минимальным по строке}
end;
for i := min1 to min1 do begin {этот цикл выполнится ровно 1 раз}
Zara, сделайте пожалуйста так, чтобы я мог это читать. Все строки между бегин и енд сдвигаются на 2 символа. Все строки между подразумевающимися бегин и енд (это когда if p then {begin} ... {end} - здесь бегин и енд не стоят, потому что между ними 1 строчка) тоже. Посмотрите, например, на программу Вольво.
А то готоиксигрик с одним пробелом, после него врайтлээн с 2 пробелами... Не могу это читать.
Ну так у меня получается
program lab;
uses crt;
const n = 20;
var
j,i, min1,min2:integer;
s: real;
A:array[1..5,1..5] of real;
begin
clrscr;
min1:= 1; min2:= 1;
for i:=1 to 5 do begin
for j:=1 to 5 do begin
gotoxy(2,2);
writeln('BbeDite element massiva ',i,'x',j);
gotoxy(4+j*2,4+i);
readln(A[i,j]);
{ TyT MbI BBODuM MACCuB }
if A[i,j] < A[min1,min2] then begin
min1 := i;
A[min1,min2]:= A[i,j]; {HAshli minimal'nuu stro4ku i min element}
end;
end;
end;
for i := 1 to 5 do begin
for j:= 1 to 5 do begin
A[min1,j] := A[min1,j]/A[min1,min2]; {Stroku podelili na min !!! }
gotoxy(35,2);
writeln('poluchen massiv ');
gotoxy(35+i*2,4+j);
writeln('',A[i,j] :4 :0);
end;
end;
readln;
end.
ты просьбы и вопросы игнорируешь?
ну что ж... пожалуйста.
только непохоже, что ты
Я просто не понимаю чего от меня хотят!!! Мисс_граффити...
program lab;
uses crt;
var
j, i, min1,min2:integer;
g,k, s: real;
A:array[1..5,1..5] of real;
begin
clrscr;
A[min1,min2]:=A[i,j];
for i:=1 to 5 do begin
for j:=1 to 5 do begin
gotoxy(2,2);
writeln('BвeDite element massiva ',i,'x',j);
gotoxy(4+j*2,4+i);
readln(A[i,j]);{ Вводим массив }
if A[i,j] < A[min1,min2] then begin
A[min1,min2] := A[i,j]; {Тут вроде находится минимум}
min1 := i;
end;
end;
end;
k:=A[i,j]/A[min1,min2];
for i:= 1 to 5 do begin
for j:= 1 to 5 do begin
if i=min1 then A[i,j] :=k;
gotoxy(35,2);
writeln('Массив готов ');
gotoxy(35+i*2,4+j);
writeln(A[i,j] :4 :0);
end;
end;
readln;
end.
от тебя хотят нормального форматирования.
то есть твоя программа должна выглядеть например так:
clrscr;
A[min1,min2]:=A[i,j];
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
gotoxy(2,2);
writeln('BвeDite element massiva ',i,'x',j);
gotoxy(4+j*2,4+i);
readln(A[i,j]);{ Вводим массив }
if A[i,j] < A[min1,min2] then
begin
A[min1,min2] := A[i,j]; {Тут вроде находится минимум}
min1 := i;
end;
end;
end;
Я понял. Постараюсь нормально писать... А одномерный пример, я пробовал переделывать у меня не получается. Пожалуйста сделай плиз, мне к понедельнику надо уже программу показывать, да еще и отчет делать!!!!
А ты понял, что там происходит в одномерном примере?
По-моему, нет.
То есть абсолютно не разобрался, где что запоминаем и что чему присваиваем.
Смотри: в этой программе тебе нужно знать строку, в которой находится минимум (ее потом делить надо), и чему он равен. Можно запоминать строку и значение, но [на мой взгляд] логичнее строку и столбец.
Для этого нам понадобится 2 переменные.
кроме того, нам нужны счетчик по строкам/столбцам и сам массив.
var i,j,mini,minj: byte;
A: array [1..5,1..5] of real;
mini:=1;
minj:=1;
for i:=1 to 5 do {для каждой строки}
for j:=1 to 5 do {для каждого столбца}
begin
readln(A[i,j]); {ввели элемент}
if A[i,j]<A[mini,minj] then {если он меньше минимального}
begin
mini:=i; {запомнили номер строки}
minj:=j; {запомнили номер столбца}
end;
end;
A[min1,min2]:=A[i,j];(тем более ДО заполнения массива).
Вроде все написал правильно. А на экран выводит только столбец!!!! почему????
program lab;
uses crt;
var
j, i, min1, min2: byte;
A:array[1..5,1..5] of real;
begin
clrscr;
min1:=1; min2:=1;
for i:=1 to 5 do
for j:=1 to 5 do
begin
gotoxy(2,2);
writeln('BbeDite element massiva ',i,'x',j);
gotoxy(4+j*2,4+i);
readln(A[i,j]);{ TyT MbI BBODuM MACCuB }
if A[i,j] < A[min1,min2] then
begin
min1 := i; {Hawli minimal'nuu stro4ku i min element}
min2 := j;
end;
end;
for i := 1 to 5 do
for j := 1 to 5 do
begin
if i=min1 then
A[i,j]:=A[i,j]/A[min1,min2];
gotoxy(35,2);
writeln('poluchen massiv ');
gotoxy(35+j*2,4+i);
writeln(A[i,j] :4 :0);
end;
readkey;
end.
А вот так:
gotoxy(35,2); write('poluchen massiv ');?
for i := 1 to 5 do
for j := 1 to 5 do begin
if i=min1 then
A[i,j]:=A[i,j]/A[min1,min2];
gotoxy(35+j*5, 4+i);
write(A[i, j] :4 :0);
end;
ладно щас попробую!!!
Добавлено через 9 мин.
И вправду все получается, если бы не одно но!!!! Привожу пример
введите массив
6 6 6 6 6
6 6 6 6 6
6 4 2 6 8
8 8 8 8 8
8 8 8 8 8
Полученный массив
6 6 6 6 6
6 6 6 6 6
3 2 1 6 8
8 8 8 8 8
8 8 8 8 8
program lab;
uses crt;
var
j, i, min1, min2: byte;
A:array[1..5,1..5] of real;
begin
clrscr;
min1:=1; min2:=1;
for i:=1 to 5 do
for j:=1 to 5 do
begin
gotoxy(2,2);
writeln('BbeDite element massiva ',i,'x',j);
gotoxy(4+j*5,4+i);
readln(A[i,j]);{ TyT MbI BBODuM MACCuB }
if A[i,j] < A[min1,min2] then
begin
min1 := i; {Hawli minimal'nuu stro4ku i min element}
min2 := j;
A[min1,min2]:=A[i,j];
end;
end;
gotoxy(35,2); write('poluchen massiv ');
for i := 1 to 5 do
for j := 1 to 5 do
begin
if i=min1 then
A[i,j]:=A[i,j]/A[min1,min2];
gotoxy(35+j*5, 4+i);
write(A[i, j] :4 :0);
end;
readkey;
end.
Ты внимательно посты будешь читать? Я тебе о чем чуть выше сказал? Повторять не буду - ищи и исправляй!
Простите за глупость не внимательно читаю!!!! )))) Спасибо всем кто со мной мучался, вы очень помогаете!!!!
Кому интересно могут посмотреть прогу!!!!! Может для кого нибудь она станет полезной(со световым меню).
Прикрепленные файлы
LABA7.PAS ( 4.58 килобайт )
Кол-во скачиваний: 202