небольшие изменения

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by rubik-nerubik, 16 Dec 2007.

  1. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    250
    Likes Received:
    9
    Reputations:
    -2
    Народ, кто поможет мне?
    т.е. парень кинул мне готовую задачу, но разбираться нету сил уже...

    program Snak3;
    var ss,s:string;
    n,i,k:longint;
    read(n); ТУТ ругается что нет ':' это как? хм, может кто попробует исправить? спасибо, задача считает вида 1!+2!+3!+...+n!
    s:=''; ss:='';
    for i:=1 to n do
    begin
    for k:=1 to i do um(s,str(k),s);
    sum(ss,s,ss);
    end;


    procedure um(a,b:string;var c:string);
    var n,k,i,j,x,p:integer; d:string;
    begin
    n:=length(a);
    k:=length(b);
    c:=''; d:=''; p:=0;
    for i:=1 to n+k do d:=d+'0';
    for j:=k downto 1 do
    begin
    p:=0;
    for i:=n downto 1 do begin
    x:=(ord(a)-ord('0'))*(ord(b[j])-ord('0'))+p+ord(d[i+j])-ord('0');
    d[i+j]:=chr((x mod 10)+ord('0'));
    p:=x div 10;
    end;
    d[j]:=chr(ord(d[j])+p);
    end;
    i:=1;
    n:=length(d);
    while (d='0') and (i<n) do inc(i);
    for k:=i to n do c:=c+d[k];
    end;
    procedure raz(a,b:string;var c:string);
    var x,n,k,i,p,g:integer;
    d:string;
    begin
    n:=length(a);
    k:=length(b);
    if k<n then for i:=k+1 to n do b:='0'+b;
    d:=''; c:=''; p:=0;
    for i:=n downto 1 do
    begin
    if a<b then
    begin
    a[i-1]:=chr(ord(a[i-1])-1);
    x:=10+ord(a)-ord(b);
    d:=chr(x+ord('0'))+d;
    end
    else begin
    x:=ord(a)-ord(b);
    d:=chr(x+ord('0'))+d;
    end;
    end;
    i:=1;
    n:=length(d);
    while (d='0') and (i<n) do inc(i);
    for k:=i to n do c:=c+d[k];
    end;
    function cmp(a,b:string):string;
    var n,k,i:integer; c:string;
    begin
    n:=length(a);
    k:=length(b);
    c:='';
    if n<k then c:='-' else
    begin
    if k<n then c:='+' else
    begin
    i:=1;
    while ((a=b)and(i<=n)) do inc(i);
    if (a<b) then c:='-';
    if (a>b) then c:='+';
    if (i=n+1) then c:='=';
    end;
    end;
    cmp:=c;
    end;
    procedure sum(a,b:string;var c:string);
    var x,i,p,n,k:integer;
    begin
    n:=length(a);
    k:=length(b);
    p:=0;
    c:='';
    if n<k then begin
    for i:=n+1 to k do
    a:='0'+a;
    end else
    begin
    for i:=k+1 to n do
    b:='0'+b; end;
    n:=length(a);
    for i:=n downto 1 do
    begin
    x:=ord(a)-ord('0')+ord(b)-ord('0')+p;
    c:=chr((x mod 10)+ord('0'))+c;
    p:=x div 10;
    end;
    if p<>0 then
    begin
    inc(n);
    c:='1'+c;
    end;
     
  2. GlOFF

    GlOFF Elder - Старейшина

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Да щас у всех завал с учебой, никаких сил и возможностей. :((((
     
  3. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    250
    Likes Received:
    9
    Reputations:
    -2
    хоть тут помогите!!!!!!

    program one;
    var s,dx,x1,x2:real;
    q:array[1..20] of integer;
    r:array[1..25] of integer;
    i:integer; x,qq,kk:integer;
    k:array[1..100] of integer;
    function y(x:real):real;
    begin
    For i:=1 to 20 do begin
    read(q);
    if ((q>-1.2)and(q<3.4)) then inc(qq);
    end;
    For i:=1 to 25 do
    begin
    read(k);
    if ((q>2.2) and (q<5.34)) then inc(kk);
    end;
    if qq<kk then
    begin
    qq:=qq+kk;
    kk:=qq-kk;
    qq:=qq-kk;
    end;
    y:=x/(sqrt(exp(x*ln(exp(1)))- exp((-x)*ln(exp(1)))));
    begin
    assign(output,'output1.txt');
    rewrite(output);
    i:=kk;
    while i<=qq do
    begin
    x1:=y(q+i*dx); тут ругается type mismatch несоответствие типов!!!
    x2:=y(q+i*dx+dx);
    s:=s+(x1+x2)/2*dx;
    i:=i+dx;
    end;
    writeln(s);
    end.
     
  4. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,002
    Likes Received:
    435
    Reputations:
    90
    Вроде компилируется...
    Code:
    program one;
    var dx:integer;
    s,x1,x2:real;
    q:array[1..20] of real;
    r:array[1..25] of real;
    k:array[1..100] of real;
    i:integer;x,qq,kk:integer;
    function y(x:real):real;
    begin
    For i:=1 to 20 do begin
    read(q[i]);
    if ((q[i]>-1.2)and(q[i]<3.4)) then inc(qq);
    end;
    For i:=1 to 25 do begin
    read(k[i]);
    if ((q[i]>2.2) and (q[i]<5.34)) then inc(kk);
    end;
    if qq<kk then begin
    qq:=qq+kk;
    kk:=qq-kk;
    qq:=qq-kk;
    end;
    y:=x/(sqrt(exp(x*ln(exp(1)))- exp((-x)*ln(exp(1)))));
    End;
    begin
    assign(output,'output1.txt');
    rewrite(output);
    i:=kk;
    while i<=qq do begin
    x1:=y(q[i]+i*dx);
    x2:=y(q[i]+i*dx+dx);
    s:=s+(x1+x2)/2*dx;
    i:=i+dx;
    end;
    writeln(s);
    end.
    
    
     
  5. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,573
    Likes Received:
    976
    Reputations:
    783
    Code:
    program Snak3;
    var ss,s:string;
    n,i,k:longint;
    read(n); ТУТ ругается что нет ':' это как? хм, может кто попробует исправить? спасибо, задача считает вида 1!+2!+3!+...+n!
    s:=''; ss:='';
    for i:=1 to n do
    begin
    for k:=1 to i do um(s,str(k),s);
    sum(ss,s,ss);
    end;
    Эмм... Насколько я помню, в поцкале после окончания блока с переменными и их объявлениями, нужно писать begin.
     
  6. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    250
    Likes Received:
    9
    Reputations:
    -2
    уже исправил, но он уже говорит на um(s,str(k),s); - на um говорит незнает!!!!!... но это же какая-то функция, пжл скопируйте в паскаль. исправьте до комеиляции пжл
     
  7. Xserg

    Xserg Elder - Старейшина

    Joined:
    9 Dec 2006
    Messages:
    135
    Likes Received:
    127
    Reputations:
    53
    1.
    Code:
    program Snak3;
    
    var ss,s:string;
        n,i,k:longint;
    
    procedure um(a,b:string;var c:string);
    var n,k,i,j,x,p:integer;
        d:string;
    begin
     n:=length(s);
     k:=length(b);
     c:=''; d:=''; p:=0;
     for i:=1 to n+k do d:=d+'0';
     for j:=k downto 1 do
      begin
      p:=0;
      for i:=n downto 1 do begin
      x:=(ord(a[i])-ord('0'))*(ord(b[j])-ord('0'))+p+ord(d[i+j])-ord('0');
      d[i+j]:=chr((x mod 10)+ord('0'));
      p:=x div 10;
                            end;
      d[j]:=chr(ord(d[j])+p);
      end;
     i:=1;
     n:=length(d);
     while (d[i]='0') and (i<n) do inc(i);
     for k:=i to n do c:=c+d[k];
    end;
    
    procedure sum(a,b:string;var c:string);
    var x,i,p,n,k:integer;
    begin
     n:=length(a);
     k:=length(b);
     p:=0;
     c:='';
     if n<k then begin
     for i:=n+1 to k do
     a:='0'+a;
                 end else
     begin
     for i:=k+1 to n do
     b:='0'+b; end;
     n:=length(a);
     for i:=n downto 1 do
      begin
      x:=ord(a[i])-ord('0')+ord(b[i])-ord('0')+p;
      c:=chr((x mod 10)+ord('0'))+c;
      p:=x div 10;
      end;
     if p<>0 then
     begin
      inc(n);
      c:='1'+c;
     end;
    end;
    
    
    begin
    write('Enter n');
    readln(n);
    ss:='';
    for i:=1 to n do begin
     s:='1';
     for k:=1 to i do   um(s,str(k),s);
     sum(ss,s,ss);
                     end;
    writeln('1!+2!+3!+..+n!=',ss);
    read(n);
    end.
    
    2.
    Code:
    x1:=round(y(q+i*dx));
    
     
  8. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    250
    Likes Received:
    9
    Reputations:
    -2
    for k:=1 to i do um(s,str(k),s); - Error in Expression
     
  9. Xserg

    Xserg Elder - Старейшина

    Joined:
    9 Dec 2006
    Messages:
    135
    Likes Received:
    127
    Reputations:
    53
    У меня нет паскаля, я использовал delphi:
    um(s,inttostr(k),s);

    кажется надо
    Uses utilits или crt ??
     
    #9 Xserg, 16 Dec 2007
    Last edited: 16 Dec 2007
    1 person likes this.
  10. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    250
    Likes Received:
    9
    Reputations:
    -2
    ну а так работает? стукни 350-659-776

    всеровно неработает

    вот собственно решение задачи, 2 #4

    компилица вроде она, но не работает =\ хз

    Вычислить значение интеграла на заданном отрезке[q;r] интегрирования методом средних прямоугольников при заданном числе разбиений отрезка интегрирования К. Подынтегральная функция: y:=x/(sqrt(exp(x*ln(exp(1)))- exp((-x)*ln(exp(1))))); . Значения q и r, соответственно равные числу элементов массива Q(20), находящихся в интервале от –1.2 до 3.4 и числу элементов массива К(25),находящихся в интервале от 2.2 до 5.34, вычислить в одной подпрограмме. Если q>r, значения поменять местами.
     
    #10 rubik-nerubik, 16 Dec 2007
    Last edited: 16 Dec 2007
  11. Xserg

    Xserg Elder - Старейшина

    Joined:
    9 Dec 2006
    Messages:
    135
    Likes Received:
    127
    Reputations:
    53
    так должно работать:
    Code:
    program Snak3;
    uses  Crt;
    
    .....
      c:='1'+c;
     end;
    end;
    
    function IntToStr(a: Integer): string;
    var  s: string;
    begin
      Str(a, s);
      IntToStr := s;
    end;
    
    begin
    write('Enter n');
    ......  
    ...... um(s,IntToStr(k),s);
    
     
    2 people like this.
  12. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    250
    Likes Received:
    9
    Reputations:
    -2
    Всё, задача работоспособна....

    Спасибо: Xerg, Sn@k3, .Slip
    Вот собственно готовая задача
    , считает 1!+2!+3!+..+n!
    Code:
    program Snak3;
    uses crt;
    var ss,s:string;
        n,i,k:longint;
    
    procedure um(a,b:string;var c:string);
    var n,k,i,j,x,p:integer;
        d:string;
    begin
     n:=length(s);
     k:=length(b);
     c:=''; d:=''; p:=0;
     for i:=1 to n+k do d:=d+'0';
     for j:=k downto 1 do
      begin
      p:=0;
      for i:=n downto 1 do begin
      x:=(ord(a[i])-ord('0'))*(ord(b[j])-ord('0'))+p+ord(d[i+j])-ord('0');
      d[i+j]:=chr((x mod 10)+ord('0'));
      p:=x div 10;
                            end;
      d[j]:=chr(ord(d[j])+p);
      end;
     i:=1;
     n:=length(d);
     while (d[i]='0') and (i<n) do inc(i);
     for k:=i to n do c:=c+d[k];
    end;
    
    procedure sum(a,b:string;var c:string);
    var x,i,p,n,k:integer;
    begin
     n:=length(a);
     k:=length(b);
     p:=0;
     c:='';
     if n<k then begin
     for i:=n+1 to k do
     a:='0'+a;
                 end else
     begin
     for i:=k+1 to n do
     b:='0'+b; end;
     n:=length(a);
     for i:=n downto 1 do
      begin
      x:=ord(a[i])-ord('0')+ord(b[i])-ord('0')+p;
      c:=chr((x mod 10)+ord('0'))+c;
      p:=x div 10;
      end;
     if p<>0 then
     begin
      inc(n);
      c:='1'+c;
     end;
    end;
    
    function IntToStr(a: Integer): string;
    var  s: string;
    begin
      Str(a, s);
      IntToStr := s;
    end;
    
    begin
    write('Enter n');
    
    readln(n);
    ss:='';
    for i:=1 to n do begin
     s:='1';
     for k:=1 to i do   um(s,IntToStr(k),s);
     sum(ss,s,ss);
                     end;
    writeln('1!+2!+3!+..+n!=',ss);
    read(n);
    end.
    
     
    #12 rubik-nerubik, 16 Dec 2007
    Last edited: 16 Dec 2007
  13. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,002
    Likes Received:
    435
    Reputations:
    90
    хех мой пример разобрать не можете)))))))) я бы помог извини человек нет времени у самого. вон те чел поможет.
     
    1 person likes this.
  14. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    250
    Likes Received:
    9
    Reputations:
    -2
    Так, теперь осталось две беды: блок-схема к той:#12

    и к #10 переделать вроде....
     
Loading...