Требуется помощь...

  • Автор темы Bad Jungo
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Bad Jungo

Такая ситуация...

1. Я учусь в универе на 2 курсе! Специальность АСОиУ... Нам в этом семестре сдавать курсач, не могли бы вы(может есть у кого нить) скинуть книгу по паскалю в электронном виде?
2. И еще... На чем лучше и легче будет написать курсач, на паскале или на делфи?
3. Или какую книгу вы могли бы посоветовать купить и где?

Вот такая вот проблема...
 
O

Ogion7

По Пасу есть неплохая книга(незнаю продаетться ли) -- А. Ставровский Turbo Pascal 7.0(Если не ошибаюсь :D )
В Делфи можна наваять класный интерфейс быстро и просто(а пасе задолбешся, тем более на втором курсе), но разбираться будеш дольше. Язык в Делфи правда практически такой же как в пасе(токмо обьектно-ориентированый). Для того чтобы найти по нему книгу нужно задачку поконкретней сформулировать
 
P

pushkin

Попробуй - там очень кратко описаны основные языки программирования и платформы. Информация очень краткая и очень просто изложена.
 
R

ROxY

ПОМОГИТЕ с двумя задачками
1. я сделала одну она на нахождение корней квадратного уравнения..НО препод сказал
что при условии когда все коэффициенты нули должны выводиться любые корни
скажите как это сделать??
2. а вторая вводятся переменные a,n,x
и дана формула S=1-a*x+a^2*x^2-a^3*x^3+a^4*x^4.....a^n*x^n
вот нужно посчитать по этой формуле сумму...
помогите пожалуйста очень надо!!!!!
 
E

European

1. Что значит любые корни? Случайные числа?
2. Это бесконечный ряд. Необходимо определить формулу ряда (на бумажке :D ), а в нее подставлять значения, указанные пользователем (в программе)
 
A

Azrael

2. Это бесконечный ряд. Необходимо определить формулу ряда (на бумажке ), а в нее подставлять значения, указанные пользователем (в программе)

С чего бы это?
S=1-a*x+a^2*x^2-a^3*x^3+a^4*x^4.....a^n*x^n

n+1 слагаемых, формула
S=1+(-1)^n*a^n*x^n, все остальное считается в зависимости от a и n и x.
Считаешь в цикле.
 
E

European

<!--QuoteBegin-Azrael+5:01:2007, 12:05 -->
<span class="vbquote">(Azrael @ 5:01:2007, 12:05 )</span><!--QuoteEBegin-->С чего бы это?
[snapback]52349" rel="nofollow" target="_blank[/snapback]​
[/quote]
Да ты прав, я не заметил последнего слагаемого
 
A

Azrael

Для: ROxY

А на каком языке надо то? Вроде где-то нечто подобное было :D , а то заново что-то вломы писать <_<
 
R

ROxY

1.ну да случайные числа
ну надо на Паскале...до зачёта не хватает этих двух задачек...

European ну вообще-т я поняла что с клавиатуры вводятся 3 переменных...
но вот как на Паскале записать эту формулу?!...
:)
 
A

Azrael

Для универа обычно делается вот так (никаких проверок и проч. :) )
Код:
function stepen(a:real;n:integer):real;
var i:integer;
r:real;
begin
r:=a;
for i:=1 to n-1 do r:=r*a;
stepen:=r;
end;

var a,x,s:real;
n,i:integer;
begin
write('a=');
readln(a);
write('x=');
readln(x);
write('Целочисленное n, n>1, n=');
readln(n);
s:=1;
for i:=1 to n do
begin
s:=s+stepen(-1,i)*stepen(a,i)*stepen(x,i);
end;
writeln(s);
readln;
end.
 
R

ROxY

а теперь вопрос:
при вводе любых чисел выводится
ответ:1.0000000000Е+00
Azrael это нормально разве??)
 
A

Azrael

вообще-то странно :). у меня работает. попробуй в функции stepen заменить stepen:=r; на result:=r...

у меня такой ответ был еще когда я по невнимательности вместо readln(x) написал readln(a)
 
R

ROxY

блин даже не знаю как отблагодарить..
спасибо4ки Azrael!!!!
 
R

ROxY

Стыдно обращаться ещё раз но блин...

var i,j,m,n,l,r : integer;
tab : array [1..50,1..50] of integer;
begin
clrscr;
readln(m);
readln(n);
repeat
inc®;
for i:=r to n-r+1 do begin inc(l);tab[i,r]:=l end;
for i:=r+1 to m-r+1 do begin inc(l);tab[n-r+1,i]:=l end;
for i:=n-r downto r do begin inc(l);tab[i,m-r+1]:=l end;
for i:=m-r downto r+1 do begin inc(l);tab[r,i]:=l end;
until l=m*n;
for j:=1 to m do
for i:=1 to n do
begin
write(tab[i,j]:4);
if i=n then writeln;
end;
readln;
end.
это программа матрица по спирали..скажите что значит inc
вот...и ещё одна задачка вычисления корней квадратного уравнения

VAR A,B,C,D,X,Y:REAL;
BEGIN
WRITELN ('VVEDITE A B C');
READLN (A,B,C);
if a=0 then
BEGIN
if b=0 then
begin
if c=0 then
begin writeln('korney net');
readln;
halt;
end;
end;
X:=(-c)/:));
writeln('otvet X=',X:2:2,'');
readln;
Halt(0);
END;
D:=B*B-4*A*C;
IF D>0 THEN
BEGIN
X:=(-B+SQRT(D))/(2*A);
Y:=(-B-SQRT(D))/(2*A);
WRITELN('OTVET X=',X:2:2,' OTVET Y=',Y:2:2,'');
END;
IF D<0 THEN
begin
if a>0 then
writeln('otvet x=',-b/2*a:0:0,'+',sqrt(abs(d))/2*a:0:0,'i',
' ','otvet y=',-b/2*a:0:0,'-',sqrt(abs(d))/2*a:0:0,'i')
else
writeln('otvet x=',-b/2*a:0:0,'-',abs(sqrt(abs(d))/2*a):0:0,'i',
' ','otvet y=',-b/2*a:0:0,'+',abs(sqrt(abs(d))/2*a):0:0,'i')

end;
IF D=0 THEN
BEGIN
X:=(-:)/(2*A);
WRITELN ('OTVET X=',X:2:2,'');
END;
READLN;
END.
что значит halt X:2:2(что значит первая двойка а что вторая??) и последний вопрос
по этой же программе
writeln('otvet x=',-b/2*a:0:0,'+',sqrt(abs(d))/2*a:0:0,'i',
' ','otvet y=',-b/2*a:0:0,'-',sqrt(abs(d))/2*a:0:0,'i')
что значат НУЛИ??
 
M

Maniacosaur

<!--QuoteBegin-Azrael+6:01:2007, 10:34 -->
<span class="vbquote">(Azrael @ 6:01:2007, 10:34 )</span><!--QuoteEBegin-->Для универа обычно делается вот так (никаких проверок и проч. )[/quote]
Это сморя какой универ. Помнится у меня на лабах задания были не сильно чтобы сложные, а вот тестирование работы было очень тщательное. И ничуть об этом не сожалеют. Так что лучше сразу приучить себя делать максимум проверок для обеспечения работоспособности алгоритма
 
R

ROxY

вот этот момент мно кто-нибудь может объяснить??

for i:=r to n-r+1 do begin inc(l);tab[i,r]:=l end;
for i:=r+1 to m-r+1 do begin inc(l);tab[n-r+1,i]:=l end;
for i:=n-r downto r do begin inc(l);tab[i,m-r+1]:=l end;
for i:=m-r downto r+1 do begin inc(l);tab[r,i]:=l end;
until l=m*n;

и ещё inc -увеличивает на единицу..так??
 
A

Azrael

Код:
repeat
inc®;
for i:=r to n-r+1 do 
begin 
inc(l);
tab[i,r]:=l 
end;
for i:=r+1 to m-r+1 do 
begin 
inc(l);
tab[n-r+1,i]:=l 
end;
for i:=n-r downto r do 
begin 
inc(l);
tab[i,m-r+1]:=l 
end;
for i:=m-r downto r+1 do 
begin 
inc(l);
tab[r,i]:=l 
end;
until l=m*n;

изначально r=0, l=0. inc -увеличивает на 1
1-ый цикл for - проход по строке слева направо
2-ой - сверху вниз
3-ий - справа налево
4-ый - снизу вверх

число r - изменяется после каждого оборота, от него зависит "стартовая" и "конечная" позиция в циклах (см.выше)

P.S. Кажется есть пооптимальнее код (ну, по крайней мере, покороче :) ) Писал как-то давненько что-то подобное :)
 
S

sab0tage

что значит halt X:2:2(что значит первая двойка а что вторая??) и последний вопрос
по этой же программе

halt - выход, в твоем случае выполнение программы прервется

x:2:2, а подставить другие числа и посмотреть на результат не пробовала? Ты работаешь с типом real, чем он отличается от integer? Ответ: real - используется для дробных чисел, значит первая цифра это кол-во знаков до запятой, вторая после запятой.

for i:=r to n-r+1 do begin inc(l);tab[i,r]:=l end;
for i:=r+1 to m-r+1 do begin inc(l);tab[n-r+1,i]:=l end;
for i:=n-r downto r do begin inc(l);tab[i,m-r+1]:=l end;
for i:=m-r downto r+1 do begin inc(l);tab[r,i]:=l end;
until l=m*n;
А что сдесь нетак? Самаже говоришь, что это алгоритм для спирали. Вот так и заполняется матрица в спирали.

А вообще вывод таб на экран можно в целях эксперимента сделать после каждого шага интересующего тебя участка кода и посмотреть как строится спираль, заодно и придет понимание кода :)



Код:
var i,j,m,n,l,r : integer;
tab : array [1..50,1..50] of integer;

procedure Display;
begin
for j:=1 to m do
for i:=1 to n do
begin
write(tab[i,j]:4);
if i=n then writeln;
end;
readln;
end;

begin
{clrscr;}
write('Enter M:');
readln(m);
write('Enter N:');
readln(n);
repeat
inc(r);
for i:=r to n-r+1 do begin inc(l);tab[i,r]:=l end;
display;
for i:=r+1 to m-r+1 do begin inc(l);tab[n-r+1,i]:=l end;
display;
for i:=n-r downto r do begin inc(l);tab[i,m-r+1]:=l end;
display;
for i:=m-r downto r+1 do begin inc(l);tab[r,i]:=l end;
display;
until l=m*n;

{show final result}
display;
end.

Попробуй так с постоянным выводом результата, я думаю так будет понятнее как работает программа ;)

И еще, в данном примере M должен быть равен N, если они будут отличаться хотябы на единицу то результат будет искажен а если больше, то программа вообще зависнет. Поэтому советую заменить l=m*n (такое условие выполняется только при m=n), на хотябы l>m*n-1, это хотя и не идеальное решение, зато поможет тебе избежать бесконечного цикла. А вообще конечно код грубоватый...

Удачи ;)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!