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

Тема в разделе "Delphi - FAQ", создана пользователем Bad Jungo, 24 окт 2006.

Статус темы:
Закрыта.
  1. Bad Jungo

    Bad Jungo Гость

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

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

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

    Ogion7 Гость

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

    pushkin Гость

    Попробуй http://www.progs.biz - там очень кратко описаны основные языки программирования и платформы. Информация очень краткая и очень просто изложена.
     
  4. ROxY

    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
    вот нужно посчитать по этой формуле сумму...
    помогите пожалуйста очень надо!!!!!
     
  5. European

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

    Azrael Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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]
    Да ты прав, я не заметил последнего слагаемого
     
  8. Azrael

    Azrael Гость

    Для: ROxY

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

    ROxY Гость

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

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

    Azrael Гость

    Для универа обычно делается вот так (никаких проверок и проч. :) )
    Код (Text):
    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.
     
  11. ROxY

    ROxY Гость

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

    Azrael Гость

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

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

    ROxY Гость

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

    Azrael Гость

    Для: ROxY

    Пожалуйста!
     
  15. ROxY

    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')
    что значат НУЛИ??
     
  16. Maniacosaur

    Maniacosaur Гость

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

    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 -увеличивает на единицу..так??
     
  18. Azrael

    Azrael Гость

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

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

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

    sab0tage Гость

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

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

    А что сдесь нетак? Самаже говоришь, что это алгоритм для спирали. Вот так и заполняется матрица в спирали.

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



    Код (Text):
    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, это хотя и не идеальное решение, зато поможет тебе избежать бесконечного цикла. А вообще конечно код грубоватый...

    Удачи ;)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей