Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[OT] Da Delphi a C++
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
alexbr
Apprentice
Apprentice


Joined: 06 Sep 2003
Posts: 221
Location: Treviso - Italy

PostPosted: Wed Oct 29, 2003 2:13 pm    Post subject: [OT] Da Delphi a C++ Reply with quote

Conoscete un metodo (automatico) per tradurre codice delphi in c++.
Ho fatto un programmino in delphi (a console, serve per fare divisioni tra poliomi di qualsiasi grado a patto che il grado di A(x) sia maggiore di quello di B(x), ovvio) che vorrei portare in c++ e compilarlo per varie piattaforme.
Il problema è che in delphi uso gli array dinamici e provando a tradurre tutto in c++ usando i puntatori e i comandi di allocazione dinamica della memoria, solo che mi ci raccapezzo più!

Il codice Delphi è:
Code:
program divisionequ;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var a,b,r,q:array of real;
    crepeat: char;
    agrad,bgrad,i,c:integer;

begin
   repeat
////////////////////////////////////////////////////////////////////////////////
// Inserimento del polinomio dividendo:                                       //
   write('Inserisci il grado del polinomio dividendo: ');
   readln(agrad);
   setlength(a,agrad+1);
   for i:=agrad downto 0 do
   begin
      if i=0 then write('Inserisci il termine noto: ')
             else write('Inserisci il coefficiente di x^',i,': ');
      readln(a[i]);
   end;
////////////////////////////////////////////////////////////////////////////////
// Inserimento del polinomio divisore:                                        //
   write('Inserisci il grado del polinomio divisore: ');
   readln(bgrad);
   if bgrad>agrad then begin writeln('Divisione impossibile.'); readln; end
   else begin
   setlength(b,bgrad+1);
   for i:=bgrad downto 0 do
   begin
      if i=0 then write('Inserisci il termine noto: ')
             else write('Inserisci il coefficiente di x^',i,': ');
      readln(b[i]);
   end;
////////////////////////////////////////////////////////////////////////////////
// Settaggio lunghezza array
   setlength(q,agrad-bgrad+1);               // a = dividendo  // r = resto
   setlength(r,agrad+1);                     // b = divisore   // q = quoziente
// Copia array a in r
   for c:=0 to length(r)-1 do r[c]:=a[c];    // agrad,bgrad = grado del dividendo, divisore
////////////////////////////////////////////////////////////////////////////////
   for i:=agrad downto bgrad do
   begin
      q[i-bgrad]:=r[i]/b[bgrad];
      for c:=bgrad downto 0 do
         r[i-bgrad+c]:=r[i-bgrad+c]-q[i-bgrad]*b[c];
   end;
////////////////////////////////////////////////////////////////////////////////
   write('Il polinomio dividendo inserito è:');
   for i:=length(a)-1 downto 1 do write(a[i]:5:2,'x^',i,' + '); writeln(a[0]:5:2); writeln;
   write('Il polinomio divisore inserito è:');
   for i:=length(b)-1 downto 1 do write(b[i]:5:2,'x^',i,' + '); writeln(b[0]:5:2); writeln;
   write('Il risultato della divisione è: ');
   for i:=length(q)-1 downto 1 do write(q[i]:5:2,'x^',i,' + '); writeln(q[0]:5:2); writeln;
   write('Il resto della divisione è: ');
   for i:=length(r)-1 downto 0 do if r[i]<>0 then write(r[i]:5:2,'x^',i,'+');
   writeln;
   end;
   write('Vuoi ricominciare? [s/n] '); readln(crepeat);
   writeln;
   until (crepeat='n');
end.


Il codice c++ è:
Code:
#include <iostream>
#include <iomanip>

using namespace std;

int main() {
   char crepeat = 's';
   int agrad = 0, bgrad = 0, qgrad = 0, rgrad = 0, i = 0, c = 0;
   while (crepeat=='s' || crepeat=='S') {
      cout << "Inserisci il grado del polinomio dividendo: "; cin >> agrad;
      double *a = new double[agrad];
      for (i=agrad+1;i--;i>=0) {
         if (i==0) cout << "Inserisci il termine noto: ";
         else cout << "Inserisci il coefficiente di x^" << i << ": ";
         cin >> a[i];
         }
      cout << "Inserisci il grado del polinomio divisore: "; cin >> bgrad;
      if (agrad<bgrad) { cout << "Divisione impossibile"; break; }
      double *b = new double[bgrad];
      for (i=bgrad+1;i--;i>=0) {
         if (i==0) cout << "Inserisci il termine noto: ";
         else cout << "Inserisci il coefficiente di x^" << i << ": ";
         cin >> b[i];
         }
      qgrad = agrad-bgrad+1;
      double *q = new double[qgrad];
      rgrad = agrad+1;
      double *r = new double[agrad+1];
      for (c=0; c++; c <= agrad) r[c]=a[c];
      for (i=agrad+1;i--;i>=bgrad)
         q[i-bgrad]=r[i]/b[bgrad];
      for (c=bgrad+1;c--;c>=0)
         r[i-bgrad+c]=r[i-bgrad+c]-q[i-bgrad]*b[c];
      cout << "Il polinomio dividendo inserito è:";
      for (i=agrad+1;i--;i>1)
         cout << setiosflags( ios::internal | ios::showpos ) << setw ( 5 )
            << a[i] << "x^" << i ;
      cout << setiosflags( ios::internal | ios::showpos ) << setw ( 5 ) << a[0] << endl;
      cout << "Il polinomio divisore inserito è:";
      for (i=bgrad+1;i--;i>1)
         cout << setiosflags( ios::internal | ios::showpos ) << setw ( 5 )
            << b[i] << "x^" << i ;
      cout << setiosflags( ios::internal | ios:: showpos ) << setw ( 5 ) << b[0] << endl;
      cout << "Il risultato della divisione è: ";
      for (i=qgrad+1;i--;i>1)
         cout << setiosflags( ios::internal | ios::showpos ) << setw ( 5 )
            << q[i] << "x^" << i ;
      cout << setiosflags( ios::internal | ios::showpos ) << setw ( 5 ) << q[0] << endl;
      cout << "Il resto della divisione è: ";
      for (i=rgrad+1;i--;i>1) if (r[i]!=0)
         cout << setiosflags( ios::internal | ios::showpos ) << setw ( 5 )
            << r[i] << "x^" << i ;
      cout << setiosflags( ios::internal | ios::showpos ) << setw ( 5 ) << r[0] << endl;     
      crepeat = EOF;
      while (crepeat!='s' && crepeat!='S' && crepeat!='n' && crepeat!='N') {
         cout << "Vuoi ricominciare? [s/n]" ; cin >> crepeat ;
      }
   }
}


help! 8O 8O 8O 8O 8O 8O 8O 8O 8O 8O

Mi scuso in anticipo se questo può sembrare spamming, ma in realtà è disperazione! :oops:
_________________
Lizzie Borden with an axe
gave her father forty wakes
when she saw what she had done
she gave her mother forty one
Back to top
View user's profile Send private message
silian87
Advocate
Advocate


Joined: 06 Oct 2003
Posts: 2318
Location: Treviso, Italy

PostPosted: Wed Oct 29, 2003 5:17 pm    Post subject: Reply with quote

Anche se esistesse qualche programma (che io comunque ho cercato per un po' senza trovare niente), credo che sia meglio convertirlo a mano (specie per un programma così corto). Infatti con tool automatici rischi di avere un programma lento e con codice inutile. Fai come ti insegna gentoo, fai manualmente :D . Per gli array dinamici devo vedere se trovo qualche metodo, vedrò (prova a fare un array di array, mi sembra sia possibile, forse puo' servirti, spero di non aver detto una c*****a :oops: ).
_________________
Musica che ascolto: http://www.last.fm/user/silian87/

Silian87 FAQs: http://marentax.homelinux.org/~silian87/silian87-faq.txt

GTalk: silian87@gmail.com
Back to top
View user's profile Send private message
alexbr
Apprentice
Apprentice


Joined: 06 Sep 2003
Posts: 221
Location: Treviso - Italy

PostPosted: Wed Oct 29, 2003 5:51 pm    Post subject: Reply with quote

[parlo a silian on]silian, la c*****a l'hai detta :evil: . e smettila di mettere post senza motivo sul forum di gentoo perchè le cazzate ti conviene dirle per telefono o in faccia, dato che sai il mio numero e abiti a un chilometro da me.
inf: finito di scaricare slackware.[/parlo a silian on]
[parlo al pubblico on]scusate, ma mi sfogo con lui perchè sta stufando seriamente: non ha mai installato una gentoo (shev ne sa qualcosa), anche se devo ammettere che me l'ha fatta scoprire lui, e mette posts a vanvera solo per raggiungere un livello superiore di messaggi inviati. e' irritante.[/parlo al pubblico on]
scusate di nuovo ma la sfuriata ci voleva proprio!
_________________
Lizzie Borden with an axe
gave her father forty wakes
when she saw what she had done
she gave her mother forty one
Back to top
View user's profile Send private message
silian87
Advocate
Advocate


Joined: 06 Oct 2003
Posts: 2318
Location: Treviso, Italy

PostPosted: Wed Oct 29, 2003 6:34 pm    Post subject: Reply with quote

Il discorso dei messaggi è del tutto falso, per quanto ruguarda il post era una risposta vera, in fine la gentoo la metto se mi arriva il powerbook (forse domani). Hai chiuso.x(per ora). :evil:
_________________
Musica che ascolto: http://www.last.fm/user/silian87/

Silian87 FAQs: http://marentax.homelinux.org/~silian87/silian87-faq.txt

GTalk: silian87@gmail.com
Back to top
View user's profile Send private message
alexbr
Apprentice
Apprentice


Joined: 06 Sep 2003
Posts: 221
Location: Treviso - Italy

PostPosted: Wed Oct 29, 2003 6:42 pm    Post subject: Reply with quote

prova tu però a farmi un programma in c++ equvalente a quello dato in delphi! dato che ci sei fammi una telefonata che ne parliamo!
_________________
Lizzie Borden with an axe
gave her father forty wakes
when she saw what she had done
she gave her mother forty one
Back to top
View user's profile Send private message
fedeliallalinea
Administrator
Administrator


Joined: 08 Mar 2003
Posts: 30837
Location: here

PostPosted: Thu Oct 30, 2003 9:52 am    Post subject: Reply with quote

Potete calmare gli animi... in questo forum non si vogliono vedere dei post del genere (imho)...
Comunque io non tengo la parte a nessuno dei due ma quello che ha detto silian87 e' vero i tools
di conversione da un linguaggio all'altro non funzionano mai bene creano codice incasinato e basta.
_________________
Questions are guaranteed in life; Answers aren't.
Back to top
View user's profile Send private message
babalinux
Tux's lil' helper
Tux's lil' helper


Joined: 20 Aug 2003
Posts: 117

PostPosted: Thu Oct 30, 2003 10:23 am    Post subject: Reply with quote

non ho letto bene il codice... non ho molto tempo per farlo.

Ho notato pero' a primo acchitto un paio di discrepanze:

1)
Code:
for (i=agrad+1;i--;i>=0)

il costrutto "for" non e' corretto:
for (<val. iniziale>; <condizione>; <inc/dec>)

2)
Code:

      double *a = new double[agrad];
      for (i=agrad+1;i--;i>=0) {
         if (i==0) cout << "Inserisci il termine noto: ";
         else cout << "Inserisci il coefficiente di x^" << i << ": ";
         cin >> a[i];
         }



dimensioni gli array a "agrad/bgrad" e poi pretendi di salvare in (agrad+1)-esima posizione un elemento => errore "off by one"?


Poi, in generale, perche' non programmi ad oggetti? Hai a disposizione C++ e Delphi che ti permettono di farlo.
Es.:
Code:
type
   TPolinomio = class
   private
      coefficienti: array of integer;


etc.
o

Code:
class TPolinomio
{
   private
      int* coefficienti;

  etc.
};


Meglio ancora potresti pensare ad oggetti tutto il modello, inclusi i coefficienti ed il termine noto...
Ti sarebbe tutto piu' facile.

Intanto dai un'occhiata a questa prima parte del main(), che da me compila, il resto modificalo tenendo conto:

Code:
int main()
{
   double*      a;   
   char      crepeat = 's';
      int         agrad = 0,
            bgrad = 0,
            qgrad = 0,
            rgrad = 0,
            i = 0,
            c = 0;

   while (crepeat == 's' || crepeat == 'S')
   {
      cout << "Inserisci il grado del polinomio dividendo: \n";
      cin  >> agrad;
      a = new double[agrad];
      for (int i=agrad; i>=0; i--)
      {
         if (i==0)   cout << "Inserisci il termine noto: \n";
         else      cout << "Inserisci il coefficiente di x^" << i << ": \n";
         cin >> a[i];
      };

      cout << "Inserisci il grado del polinomio divisore: \n";
      cin >> bgrad;
      if (agrad<bgrad) 
      {
         cout << "Divisione impossibile";
         break;
      };
      
      double *b = new double[bgrad];
      for (i=bgrad;i>=0;i--)
      {
         if (i==0) cout << "Inserisci il termine noto: \n";
         else cout << "Inserisci il coefficiente di x^" << i << ": \n";
         cin >> b[i];
       }

      cout << "Vuoi ricominciare? [s/n]" ; cin >> crepeat;
   };

    return 0; 
};

fammi sapere se hai bisogno di aiuto.... e evitate 'sti casini.

cheers, baba
_________________
"...Funny things you learn from your mama, like the way to throw your head back when your swallowing pills..."
Back to top
View user's profile Send private message
alexbr
Apprentice
Apprentice


Joined: 06 Sep 2003
Posts: 221
Location: Treviso - Italy

PostPosted: Thu Oct 30, 2003 1:58 pm    Post subject: Reply with quote

Scusate per la sfuriata... :oops: non ho saputo trattenermi...
Abbiamo charito tutto in privato, spero vi faccia piacere. :roll:
Quote:
dimensioni gli array a "agrad/bgrad" e poi pretendi di salvare in (agrad+1)-esima posizione un elemento => errore "off by one"?

L'ho fatto perchè non ho capito bene come me li salvava... infatti se facevo
Code:
cout << agrad;
cout << bgrad;

mi dava un numero in meno di quello che avevo memorizzato.
Quote:
Poi, in generale, perche' non programmi ad oggetti? Hai a disposizione C++ e Delphi che ti permettono di farlo.

Lo farei, ma sembra un po' stupido crearsi delle classi per un programmino abbastanza semplice, non credi?
Quote:

Meglio ancora potresti pensare ad oggetti tutto il modello, inclusi i coefficienti ed il termine noto...
Ti sarebbe tutto piu' facile.

Se si tratta di inserirlo in un contesto più grande, magari di risoluzione di equazioni e disequazioni, si, si potrebbe fare.
grazie baba per la dritta e mi scuso ancora per il disagio creato.
Tento di sistemare il programma e ve lo riposto a posto!
ps. Troppo forte il logo dei GECHI, vero fedeliallaliena?
_________________
Lizzie Borden with an axe
gave her father forty wakes
when she saw what she had done
she gave her mother forty one
Back to top
View user's profile Send private message
fedeliallalinea
Administrator
Administrator


Joined: 08 Mar 2003
Posts: 30837
Location: here

PostPosted: Thu Oct 30, 2003 2:12 pm    Post subject: Reply with quote

alexbr wrote:
ps. Troppo forte il logo dei GECHI, vero fedeliallaliena?

Stupendo... :D
_________________
Questions are guaranteed in life; Answers aren't.
Back to top
View user's profile Send private message
alexbr
Apprentice
Apprentice


Joined: 06 Sep 2003
Posts: 221
Location: Treviso - Italy

PostPosted: Thu Oct 30, 2003 3:21 pm    Post subject: Reply with quote

Ho sistemato un paio di errori nel programma (lo ammetto... è da un po' di tempo che non uso il c++ e ho fatto casini con i for :oops: )
Ma quello piu' grosso e che non riesco a capire è:
quando dichiaro si blocca di brutto!

Ecco il nuovo codice:
Code:
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
   char     crepeat = 's';
   int      agrad = 0,
            bgrad = 0,
            qgrad = 0,
            rgrad = 0,
            i = 0,
            c = 0;

   while (crepeat == 's' || crepeat == 'S')
   {
      cout << "Inserisci il grado del polinomio dividendo: ";
      cin  >> agrad;
      double* a = new double[agrad];
      for (i=agrad; i>=0; i--)
      {
         if (i==0)   cout << "Inserisci il termine noto: ";
           else      cout << "Inserisci il coefficiente di x^" << i << ": ";
         cin >> a[i];
      };

      cout << "Inserisci il grado del polinomio divisore: ";
      cin >> bgrad;
      if (agrad<bgrad)
      {
         cout << "Divisione impossibile";
         break;
      };
     
      double* b = new double[bgrad];
      for (i=bgrad; i>=0; i--)
      {
         if (i==0) cout << "Inserisci il termine noto: ";
           else cout << "Inserisci il coefficiente di x^" << i << ": ";
         cin >> b[i];
       }
     
      qgrad = agrad - bgrad;
//////// Si blocca qui! ////////////////////////////////////////////////////////
      double* q = new double[qgrad];
     
      rgrad = agrad+1;
      double* r = new double[rgrad];
     
      // Copia del polinomio dividendo nel polinomio resto
      for (c=0; c < rgrad; c++) r[c] = a[c];
     
      // Calcolo del polinomio quoziente
      for (i=agrad; i>=bgrad; i--) {
         q[i-bgrad] = r[i] / b[bgrad];
         for (c=bgrad; c>=0; c--)
            r[i-bgrad+c] = r[i-bgrad+c] - q[i-bgrad] * b[c];
         }
   
      // Output
      cout << "Il polinomio dividendo inserito è:";
      for (i=agrad;i>=1;i--)
         cout << a[i] << "x^" << i ;
      cout << a[0] << endl;
      cout << "Il polinomio divisore inserito è:";
      for (i=bgrad;i>=1;i--)
         cout << b[i] << "x^" << i ;
      cout << b[0] << endl;
      cout << "Il risultato della divisione è: ";
      for (i=qgrad;i>=1;i--)
         cout << q[i] << "x^" << i ;
      cout << q[0] << endl;
      cout << "Il resto della divisione è: ";
      for (i=rgrad;i>=1;i--) if (r[i]!=0)
         cout << r[i] << "x^" << i ;
      cout << r[0] << endl;

      cout << "Vuoi ricominciare? [s/n]" ; cin >> crepeat;
   };

    return 0;
}

_________________
Lizzie Borden with an axe
gave her father forty wakes
when she saw what she had done
she gave her mother forty one
Back to top
View user's profile Send private message
silian87
Advocate
Advocate


Joined: 06 Oct 2003
Posts: 2318
Location: Treviso, Italy

PostPosted: Thu Oct 30, 2003 8:23 pm    Post subject: Reply with quote

In effetti abbiamo chiarito e riappacificati. E poi oggi mi e' arrivato il Powerbook, FINALMENTE!!!
_________________
Musica che ascolto: http://www.last.fm/user/silian87/

Silian87 FAQs: http://marentax.homelinux.org/~silian87/silian87-faq.txt

GTalk: silian87@gmail.com
Back to top
View user's profile Send private message
babalinux
Tux's lil' helper
Tux's lil' helper


Joined: 20 Aug 2003
Posts: 117

PostPosted: Fri Oct 31, 2003 10:31 am    Post subject: Reply with quote

ok, ecco la bovina traduzione del codice Pascal...

Code:
#include <iostream>
using namespace std;


int main()
{
   char     crepeat = 's';
   int      agrad = 0,
            bgrad = 0,
            qgrad = 0,
            rgrad = 0,
            i = 0,
            c = 0;

   while (crepeat == 's' || crepeat == 'S')
   {
      // baba: a e b erano sottodimensionati:
      //       devono contenere gli <grado> coefficienti + il termine noto in [0]
      //       => la dimensione e' <grado>+1;
       cout << "Inserisci il grado del polinomio dividendo: ";
      cin  >> agrad;
      double* a = new double[(agrad+1)];
      for (i=agrad; i>=0; i--)
      {
       if (i==0)   cout << "Inserisci il termine noto: ";
         else      cout << "Inserisci il coefficiente di x^" << i << ": ";
       cin >> a[i];
      };

      cout << "Inserisci il grado del polinomio divisore: ";
      cin >> bgrad;
      if (agrad<bgrad)
      {
       cout << "Divisione impossibile";
       break;
      };

      double* b = new double[(bgrad+1)];
      for (i=bgrad; i>=0; i--)
      {
       if (i==0) cout << "Inserisci il termine noto: ";
         else cout << "Inserisci il coefficiente di x^" << i << ": ";
       cin >> b[i];
      }
      
      // baba: il grado di q equivale alla differenza tra i gradi di a e b
      qgrad = (agrad-bgrad);   
      // la sua dimensione deve essere <grado>+1;
      double* q = new double[(qgrad+1)];

      // baba: vedi sopra
      rgrad = (agrad);
      double* r = new double[(rgrad+1)];

      // Copia del polinomio dividendo nel polinomio resto
      for (c=0; c <= rgrad; c++)      
        r[c] = a[c];         // baba, ecco: qui andavi in "off by one": leggendo a che era sottodimensionato...
      
      // Calcolo del polinomio quoziente
      for (i=agrad; i>=bgrad; i--)
      {
         // imposta il coefficiente del (i-bgrad)-esimo termine del quoziente
         q[i-bgrad] = r[i]/b[bgrad];
         // per ogni coefficiente calcolato, imposta il resto
         for (c=bgrad; c>=0; c--)
            r[i-bgrad+c] = r[i-bgrad+c] - q[i-bgrad] * b[c];
      };
   
      // Output
      cout << "Il polinomio dividendo inserito è:";
      for (i=agrad;i>=1;i--)
         cout << a[i] << "x^" << i ;
      cout << a[0] << endl;
      cout << "Il polinomio divisore inserito è:";
      for (i=bgrad;i>=1;i--)
         cout << b[i] << "x^" << i ;
      cout << b[0] << endl;
      cout << "Il risultato della divisione è: ";
      for (i=qgrad;i>=1;i--)
         cout << q[i] << "x^" << i ;
      cout << q[0] << endl;
      cout << "Il resto della divisione è: ";
      for (i=rgrad;i>=1;i--)
      {
         if (r[i]!=0)  cout << r[i] << "x^" << i ;
      };
      cout << r[0] << endl;

      cout << "Vuoi ricominciare? [s/n]" ; cin >> crepeat;
   };

   return (0); 
};


eseguito con delphi e Visual C++ da gli stessi risultati, a parte la formattazione dell'output.

HTH, baba
_________________
"...Funny things you learn from your mama, like the way to throw your head back when your swallowing pills..."
Back to top
View user's profile Send private message
silian87
Advocate
Advocate


Joined: 06 Oct 2003
Posts: 2318
Location: Treviso, Italy

PostPosted: Fri Oct 31, 2003 11:04 am    Post subject: Reply with quote

grazie mille per la traduzione :lol:
_________________
Musica che ascolto: http://www.last.fm/user/silian87/

Silian87 FAQs: http://marentax.homelinux.org/~silian87/silian87-faq.txt

GTalk: silian87@gmail.com
Back to top
View user's profile Send private message
alexbr
Apprentice
Apprentice


Joined: 06 Sep 2003
Posts: 221
Location: Treviso - Italy

PostPosted: Fri Oct 31, 2003 1:13 pm    Post subject: Reply with quote

Grazie mille baba!!! :wink: :wink: :wink:
Era un programma che avevo fatto l'anno scorso in delphi per la prof. di mate (che alla fine mi ha dato la sufficienza anche se ero un po' sotto :oops: , vergognoso ma efficiente! :wink: )
Il problema era portarlo per i mac dei miei cari amici(vedi sopra)... e magari per qualche altra piattaforma!
A desso che il risultato è stato ottenuto (non smetterò mai di ringraziarti babalinux!) sì, penso proprio che il programma si possa evolvere in qualcosa di più complesso!
Sto già creando le classi per i polinomi...
Se faccio qualcosa di buono vi dico, non si sa mai, a qualcuno potrebbe interessare 8) )
_________________
Lizzie Borden with an axe
gave her father forty wakes
when she saw what she had done
she gave her mother forty one
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum