Newsgroup: it.comp.lang.pascal
Titolo: chi mi aiuta ?

ho bisogno di trasformare un programma da pascal in "C"
ecco il programma scritto in pascal:
program tangente;
uses
   crt,printer;
type
   estremi=array[1..20] of real;
const
  step=1;
  deltax=0.001;
  volte=20;
var
  fs,fd,ds,dd:estremi;
  {sono gli estremi sinistri e destri della funzione e della derivata
  corrispondenti a cambiamento di segno}
  r,scelta:char;
  kfu,kde,k,s:integer;
  a1,b1,destro,sinistro,ascissa,p1:real;
  basta:boolean;
function f(x:real):real;
begin
  f:=exp(x)+sqr(x)-2;
end;
function f1(x:real):real;
begin
  f1:=(f(x+deltax)-f(x))/deltax;
end;
begin
  clrscr;
  writeln('   Il calcolatore andr. a cercare intervalli nei quali la 
funzione e la sua');
  writeln('    derivata avessero a cambiare segno incrementando ogni volta 
dello step');
  writeln('        previsto nelle costanti (per maggior precisione puoi 
cambiarlo');
  write('   Immetti l''ascissa minima da cui iniziare la ricerca ');
  readln(sinistro);
  write('   Immetti l''ascissa massima cui concludere la ricerca ');
  readln(destro);
  writeln('FUNZIONE');
  kfu:=0;
  a1:=sinistro;
  b1:=sinistro+step;
  while b1<=destro do begin
     if f(a1)*f(b1)=0 then if f(a1)=0 then writeln('Zero funzione', a1:15:7)
                           else writeln('Zero funzione', b1:15:7)
     else
        if f(a1)*f(b1)<0 then begin
          kfu:=kfu+1;
          fs[kfu]:=a1;
          fd[kfu]:=b1;
          writeln(kfu:3,' - Individuato l''intervallo 
[',a1:15:8,',',b1:15:8,']');
        end;
     a1:=b1;
     b1:=b1+step;
  end;
  writeln('DERIVATA');
  kde:=0;
  a1:=sinistro;
  b1:=sinistro+step;
  while b1<=destro do begin
     if f1(a1)*f1(b1)=0 then if f1(a1)=0 then writeln('Zero derivata ', 
a1:15:7)
                           else writeln('Zero derivata ', b1:15:7)
     else
        if f1(a1)*f1(b1)<0 then begin
          kde:=kde+1;
          Ds[kde]:=a1;
          Dd[kde]:=b1;
          writeln(kfu:3,' - Individuato l''intervallo 
[',a1:15:8,',',b1:15:8,']');
        end;
     a1:=b1;
     b1:=b1+step;
  end;
  gotoxy(40,23);writeln('Un tasto per cominciare');
  r:=readkey;
  for k:=1 to kfu do begin
        clrscr;
        writeln(K:3,' FUNZIONE');
        a1:=fs[k];
        b1:=fd[k];
        s:=1;
        write(s:3,' - Intervallo[',a1:12:7,',',b1:12:7,'] con p =');
        basta:=false;
        scelta:='s';
        while (s<=volte) and (basta=false) do begin
           if scelta='s' then begin
               p1:=a1;
               repeat
                  if f1(p1)<>0 then
                      ascissa:=p1-f(p1)/f1(p1);
                  if (ascissa<a1) or (ascissa>b1) or (f1(a1)=0) then 
p1:=p1+step/100;
               until (ascissa>=a1) and (ascissa<=b1) and (f1(a1)<>0);
           end;
           if scelta='d' then begin
               p1:=b1;
               repeat
                  if f1(p1)<>0 then
                      ascissa:=b1-f(p1)/f1(p1);
                  if (ascissa<a1) or (ascissa>b1) or (f1(b1)=0) then 
p1:=p1-step/100;
               until (ascissa>=a1) and (ascissa<=b1) and (f1(b1)<>0);
           end;
           writeln(ascissa:18:9);
           if f(ascissa)=0 then begin
             writeln(ascissa:18:9,' S zero della funzione');
             basta:=true;
           end
           else begin
             if (f(a1)>0) and (f(ascissa)>0) then begin
                a1:=ascissa;
                scelta:='s';
             end;
             if (f(a1)>0) and (f(ascissa)<0) then begin
                b1:=ascissa;
                scelta:='d';
             end;
             if (f(a1)<0) and (f(ascissa)<0) then begin
                a1:=ascissa;
                scelta:='s';
             end;
             if (f(a1)<0) and (f(ascissa)>0) then begin
                b1:=ascissa;
                scelta:='d';
             end;
             s:=s+1;
             if s<(volte+1) then
                write(s:3,' - Intervallo[',a1:12:7,',',b1:12:7,'] con p =');
           end;
        end;
     gotoxy(40,23);writeln('Un tasto per continuare');
     r:=readkey;
   end;
   for k:=1 to Kde do begin
           clrscr;
           writeln(k:3,' DERIVATA');
           a1:=ds[k];
           b1:=dd[k];
           s:=1;
           write(s:3,' - Intervallo[',a1:12:7,',',b1:12:7,'] con p =');
           basta:=false;
           scelta:='s';
           while (s<=volte) and (basta=false) do begin
              if scelta='s' then begin
               p1:=a1;
               repeat
                  if f1(f1(p1))<>0 then
                      ascissa:=p1-f1(p1)/f1(f1(p1));
                  if (ascissa<a1) or (ascissa>b1) or (f1(a1)=0) then 
p1:=p1+step/100;
               until (ascissa>=a1) and (ascissa<=b1) and (f1(f1(a1))<>0);
              end;
              if scelta='d' then begin
               p1:=b1;
               repeat
                  if f1(f1(p1))<>0 then
                      ascissa:=b1-f1(p1)/f1(f1(p1));
                  if (ascissa<a1) or (ascissa>b1) or (f1(f1(b1))=0) then 
p1:=p1-step/100;
               until (ascissa>=a1) and (ascissa<=b1) and (f1(f1(b1))<>0);
              end;
              writeln(ascissa:18:9);
              if f1(ascissa)=0 then begin
                  writeln(ascissa:18:9,' S soluzione della derivata');
                  basta:=true;
              end
             else begin
               if (f1(a1)>0) and (f1(ascissa)>0) then begin
                  a1:=ascissa;
                  scelta:='s';
               end;
               if (f1(a1)>0) and (f1(ascissa)<0) then begin
                  b1:=ascissa;
                  scelta:='d';
               end;
               if (f1(a1)<0) and (f1(ascissa)<0) then begin
                  a1:=ascissa;
                  scelta:='s';
               end;
               if (f1(a1)<0) and (f1(ascissa)>0) then begin
                  b1:=ascissa;
                  scelta:='d';
               end;
               s:=s+1;
               if s<(volte+1) then
                    write(s:3,' - Intervallo[',a1:12:7,',',b1:12:7,'] con p 
=');
           end;
            end;
    r:=readkey;
    end;
end.
c'e' qualcuno che mi puo' fare il piacere di trasformarlo in codice "C", 
gliene sarei molto grato...
grazie mille 

 ho bisogno di trasformare un programma da pascal in "C"
...[CUT]...
A volte č meglio fare da soli...
http://www.science.unitn.it/~iori/java/PAS2C.TXT
:)
Buon Lavoro
--
=Omega============
Hands On
gnammo.altervista.org
==================