Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    1

    [PASCAL] invalid floating point operation

    Prima di tutto vi saluto tutti perchè è la prima volta che posto qui :gren:
    Ora il problema...
    Ho scritto questo programmino in pascal, ma ad un certo punto mi da errore di virgola mobile...
    Potreste guardare cosa c'è che non va plz???
    Domani il prof. lo valuta e a me ancora non funge.
    Plz help me!!
    Thx

    ---------------------------------------------------------------------
    program disequa;
    var a,b,c,del,x1,x2:real;
    dis:integer;
    begin
    writeln('Tipo di disequazione');
    writeln('1 - [>0] 2 - [<0] 3 - [>=0] 4 - [<=0]');
    readln(dis);
    writeln('Quanto vale a?');
    readln(a);
    writeln('Quanto vale b?');
    readln(b);
    writeln('Quanto vale c?');
    readln(c);
    del:=b*b-4*a*c;
    x1:=(-b-sqrt(del))/(2*a);
    x2:=(-b+sqrt(del))/(2*a);
    writeln('La disequazione e'' verificata da:');
    if ((dis=1) and (a>0)) or ((dis=2) and (a<0)) then
    begin
    if del>0 then writeln('valori esterni a ',x1:3:2,' e ',x2:3:2);
    if del=0 then writeln('tutti gli x in R eccetto ',x1:3:2);
    if del<0 then writeln('tutti gli x in R');
    end;
    if ((dis=2) and (a>0)) or ((dis=1) and (a<0)) then
    begin
    if del>0 then writeln('valori interni a ',x1:3:2,' e ',x2:3:2);
    if del=0 then writeln('nessun x in R');
    if del<0 then writeln('nessun x in R');
    end;
    if ((dis=3) and (a>0)) or ((dis=4) and (a<0)) then
    begin
    if del>0 then writeln('valori esterni a ',x1:3:2,' e ',x2:3:2,' più ',x1:3:2,' e ',x2:3:2);
    if del=0 then writeln('tutti gli x in R');
    if del<0 then writeln('tutti gli x in R');
    end;
    if ((dis=4) and (a>0)) or ((dis=3) and (a<0)) then
    begin
    if del>0 then writeln('valori interni a ',x1:3:2,' e ',x2:3:2,' più ',x1:3:2,' e ',x2:3:2);
    if del=0 then writeln('solo per x=',x1:3:2);
    if del<0 then writeln('nessun x in R');
    end;
    readln
    end.

    ---------------------------------------------------------------------
    lo so che qui è spaginato, ma plz ho veramente bisogno d'aiuto

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ci sono 2 casi di errore: quando a = 0 (tenti di dividere per 2a) e quando il determinante è minore di 0.

    Devi controllare che a sia diverso da 0 prima di poter effettuare una divisione e distinguere i vari casi per il determinante (che è ciò che ti porta l'errore in virgola mobile!).

    Ti vengono almeno 12 casi per il determinante (3 per ognuna delle possibilità che hai dato all'utente), poi devi anche controllare il caso di a=0 prima di effettuare la divisione.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.