• T4CH
  • NEWS
  • VIDEO
Forum > Software

Aiuto urgente pascal!!

Discussione inserita in 'Software' da aleborto, 23 Marzo 2009.

  1. aleborto techNewbie

    Aiuto urgente pascal!!

    Mi rendo conto che è un linguaggio un pò arcaico, ma ormai è diventata questione di vita o di morte... Qualcuno mi sa dire perchè il seguente codice mi si blocca ad un certo punto?? Vi spiego meglio (parole in grassetto)...



    program equazione;

    uses crt;

    var a,b,c,delt,sola,solb: real;

    o: char;



    begin

    clrscr;

    textcolor(2);

    writeln;

    writeln('Soluzione di un equazione di secondo grado.');

    writeln;



    gotoXY(6,4);

    readln(a);

    gotoXY(9,4);

    writeln('xý + ');

    gotoXY(14,4);

    readln(b);

    gotoXY(17,4);

    writeln('x + ');

    gotoXY(21,4);

    readln(c);

    gotoXY(23,4);

    writeln(' = 0');

    delt:=sqr(b)-4*a*c;



    if delt<0 then

    begin

    writeln;

    writeln('Il delta dell''equazione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š negativo,');

    writeln('l''equazione Š impossibile.');

    writeln;

    end

    else

    begin

    writeln;

    if delt>0 then

    begin

    writeln('Il delta dell''equazione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š positivo e diverso da zero,');

    writeln('abbiamo due soluzioni distinte.');

    writeln;

    end

    else

    begin

    writeln('Il delta dell''equzione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š uguale a 0,');

    writeln('le due soluzioni sono coincidenti.');

    writeln;

    end;

    end;



    if (delt>0) or (delt=0) then

    begin

    write('Si desidera continuare con la risoluzione dell''equazione? (y/n) ');

    read(o);

    writeln;

    end

    else

    begin

    readln;

    halt;

    end;





    IN QUESTO PUNTO IL PROGRAMMA MI SI BLOCCA, E TERMINA QUA, QUASI COME SE LA FUNZIONE HALT NON FOSSE SOTTO UN IF CHE SI VERIFICA SOLO IN ALCUNI CASI... BO... COSA MI DITE?? :eek:o:





    if o='y' then

    begin

    if delt=0 then

    begin

    sola:=-b/2*a;

    writeln('Le soluzioni Xû e Xý sono uguali a ',sola,'.');

    writeln;

    end

    else

    begin

    sola:=(-b+sqrt(delt))/2*a;

    solb:=(-b-sqrt(delt))/2*a;

    writeln('La soluzione Xû Š ',sola,'.');

    writeln('La soluzione Xý Š ',solb,'.');

    writeln;

    end;

    end

    else halt;



    readln

    end.







    aleborto, 23 Marzo 2009
    #1
  2. Nino techNewbie

    Ma scusa, hai messo due volte delta > 0...Penso di avere intuito cosa vuoi fare...io in questo caso farei un'altra cosa...



    if delt<0 then

    begin

    writeln;

    writeln('Il delta dell''equazione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š negativo,');

    writeln('l''equazione Š impossibile.');

    writeln;

    end

    else

    begin

    writeln;

    if delt>0 then

    begin

    writeln('Il delta dell''equazione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š positivo e diverso da zero,');

    writeln('abbiamo due soluzioni distinte.');

    writeln;

    end

    else

    begin

    writeln('Il delta dell''equzione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š uguale a 0,');

    writeln('le due soluzioni sono coincidenti.');

    writeln;

    end;

    end;



    if (delt>0) or (delt=0) then

    begin

    write('Si desidera continuare con la risoluzione dell''equazione? (y/n) ');

    read(o);

    writeln;

    end

    else

    begin

    readln;

    halt;

    end;

    if delt<0 then

    begin

    writeln;

    writeln('Il delta dell''equazione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š negativo,');

    writeln('l''equazione Š impossibile.');

    writeln;

    end

    else

    begin

    writeln;

    if delt>0 then

    begin

    writeln('Il delta dell''equazione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š positivo e diverso da zero,');

    writeln('abbiamo due soluzioni distinte.');

    writeln;

    end

    else

    begin

    writeln('Il delta dell''equzione Š uguale a ',delt:0:0,'.');

    writeln('Dato che il suo valore Š uguale a 0,');

    writeln('le due soluzioni sono coincidenti.');

    writeln;

    end;

    end;



    delta = b*b-4*a*c; // Scusami per la sintassi non so il pascal però l'idea è questa



    if (delta>0) or (delta=0) then

    begin

    write('Si desidera continuare con la risoluzione dell''equazione? (y/n) ');

    read(o);

    writeln;

    end

    else

    begin

    readln;

    halt;

    end;
    Nino, 23 Marzo 2009
    #2
Password dimenticata?
SU TERMINI DI SERVIZIO CONTATTACI