• T4CH
  • NEWS
  • VIDEO
Forum > Software

Ho un problema con la radice quadrata in Pascal

Discussione inserita in 'Software' da FECT, 18 Giugno 2009.

Pagina 1 di 2
1 2 Avanti >
  1. FECT techNewbie

    Ho un problema con la radice quadrata in Pascal

    Mi potete aiutare? Mi servirebbe sapere una cosa. Sto provando a programmare in Pascal un risolutore di equazioni di secondo grado (ormai è una questione di orgoglio, lo devo finire!), ma mi manca una cosa. Dato che, come tutti voi certamente saprete, bisogna eseguire una radice quadrata, qual'è la sintassi giusta per dichiarare che, per esempio, x è la radice quadrata di y? So solo che l'operatore è sqrt. Mi aiutate? grazie.
    FECT, 18 Giugno 2009
    #1
  2. Nino techNewbie

    x := sqrt(y)
    Nino, 18 Giugno 2009
    #2
  3. FECT techNewbie

    Adesso che l'ho scritto così, mi dà un altro errore:



    Error: Incompatible types: got "S80REAL" expected "LONGINT"



    Me lo ha sempre dato quando cerco di mettere il calcolo di una radice quadrata, ma non ho mai capito cos'è. Infatti ora la domanda è: cos'è e come si risolve questo errore?
    FECT, 18 Giugno 2009
    #3
  4. Nino techNewbie

    Di che tipo sono le variabili x e y?
    Nino, 18 Giugno 2009
    #4
  5. FECT techNewbie

    Nel risolutore le variabili le ho chiamate j e f, j è la radice e f è il numero da cui deve essere estratta. J è dichiarata come longint e f come integer. Con il mio inglese didattico sono riuscito tranquillamente a capire che là ci doveva essere una variabile di tipo longint, solo che effettivamente c'è ma l'errore mi è dato lo stesso. In sostanza, ora la cosa è così:

    j:=sqrt(f);

    Come devo fare?
    FECT, 18 Giugno 2009
    #5
  6. Nino techNewbie

    mettili real e vedrai che funziona.
    Nino, 18 Giugno 2009
    #6
  7. FECT techNewbie

    Ok allora provo a mettere entrambe le variabili come real
    FECT, 19 Giugno 2009
    #7
  8. FECT techNewbie

    Ho provato a dichiarare entrambe come real ma mi ha dato un altro errore sempre dello stesso tipo, ma per un'altra operazione. nel dubbio, ho provato a dichiarare come real tutte le variabili, ma ha continuato a darmi errori. Che devo fare?
    FECT, 19 Giugno 2009
    #8
  9. Nino techNewbie

    posta tutto il codice sorgente.
    Nino, 19 Giugno 2009
    #9
  10. FECT techNewbie

    Il codice è questo



    program Untitled;

    uses crt;

    var a,b,c,d,e,g,k,l,m,n,h:integer;

    var f,j:real;



    begin

    clrscr;

    writeln('Lo schema e'' ax^2+bx+c=0');

    write('Inserire il coefficiente di x^2: ');

    readln(a);

    write('Inserire il coefficiente di x: ');

    readln(b);

    write('Inserire il termine noto: ');

    readln(c);

    d:=b*b;

    e:=4*a*c;

    f:=d-e;

    g:=-1*b;

    h:=2*a;

    j:=sqrt(f);

    k:=g+j;

    l:=g-j;

    m:=k div h;

    n:=l div h;

    writeln('Le due soluzioni sono ',m,' e ',n,');

    readln;

    end.
    FECT, 20 Giugno 2009
    #10
  11. Nino techNewbie

    Perchè complicarsi la vita per niente? asd



        /**
         * SyntaxHighlighter
         */
        function foo()
        {
            if (counter <= 10)
                return;
            // it works!
        }
    




    così al 90% dovrebbe funzionare, salvo errori come ";" che puoi correggere tu...
    Nino, 20 Giugno 2009
    #11
  12. FECT techNewbie

    Avevo pensato a farlo così ma non l'avevo trovato una buona soluzione, anche se forse è migliore di quella che ho pensato io dichiarando un mare di variabili. Comunque proverò e ti farò sapere.
    FECT, 20 Giugno 2009
    #12
  13. FECT techNewbie

    Ebbene non ha funzionato nemmeno così. Il compilatore non mi da più errori, ma il risultato è sempre 0.
    FECT, 21 Giugno 2009
    #13
  14. Nino techNewbie

    Cioè? Spiegati per favore, cosa è 0?
    Nino, 21 Giugno 2009
    #14
  15. FECT techNewbie

    Le soluzioni sono sempre uguali a 0. Forse è meglio se mi dici come si può risolvere il problema che avevo quando scrivevo il programma con il metodo che usavo io.
    FECT, 21 Giugno 2009
    #15
  16. Nino techNewbie

    Puoi allegare l'eseguibile che hai compilato?
    Nino, 21 Giugno 2009
    #16
  17. FECT techNewbie

    Ho fatto le dovute modifiche perchè altrimenti non sarebbe partito. Ho trovato anche un altro errore, e ora che l'ho corretto i risultati non vengono più sempre uguali a 0. Però, in compenso, vengono sempre uguali tra sè stessi.

    Attached Files:

    • Project 1.exe
      Project 1.exe
      File size:
      0,0 bytes
      Visite:
      18
    FECT, 21 Giugno 2009
    #17
  18. Nino techNewbie

    Quello che ti faccio fare ora è debug fatto in casa...asd

    dopo la riga:



    delta:= b*b-4*a*c;



    Metti:



    writeln('Delta = ", delta);
    Nino, 21 Giugno 2009
    #18
  19. Nino techNewbie

    Vediamo quanto ti restituisce come valore quella riga...

    Per logica dovrebbe essere "0"
    Nino, 21 Giugno 2009
    #19
  20. FECT techNewbie

    Ora vedo
    FECT, 21 Giugno 2009
    #20
Pagina 1 di 2
1 2 Avanti >
Password dimenticata?
SU TERMINI DI SERVIZIO CONTATTACI