![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
zloy_pes |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 53 Пол: Мужской Реальное имя: Веселовский Пётр Николаевич Репутация: ![]() ![]() ![]() |
Надеюсь я не сильно надоедаю своими дурацкими задачами
![]() Вот код:
program _2;
uses crt;
const k=100;
type intarr=array[1..k] of integer;
type arr=array[1..k] of real;
var n,i,j,c,f:integer;
a,h,x:real;
R:arr;
numofneg:intarr;
procedure writearray(n:integer; R:arr);
var i:integer;
begin
for i:=1 to n do writeln('R[',i,']=',R[i]);
end;
function findmaxn(n:integer; R:arr):integer;
var c,i:integer;
max:real;
begin
c:=0;
max:=R[1];
for i:=1 to n do begin if max<R[i] then begin max:=R[i]; findmaxn:=i; end; end;
end;
begin
c:=0;
j:=0;
clrscr;
writeln('Input following values (N must be less then 20):');
repeat begin write('N='); readln(n); end;
until n<20;
write('X='); readln(x);
write('H='); readln(h);
write('A='); readln(a);
for i:=1 to n do R[i]:=0.8*cos(a*x+i*h);
writeln('Your array R is:');
writearray(n,R);
writeln('---------------------');
for i:=findmaxn(n,R) to n do if R[i]>0 then begin inc(j); numofneg[j]:=i; end;
writeln(findmaxn(n,R));
writeln('---------------------');
{вот тут как мне кажется ошибка->} for i:=1 to j do begin for f:=numofneg[i] to n-j do begin inc(c); R[f]:=R[f+1]; end; end;
writeln('After deliting we have:');
writearray(c,R);
readln;
end.
Задание такое: 1. Вычеслить массив R в соответствии с формулой r(i)=0,8*(a*x+h*i), где i=1..n, n<20, x,h,a - действительные числа, ввод. с клавы. массив вывести на экран. - с этой задачей койкак справился, 2. В R удалить все положительные элементы, расположенные после максимального элемента. - когда запувскаю - он выполняет не то, что хотелось бы ![]() ЗЫ в программе numofneg - массив в котором сохраняются номера положительных элементов после маскимального, findmaxn - функция находит номер максимального элемента. Сообщение отредактировано: zloy_pes - 1.12.2005 23:53 -------------------- Money, hoes, cars and clothes
That's how all my niggaz know Blowin dro, 24's That's how all my niggaz roll... |
virt |
![]()
Сообщение
#2
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: ![]() ![]() ![]() |
c := n;
for i := j downto 1 do
begin
for f := numofneg[i] to c - 1 do
R[f] := R[f+1];
dec( c );
end;
-------------------- |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
zloy_pes, лишние переменные - Зло :)
И с ними надо бороться ... Заодно посмотри на переделанную функцию findmaxn... uses crt;
const
k = 100;
type
arr = array[1..k] of real;
var
n,i,j: integer;
a,h,x: real;
R: arr;
procedure writearray(n:integer; R:arr);
var i: integer;
begin
for i:=1 to n do
writeln('R[',i,']=',R[i]:10:7);
end;
function findmaxn(n:integer; R:arr):integer;
var i, max: integer;
begin
max := 1;
for i:=1 to n do
if R[max] < R[i] then max := i;
findmaxn := max;
end;
begin
clrscr;
writeln('Input following values (N must be less then 20):');
repeat
write('N='); readln(n);
until n<20;
write('X='); readln(x);
write('H='); readln(h);
write('A='); readln(a);
for i:=1 to n do
R[i]:=0.8*cos(a*x+i*h);
writeln('Your array R is:');
writearray(n,R);
writeln('---------------------');
i := findmaxn(n, R) + 1;
while i <= n do
if R[i] > 0 then begin
for j := i to n - 1 do
R[j] := R[j + 1];
Dec(n)
end
else inc(i);
writeln('---------------------');
writeln('After deleting we have:');
writearray(n,R);
readln;
end.
|
zloy_pes |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 53 Пол: Мужской Реальное имя: Веселовский Пётр Николаевич Репутация: ![]() ![]() ![]() |
Программа попрежнему работает странно
![]() ![]() Но за помощь спасибо - продолжаю думать... -------------------- Money, hoes, cars and clothes
That's how all my niggaz know Blowin dro, 24's That's how all my niggaz roll... |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата Программа попрежнему работает странно Да что ты говоришь? А собственно, чего ты ждешь от программы? Ты какие значения вводишь? Вот мой тест: Цитата Input following values (N must be less then 20): Что я делаю НЕ ТАК?N=15 X=2 H=0.5 A=11 Your array R is: R[1]=-0.6986437 R[2]=-0.4262664 R[3]=-0.0495242 R[4]= 0.3393432 R[5]= 0.6451276 R[6]= 0.7929622 R[7]= 0.7466521 R[8]= 0.5175355 R[9]= 0.1617081 R[10]=-0.2337110 R[11]=-0.5719096 R[12]=-0.7700847 R[13]=-0.7797162 R[14]=-0.5984460 R[15]=-0.2706554 --------------------- --------------------- After deleting we have: R[1]=-0.6986437 R[2]=-0.4262664 R[3]=-0.0495242 R[4]= 0.3393432 R[5]= 0.6451276 R[6]= 0.7929622 R[7]=-0.2337110 R[8]=-0.5719096 R[9]=-0.7700847 R[10]=-0.7797162 R[11]=-0.5984460 R[12]=-0.2706554 ДО максимального - само собой присутствуют положительные элементы (если ты не обратил внимание - после удаления распечатывается ВЕСЬ массив. А у тебя в задании не сказано, что все положительные элементы надо удалять - сказано только про "после максимума")... |
zloy_pes |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 53 Пол: Мужской Реальное имя: Веселовский Пётр Николаевич Репутация: ![]() ![]() ![]() |
Цитата ... 2. В R удалить все положительные элементы, расположенные после максимального элемента. ... volvo, так бы это слишком просто былобы ;) -------------------- Money, hoes, cars and clothes
That's how all my niggaz know Blowin dro, 24's That's how all my niggaz roll... |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
zloy_pes,
Уважаемый, но так у тебя написано... Значит, переформулируй задание!!! Здесь не форум телепатов, чтоб ГАДАТЬ, что тебе нужно. |
zloy_pes |
![]()
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 53 Пол: Мужской Реальное имя: Веселовский Пётр Николаевич Репутация: ![]() ![]() ![]() |
Хорошо, вообщем задание такое:
1. Сформировать массив R, в котором элемент r(i)=0,8*cos(a*x+h*i), где i=1..n (n - натуральное, задаётся с клавиатуры n<20) и x,h,a - действительные числа - тоже с клавы. 2. В вычесленном массиве удалить все положительные элементы, расположенные после максимального. -------------------- Money, hoes, cars and clothes
That's how all my niggaz know Blowin dro, 24's That's how all my niggaz roll... |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Угу... А теперь - вопрос на засыпку... Какой из пунктов задания, моя программа НЕ выполняет ? Что она делает "слишком просто" ? Я в задании никакого указания на сложность не видел...
Будем гадать дальше ? |
zloy_pes |
![]()
Сообщение
#10
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 53 Пол: Мужской Реальное имя: Веселовский Пётр Николаевич Репутация: ![]() ![]() ![]() |
Ой! Точно! Приношу свой извинения! Неправильно понял задачу.
2volvo Спасибо огромное! -------------------- Money, hoes, cars and clothes
That's how all my niggaz know Blowin dro, 24's That's how all my niggaz roll... |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 10:22 |