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

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

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

 
 Ответить  Открыть новую тему 
> Опять массивы
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

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


Надеюсь я не сильно надоедаю своими дурацкими задачами smile.gif
Вот код:

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©; 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 удалить все положительные элементы, расположенные после максимального элемента. - когда запувскаю - он выполняет не то, что хотелось бы sad.gif
ЗЫ в программе numofneg - массив в котором сохраняются номера положительных элементов после маскимального, findmaxn - функция находит номер максимального элемента.

Сообщение отредактировано: zloy_pes -


--------------------
Money, hoes, cars and clothes
That's how all my niggaz know
Blowin dro, 24's
That's how all my niggaz roll...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

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

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


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;



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

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


Программа попрежнему работает странно nea.gif Вместо того, чтобы выводить только отрицательные числа, там появляются ещё и положительные wacko.gif
Но за помощь спасибо - продолжаю думать...


--------------------
Money, hoes, cars and clothes
That's how all my niggaz know
Blowin dro, 24's
That's how all my niggaz roll...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
Что я делаю НЕ ТАК?

ДО максимального - само собой присутствуют положительные элементы (если ты не обратил внимание - после удаления распечатывается ВЕСЬ массив. А у тебя в задании не сказано, что все положительные элементы надо удалять - сказано только про "после максимума")...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

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


Цитата
... 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...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






zloy_pes,
Уважаемый, но так у тебя написано... Значит, переформулируй задание!!! Здесь не форум телепатов, чтоб ГАДАТЬ, что тебе нужно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

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


Хорошо, вообщем задание такое:
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...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Угу... А теперь - вопрос на засыпку... Какой из пунктов задания, моя программа НЕ выполняет ? Что она делает "слишком просто" ? Я в задании никакого указания на сложность не видел...

Будем гадать дальше ?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

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


Ой! Точно! Приношу свой извинения! Неправильно понял задачу.
2volvo Спасибо огромное!


--------------------
Money, hoes, cars and clothes
That's how all my niggaz know
Blowin dro, 24's
That's how all my niggaz roll...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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