Newsgroup: it.comp.lang.c++
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 

 gliene sarei molto grato...
Quanto paghi?  io prendo 75 euro all'ora. Per un lavoro completo stimo 4 
ore, sviluppo + testing (sono mooolto onesto e non ti frego), 75x4 = 300 
euro.
Tommy

 gliene sarei molto grato...
Non è l'approccio guisto sia con il Newsgroup
che con i problemi.
__
Niente e nessuno al mondo potrà
fermarmi dal ragionare !
-- 
Inviato da Virgilio 
http://newsgroup.virgilio.it
Filtra gli antipatici, segnala le risposte, segue i thread, e lo fa da web

 ecco il programma scritto in pascal:
Purtroppo (per te) è un favore che non posso permettermi.
Ho sentito dire però che esistono programmi sotto Linux/Unix che convertono
sorgenti da pascal a linguaggio C.
Comunque non è difficile... potresti metterti un pò d'impegno...