IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Массивы одномерныые и двумерные..., Помогите пожалуйста
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


У меня есть задание сделать одномерный и двумерный массив помогите плиз.....
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.

это что я смог сделать, но программа все равно не пашет!!! И это только кусочек)))

2)В матрице найти минимальный элемент. Разделить элементы строки, в которой он находится, на найденный минимальный элемент.

P.S. Заранее спасибо за помощь good.gif


--------------------
Хочу стать программером, но еще много чего учить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Если приводишь программу, приводи всю.
Ты не написал секцию объявления переменных.

И никогда не занимайся бредом - добавление дизайна в программу, в которой не реализован основной функционал.

Вот твоя программа без дизайно-бреда:
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.


Теперь смотрим на код - я отметил с какого момента начинается бред.

Первое правила написания кода - сначала напиши комментарий по русски - что ты будешь делать, и после этого запиши код, реализующий комментарий.
Конечно до паранойи доходить не надо, и комментировать каждую строчку - только логические блоки кода, например

Код
{Вводим массив}
... код ...

{Подсчитываем среднее арифметическое}
... код ...

{Ищем минимальное значение}
... код ...

{Заменяем элементы после минимума на значение среднего арифметического}
... код ...

{Выводим результат}
... код ...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Скажи мне, пожалуйста, для чего тебе нужны по всей программе комманды:
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.



программка-то... на 5 минут...

Сообщение отредактировано: /7popok -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +



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.


Вот я и написал все что я понял. Помогите разобраться. Очень надо!!!! В понедельник уже Отчет сдавать!!!

Добавлено через 1 мин.
Спасибо /7popok. Щас опробую прогу. А можешь посмотреть по двухмерным массивам????


Добавлено через 1 мин.
А gotoxy,textbackground и т.д.. Мне нужны, у нас преподаватель очень требовательна к интерфейсу.


--------------------
Хочу стать программером, но еще много чего учить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






zara44, допущена грубая ошибка: когда ты ищешь минимум, ты запоминаешь само значение,

Цитата
if L[i]<min then begin
min:=L[i];{тут узнаем минимум}


а когда заменяешь на минимальный элемент - пытаешься заменить по индексу...
Цитата
if L[i]>L[min] then L[i]:=s;

Так нельзя... И там и там должно быть что-то одно: или индексы, или сами значения...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


zara44,
а по аналогии самому сложно?
добавляешь второй цикл по j, только уменьши размер массива, а то ты его вводить только час будешь.

Сообщение отредактировано: /7popok -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


/7popok . Программу которую ты мне написал. Она тоже не правильно считает у меня



--------------------
Хочу стать программером, но еще много чего учить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


она считает всё и пишет правильно, но, признаюсь, есть один глюк. он последний элемент не изменяет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата(Пророк)
min:=i;
после окончания цикла делать нельзя - i не определено... Еще раз запостишь программу НЕ проверяя (и даже не думая) - буду принимать меры...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


У меня выходит примерно так.
Привожу пример
Введите элементы массива:
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





Добавлено через 2 мин.
volvo я конечно все понимаю, но я просто уже запутался во всем что можно!!!!! Мне дали задание сделать световое меню и в нем 2 программы на массивы дали. Световое меню я сделал, а вот программы я не могу делать, очень много ошибок у меня. ((((

Добавлено через 1 мин.
volvo а как мне тогда сделать???


--------------------
Хочу стать программером, но еще много чего учить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


volvo
после цикла оно же равно 20, так как цикл закончился на цифре 20
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Спасиба теперь программа работает. Теперь остается только 2)В матрице найти минимальный элемент. Разделить элементы строки, в которой он находится, на найденный минимальный элемент.


--------------------
Хочу стать программером, но еще много чего учить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Попробуй сам по аналогии... Напиши хоть что-нибудь...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Ок. Постараюсь что нибудь сделать. А щас я в колледж поехал... good.gif good.gif good.gif


--------------------
Хочу стать программером, но еще много чего учить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Цитата
после цикла оно же равно 20, так как цикл закончился на цифре 20
Да? Уверен? Я - нет... И доки на Паскаль тоже со мной согласны. Во-первых, оно должно быть равно не 20, а 21, потому как в конце тела цикла происходит изменение управляющей переменной. Ну, а во-вторых:

Цитата
Если оператор, содержащийся в теле оператора for, изменяет значение управляющей переменной, то это является ошибкой. После выполнения оператора for значение управляющей переменной становится неопределенным, если только выполнение оператора for не было прервано с помощью оператора перехода.
(цитата - отсюда: Руководство по языку B.Pascal 7 & Objects/LR -> Операторы цикла с параметром (for))
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Да в любом случае вот это - бред.

L[min]:=L[i];
min:=i;

ну, ты считаешь, что i=20
а чему равен min ДО выполнения второй строчки?
if L[i]<L[min] then begin
L[min]:=L[i];

тебя кто-то просил присваивать "бывшему" минимуму значение нового? это же перековеркает весь массив... а если он был отстортирован в обратном порядке - представляешь, что получится?
if L[i]>L[min] then L[i]:=s;

естественно, больше (ну, для нескольких эл-тов равно) - мы же так минимум и искали, правда?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Вторую задачу смог сделать только так, плиз покажите где ошибки!!!!!!

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.

Заранее спасибо!!!!


--------------------
Хочу стать программером, но еще много чего учить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


1. Общие правила форума действуют для всех:
 ! 
8. Запрещена любая реклама и спам.
Форум и сайт "Все о Паскале" - НЕ коммерческий проект, и никакая реклама на нем неприемлема!


Если хочешь, чтобы тебе помогали - уважай требования.
2. Нормальное форматирование делает половину ошибок заметными.
Думаешь, у кого-то есть желание тратить свое время на расставление отступов в твоем коде?
3. Поясни, пожалуйста, вот эти фрагменты (моих знаний не хватает на проникновение в их сокровенный смысл):
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 раз}


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Zara, сделайте пожалуйста так, чтобы я мог это читать. Все строки между бегин и енд сдвигаются на 2 символа. Все строки между подразумевающимися бегин и енд (это когда if p then {begin} ... {end} - здесь бегин и енд не стоят, потому что между ними 1 строчка) тоже. Посмотрите, например, на программу Вольво.
А то готоиксигрик с одним пробелом, после него врайтлээн с 2 пробелами... Не могу это читать.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 22.12.2024 17:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name