Help. Where is my error?

Discussion in 'C Programming' started by Red Dragon, Oct 17, 2005.

  1. Red Dragon

    Red Dragon Guest

    I am self study C student. I got stuck in the program below on quadratic equation and will be most grateful if someone could help me to unravel the mystery.
    Why does the computer refuse to execute my scanf ("%c",&q);
    On input 3 4 1 (for a,b and c) I had real roots OK
    On input 1 8 16 I had same real roots OK.

    However on 4 2 5, (for imaginary roots ) the computer cannot see the scanf ("%c",&q); statement. It just jumps over it.
    How can I make the computer not to ignore this statement? I am on Visual C++ platform.
    Thanks
    Khoon.

    /* Roots of a Quadratic Equation.
    12.10.05 */

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main (void)

    {
    int a; int b; int c; float x1; float x2; int E; int E1; float R; float I;float S;
    char p; char q; char y;

    printf ("Please key in the value of constant a,b and c for finding the roots of quadratic");
    printf ("equation ax%c+bx+c=0 :",253);
    scanf ("%d%d%d", &a,&b,&c);

    E =(b*b)-(4*a*c);

    if ( E > 0)
    {
    x1 = (float)(-b+sqrt(E))/(2*a);
    x2 = (float)(-b-sqrt(E))/(2*a);

    printf ("\nYour quadratic equation has two distinct real roots: x1=%1.6f ,x2=%1.6f",x1,x2);
    }



    else if (E == 0)
    {

    x1 = (float)(-b+sqrt(E))/(2*a);

    printf ("\nYour quadratic equation has two same: x1=x2=%1.6f\n",x1);
    }

    else
    {

    p = 'y';

    printf ("Your quadratic equation has two distinct imaginary roots. Do you want to know\n");
    printf ("the values of the imaginary roots (Y/N)?");

    scanf ("%c",&q);

    printf ("\nq = %c\n",q);/* Test statement*/

    if (p==q)
    printf ("OK I will show your the imaginary roots tomorrow.\n");

    else
    printf ("Good bye\n");

    return 0;

    }
    }
     
    Red Dragon, Oct 17, 2005
    #1
    1. Advertising

  2. Red Dragon

    Geoff Turner Guest

    "Red Dragon" <> wrote in message
    >news:...
    >I am self study C student. I got stuck in the program below on quadratic

    equation and will be >most grateful if someone could help me to unravel the
    mystery.
    >Why does the computer refuse to execute my scanf ("%c",&q);
    >On input 3 4 1 (for a,b and c) I had real roots OK
    >On input 1 8 16 I had same real roots OK.


    >However on 4 2 5, (for imaginary roots ) the computer cannot see the

    scanf ("%c",&q); >statement. It just jumps over it.
    >How can I make the computer not to ignore this statement? I am on Visual

    C++ platform.
    >Thanks
    >Khoon.


    >/* Roots of a Quadratic Equation.
    > 12.10.05 */


    >#include <stdio.h>
    >#include <stdlib.h>
    >#include <math.h>


    >int main (void)


    >{
    >int a; int b; int c; float x1; float x2; int E; int E1; float R; float

    I;float S;
    >char p; char q; char y;


    >printf ("Please key in the value of constant a,b and c for finding the

    roots of quadratic");
    > printf ("equation ax%c+bx+c=0 :",253);
    >scanf ("%d%d%d", &a,&b,&c);


    > E =(b*b)-(4*a*c);


    > if ( E > 0)
    > {
    > x1 = (float)(-b+sqrt(E))/(2*a);
    > x2 = (float)(-b-sqrt(E))/(2*a);


    > printf ("\nYour quadratic equation has two distinct real roots: x1=%1.6f

    ,x2=%1.6f",x1,x2);
    > }


    > else if (E == 0)
    > {


    > x1 = (float)(-b+sqrt(E))/(2*a);


    > printf ("\nYour quadratic equation has two same: x1=x2=%1.6f\n",x1);
    > }


    > else
    > {


    > p = 'y';


    > printf ("Your quadratic equation has two distinct imaginary roots. Do

    you want to know\n");
    > printf ("the values of the imaginary roots (Y/N)?");


    /********************************************************
    fflush (stdin );
    /********************************************************
    > scanf ("%c",&q);


    > printf ("\nq = %c\n",q);/* Test statement*/

    /snip>
     
    Geoff Turner, Oct 17, 2005
    #2
    1. Advertising

  3. In article <dj0cbe$nc$>,
    Geoff Turner <> wrote:

    > fflush (stdin );


    No! fflush() has no defined behaviour on an input stream!!

    --
    I am spammed, therefore I am.
     
    Walter Roberson, Oct 17, 2005
    #3
  4. In article <>,
    Red Dragon <> wrote:
    >I am self study C student. I got stuck in the program below on
    >quadratic equation and will be most grateful if someone could help me to
    >unravel the mystery.
    >Why does the computer refuse to execute my scanf ("%c",&q);


    We go through this about every second day, and it is surely
    in the FAQ.

    My explanation of a week ago can be found at
    http://groups.google.ca/group/comp.lang.c/msg/3f65f0744a89f300

    --
    Is there any thing whereof it may be said, See, this is new? It hath
    been already of old time, which was before us. -- Ecclesiastes
     
    Walter Roberson, Oct 17, 2005
    #4
  5. Red Dragon

    Michael Mair Guest

    Red Dragon wrote:
    > I am self study C student. I got stuck in the program below on
    > quadratic equation and will be most grateful if someone could help me to
    > unravel the mystery.
    > Why does the computer refuse to execute my * scanf ("%c",&q); *
    > On input 3 4 1 (for a,b and c) I had real roots OK
    > On input 1 8 16 I had same real roots OK.
    >
    > However on 4 2 5, (for imaginary roots ) the computer cannot see the
    > *scanf ("%c",&q);* statement. It just jumps over it.
    > How can I make the computer not to ignore this statement? I am on
    > Visual C++ platform.
    > Thanks
    > Khoon.

    <snip!>

    You have been repeatedly asked not to post using HTML.
    Please stop it. This is usenet, not some mailing list or forum.

    Read the FAQ on input using scanf() -- it is not advisable.
    At all.

    Apart from that: You did not look at the return value of scanf()
    so how do you know what happened? You also seem not to have used
    the debugger which comes with your IDE.

    -Michael
    --
    E-Mail: Mine is an /at/ gmx /dot/ de address.
     
    Michael Mair, Oct 17, 2005
    #5
  6. "Red Dragon" <> writes:
    > I am self study C student. I got stuck in the program below on quadratic
    > equation and will be most grateful if someone could help me to unravel the
    > mystery.
    > Why does the computer refuse to execute my scanf ("%c",&q);


    It doesn't. Your call to scanf("%c", &q) is doing exactly what it's
    supposed to do.

    To find out what it's supposed to do, read the documentation for
    scanf().

    You're almost certainly better off using a different method to read
    input. A common technique is to use fgets() to read a line at a time,
    then use sscanf() to parse the string. (This can have its own
    drawbacks; fgets() either leaves the newline character in the input
    string, or truncates the line if it's too long.)

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
    We must do something. This is something. Therefore, we must do this.
     
    Keith Thompson, Oct 17, 2005
    #6
  7. Red Dragon

    Old Wolf Guest

    Re: Help. Where is my error?

    Red Dragon wrote:
    > I am self study C student. I got stuck in the program below on
    > quadratic equation and will be most grateful if someone could help
    > me to unravel the mystery.
    > Why does the computer refuse to execute my scanf ("%c",&q);


    You posted this program a couple of weeks ago and got lots
    of advice. But you seem to have ignored most of this advice.
    Here it is again:

    1) x1, x2, R, I, S should be "double", not "float"
    2) You MUST check the return value of scanf() and take appropriate
    action if it is wrong
    3) Don't do any casting (eg. in the line "x1 = (float)FOO")
    4) The "return 0" goes AFTER the "else" block, not inside it.

    Hint: If you printf the result of your scanf("%c") using
    %d, you might understand what is going on.
     
    Old Wolf, Oct 17, 2005
    #7
  8. Red Dragon

    Red Dragon Guest

    > We go through this about every second day, and it is surely
    > in the FAQ.
    >
    > My explanation of a week ago can be found at
    > http://groups.google.ca/group/comp.lang.c/msg/3f65f0744a89f300
    >
    > --
    >Quote from Google: Is there any thing whereof it may be said, See, this is new? It hath

    scanf() with a %c format element reads *exactly* one character. You
    are entering two characters, the input you want and the newline to
    terminate the line. Thus after the first scanf(), you still have
    a character in the input buffer waiting to be read by the second
    scanf().

    Dear Walter,
    Yes Mr. Walter. This is the exact problem I am having. I dont quite understand the phrase "newline to terminate the line". What is it? It is the "\n" thing? Or a "space"? Can you explain what is the "newline to terminate the line"? How shall I solve the problem? I can use two scanf() line and it will solve the problem. The first scanf() reads the "newline..." and the second scanf() will read my input. Is this the normal way to solve the problem? What is the proper way? Sorry for asking you so many questions.
    Thank you.
    Khoon.
     
    Red Dragon, Oct 18, 2005
    #8
  9. Red Dragon

    Red Dragon Guest

    >
    > You have been repeatedly asked not to post using HTML.
    > Please stop it. This is usenet, not some mailing list or forum.
    >
    > Read the FAQ on input using scanf() -- it is not advisable.
    > At all.
    >
    > Apart from that: You did not look at the return value of scanf()
    > so how do you know what happened? You also seem not to have used
    > the debugger which comes with your IDE.
    >
    > -Michael
    > --
    > E-Mail: Mine is an /at/ gmx /dot/ de address.


    Mr. Michael,
    I wish to apologize for causing you problem. I did not know I was causing a
    problem.
    1. The dont understand the HTML thing. I did not use HTML. What I did was
    to copy from my Visual C++ platform and paste on the Outlook Express
    screen. With Mr. Skarmander's instruction, I have set the radio button to
    "Plain Text" on the Send Tab and thought the problem is solved. I have
    actually sent a copy of the outgoing mail to myself and I dont see any HTML
    thing on my screen on the returned copy. So I dont know what else to do.

    2. Yes. I tried to look at the return value of scanf() but got nothing
    because the computer skipped it . As I just found out, it actually read
    the "newline" (I dont know what it is ) so it registered nothing, creating
    the problem in question.

    3. What is debugger and IDE.? Hope you can bear with me because I am new
    to all this and am doing self study. I have nobody else to ask.

    Thank you and sorry again.
    Khoon.
     
    Red Dragon, Oct 18, 2005
    #9
  10. Red Dragon

    Red Dragon Guest

    "Keith Thompson" <> wrote in message news:...
    > "Red Dragon" <> writes:
    >> I am self study C student. I got stuck in the program below on quadratic
    >> equation and will be most grateful if someone could help me to unravel the
    >> mystery.
    >> Why does the computer refuse to execute my scanf ("%c",&q);

    >
    > It doesn't. Your call to scanf("%c", &q) is doing exactly what it's
    > supposed to do.
    >
    > To find out what it's supposed to do, read the documentation for
    > scanf().

    I have read the documentation in the Google as recommended by Walter. I understand now what has happened. On program running, my scanf() read the "newline" instruction in the buffer and jumped to the next statement. So I dont have a chance to make an input. To solve the problem, I can put in 2 scanf()s. But is this the correct way?
    Rgds,
    Khoon.

    > You're almost certainly better off using a different method to read
    > input. A common technique is to use fgets() to read a line at a time,
    > then use sscanf() to parse the string. (This can have its ow
    > drawbacks; fgets() either leaves the newline character in the input
    > string, or truncates the line if it's too long.)
     
    Red Dragon, Oct 18, 2005
    #10
  11. Red Dragon

    Red Dragon Guest

    Re: Help. Where is my error?

    "Old Wolf" <> wrote in message news:...
    > Red Dragon wrote:
    >> I am self study C student. I got stuck in the program below on
    >> quadratic equation and will be most grateful if someone could help
    >> me to unravel the mystery.
    >> Why does the computer refuse to execute my scanf ("%c",&q);

    >
    > You posted this program a couple of weeks ago and got lots
    > of advice. But you seem to have ignored most of this advice.
    > Here it is again:


    > 1) x1, x2, R, I, S should be "double", not "float"


    Thank you for your help and I very much appreciate it. I am doing the exercise in my book and since precision is not an issue here, I have put it on lower priority. But as you rightly point out. I will adopt it as I will be dealing with big figures.

    > 2) You MUST check the return value of scanf() and take appropriate
    > action if it is wrong


    I was doing this. That is why I call it "test statement".

    > 3) Don't do any casting (eg. in the line "x1 = (float)FOO")
    > 4) The "return 0" goes AFTER the "else" block, not inside it.


    Thanks
    Khoon.
     
    Red Dragon, Oct 18, 2005
    #11
  12. Red Dragon

    pete Guest

    Re: Help. Where is my error?

    Red Dragon wrote:
    >
    >
    > "Old Wolf" <> wrote in message
    > news:...


    > > You posted this program a couple of weeks ago and got lots
    > > of advice. But you seem to have ignored most of this advice.
    > > Here it is again:
    > > 1) x1, x2, R, I, S should be "double", not "float"

    >
    > Thank you for your help and I very much appreciate it. I am doing the
    > exercise in my book and since precision is not an issue here, I have
    > put it on lower priority. But as you rightly point out. I will
    > adopt it as I will be dealing with big figures.


    What are you waiting for?
    Unless you have an array of them,
    small arithmetic types like float, short, and char,
    which often get quietly converted to larger types,
    are very probably a poor choice.


    > > 2) You MUST check the return value of scanf() and take appropriate
    > > action if it is wrong

    >
    > I was doing this. That is why I call it "test statement".


    int rc;

    rc = scanf("%c", &q);
    printf("scanf returned a value of %d\n", rc); /* Test statement*/

    --
    pete
     
    pete, Oct 18, 2005
    #12
  13. Red Dragon

    Red Dragon Guest

    Re: Help. Where is my error?

    I have got all the results by using 2 scanf(). One is a dummy. I am also using double instead of float.
    Below are the results. I am copying and paste from Notepad, so I hope I dont have HTML problem.
    Regards,
    Khoon


    /* Roots of a Quadratic Equation.
    12.10.05 */

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main (void)

    {
    int a; int b; int c; double x1; double x2; double E; int E1; double R; double I;double S;
    char q; char Y;

    printf ("Please key in the value of constant a,b and c for finding the roots of quadratic");
    printf ("equation ax%c+bx+c=0 :",253);
    scanf ("%d%d%d", &a,&b,&c);

    E =(b*b)-(4*a*c);

    if ( E > 0)
    {
    x1 = (float)(-b+sqrt(E))/(2*a);
    x2 = (float)(-b-sqrt(E))/(2*a);

    printf ("\nYour quadratic equation has two distinct real roots: x1=%1.6f ,x2=%1.6f",x1,x2);
    }

    else if (E == 0)
    {

    x1 = (float)(-b+sqrt(E))/(2*a);

    printf ("\nYour quadratic equation has two same: x1=x2=%1.6f\n",x1);
    }

    else

    {

    printf ("Your quadratic equation has two distinct imaginary roots. Do you want to know");
    printf ("\nthe values of the imaginary roots (Y/N)?");

    scanf ("%c",&q); /* Dummy. The computer jumps this scanf() */

    scanf ("%c",&q);

    printf ("q = %c\n",q); /* Test statement*/

    if ('Y'==q)
    {
    R = (float)-b/(2*a);
    S=abs(E);
    S=sqrt(S);
    I = S/(2*a);
    printf ("\nThe imaginary roots are:\n");
    printf (" x1=%1.6f + %1.6fi , x2=%1.6f - %1.6fi\n",R,I,R,I);
    }
    else
    printf ("Thank you for using this computer\n");
    }
    return 0;
    }

    /* RESULT
    Please key in the value of constant a,b and c for finding the roots of quadratic
    equation ax²+bx+c=0 :3 4 1

    Your quadratic equation has two distinct real roots: x1=-0.333333 ,x2=-1.000000
    Press any key to continue */

    /*Please key in the value of constant a,b and c for finding the roots of quadratic
    equation ax²+bx+c=0 :1 8 16

    Your quadratic equation has two same: x1=x2=-4.000000
    Press any key to continue */

    /*Please key in the value of constant a,b and c for finding the roots of quadrati
    equation ax²+bx+c=0 :4 2 5
    Your quadratic equation has two distinct imaginary roots. Do you want to know
    the values of the imaginary roots (Y/N)?Y
    q = Y

    The imaginary roots are:
    x1=-0.250000 + 1.089725i , x2=-0.250000 - 1.089725i
    Press any key to continue*/

    /*Please key in the value of constant a,b and c for finding the roots of quadratic
    equation ax²+bx+c=0 :4 2 5
    Your quadratic equation has two distinct imaginary roots. Do you want to know
    the values of the imaginary roots (Y/N)?N
    q = N
    Thank you for using this computer
    Press any key to continue*/
     
    Red Dragon, Oct 18, 2005
    #13
  14. Red Dragon <> wrote:

    > 1. The dont understand the HTML thing. I did not use HTML. What I did was
    > to copy from my Visual C++ platform and paste on the Outlook Express
    > screen. With Mr. Skarmander's instruction, I have set the radio button to
    > "Plain Text" on the Send Tab and thought the problem is solved. I have
    > actually sent a copy of the outgoing mail to myself and I dont see any HTML
    > thing on my screen on the returned copy. So I dont know what else to do.


    Well, whatever you've done worked for this post, at least - we'll let
    you know if the problem occurs again.

    --
    Christopher Benson-Manica | I *should* know what I'm talking about - if I
    ataru(at)cyberspace.org | don't, I need to know. Flames welcome.
     
    Christopher Benson-Manica, Oct 18, 2005
    #14
  15. Red Dragon

    Red Dragon Guest

    Re: Help. Where is my error?

    > What are you waiting for?
    > Unless you have an array of them,
    > small arithmetic types like float, short, and char,
    > which often get quietly converted to larger types,
    > are very probably a poor choice.
    >
    >
    >> > 2) You MUST check the return value of scanf() and take appropriate
    >> > action if it is wrong

    >>
    >> I was doing this. That is why I call it "test statement".

    >
    > int rc;
    >
    > rc = scanf("%c", &q);
    > printf("scanf returned a value of %d\n", rc); /* Test statement*/
    >
    > --
    > pete


    Hi Pete,
    I have already been using double.
    As for the test, I find that for all inputs of q, "rc" registers 1.
    So what is it suppose to test? What does it suppose to show?
    I cannot see how to make use of it because everything I do, "scanf returned
    a value of 1".
    Thanks
    Khoon.
     
    Red Dragon, Oct 18, 2005
    #15
  16. Red Dragon

    Red Dragon Guest

    > Well, whatever you've done worked for this post, at least - we'll let
    > you know if the problem occurs again.


    This post of course works because I dont have any C- program loaded on it.
    I have yet to see when I paste a C-program on it, what will be its
    outcome.

    Now I paste from Notepad and not directly from Visual C++ platform.
    Please let me know if the problem occurs again.
    Thanks
    Khoon.
     
    Red Dragon, Oct 18, 2005
    #16
  17. Red Dragon

    Tim Rentsch Guest

    "Red Dragon" <> writes:

    > >
    > > You have been repeatedly asked not to post using HTML.
    > > Please stop it. This is usenet, not some mailing list or forum.

    [snip]
    >
    > Mr. Michael,
    > I wish to apologize for causing you problem. I did not know I was causing a
    > problem.
    > 1. The dont understand the HTML thing. I did not use HTML. What I did was
    > to copy from my Visual C++ platform and paste on the Outlook Express
    > screen. With Mr. Skarmander's instruction, I have set the radio button to
    > "Plain Text" on the Send Tab and thought the problem is solved. I have
    > actually sent a copy of the outgoing mail to myself and I dont see any HTML
    > thing on my screen on the returned copy. So I dont know what else to do.


    I suggest trying a mail tool other than Microsoft Outlook Express.
    Microsoft mail software is well known for behaving in ways that
    can cause problems like this.

    Probably what you're using to read news hides the HTML-ness
    of what you're posting. FYI, here is what gets transmitted
    (each line has '>->-> ' at the beginning). I expect you can
    see why other people don't like reading postings like this.


    >->-> From: "Red Dragon" <>
    >->-> Subject: Re: Help. Where is my error?
    >->-> Newsgroups: comp.lang.c
    >->-> Date: Tue, 18 Oct 2005 20:43:20 +0800
    >->-> Organization: TMnet Malaysia

    References: <> <> <4354e645$>
    Lines: 281
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_000E_01C5D424.94159240"
    X-Newsreader: Microsoft Outlook Express 6.00.2900.2180
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
    NNTP-Posting-Host: 218.111.62.120
    X-Original-NNTP-Posting-Host: 218.111.62.120
    Message-ID: <>
    X-Trace: news.tm.net.my 1129639409 218.111.62.120 (18 Oct 2005 20:43:29 +0800)
    Path: nntp-server.caltech.edu!hammer.uoregon.edu!news.glorb.com!news-feed01.roc.ny.frontiernet.net!nntp.frontiernet.net!uunet!spool.news.uu.net!ash.uu.net!news1.tm.net.my!not-for-mail
    Xref: nntp-server.caltech.edu comp.lang.c:761878
    >->->
    >->-> This is a multi-part message in MIME format.
    >->->
    >->-> ------=_NextPart_000_000E_01C5D424.94159240
    >->-> Content-Type: text/plain;
    >->-> charset="iso-8859-1"
    >->-> Content-Transfer-Encoding: quoted-printable
    >->->
    >->-> I have got all the results by using 2 scanf(). One is a dummy. I am =
    >->-> also using double instead of float.=20
    >->-> Below are the results. I am copying and paste from Notepad, so I hope =
    >->-> I dont have HTML problem.=20
    >->-> Regards,
    >->-> Khoon
    >->->
    >->->
    >->-> /* Roots of a Quadratic Equation.
    >->-> 12.10.05 */
    >->->
    >->-> #include <stdio.h>
    >->-> #include <stdlib.h>
    >->-> #include <math.h>
    >->->
    >->-> int main (void)
    >->->
    >->-> {
    >->-> int a; int b; int c; double x1; double x2; double E; int E1; double R; =
    >->-> double I;double S;
    >->-> char q; char Y;
    >->->
    >->-> printf ("Please key in the value of constant a,b and c for finding the =
    >->-> roots of quadratic");
    >->-> printf ("equation ax%c+bx+c=3D0 :",253);
    >->-> scanf ("%d%d%d", &a,&b,&c);
    >->-> =20
    >->-> E =3D(b*b)-(4*a*c);
    >->-> =20
    >->-> if ( E > 0)=20
    >->-> { =20
    >->-> x1 =3D (float)(-b+sqrt(E))/(2*a);
    >->-> x2 =3D (float)(-b-sqrt(E))/(2*a);
    >->->
    >->-> printf ("\nYour quadratic equation has two distinct real roots: =
    >->-> x1=3D%1.6f ,x2=3D%1.6f",x1,x2);
    >->-> }
    >->-> =20
    >->-> else if (E =3D=3D 0)=20
    >->-> {
    >->->
    >->-> x1 =3D (float)(-b+sqrt(E))/(2*a);
    >->-> =20
    >->-> printf ("\nYour quadratic equation has two same: =
    >->-> x1=3Dx2=3D%1.6f\n",x1);
    >->-> }
    >->-> =20
    >->-> else=20
    >->->
    >->-> {
    >->->
    >->-> printf ("Your quadratic equation has two distinct imaginary roots. Do =
    >->-> you want to know");
    >->-> printf ("\nthe values of the imaginary roots (Y/N)?");
    >->-> =20
    >->-> scanf ("%c",&q); /* Dummy. The computer jumps this =
    >->-> scanf() */
    >->->
    >->-> scanf ("%c",&q);
    >->->
    >->-> printf ("q =3D %c\n",q); /* Test statement*/
    >->->
    >->-> if ('Y'=3D=3Dq)
    >->-> {
    >->-> R =3D (float)-b/(2*a);
    >->-> S=3Dabs(E);
    >->-> S=3Dsqrt(S);
    >->-> I =3D S/(2*a);
    >->-> printf ("\nThe imaginary roots are:\n");
    >->-> printf (" x1=3D%1.6f + %1.6fi , x2=3D%1.6f - %1.6fi\n",R,I,R,I);
    >->-> }
    >->-> else
    >->-> printf ("Thank you for using this computer\n");
    >->-> }
    >->-> return 0;
    >->-> }
    >->->
    >->-> /* RESULT
    >->-> Please key in the value of constant a,b and c for finding the roots of =
    >->-> quadratic
    >->-> equation ax=B2+bx+c=3D0 :3 4 1
    >->->
    >->-> Your quadratic equation has two distinct real roots: x1=3D-0.333333 =
    >->-> ,x2=3D-1.000000
    >->-> Press any key to continue */
    >->->
    >->-> /*Please key in the value of constant a,b and c for finding the roots of =
    >->-> quadratic
    >->-> equation ax=B2+bx+c=3D0 :1 8 16
    >->->
    >->-> Your quadratic equation has two same: x1=3Dx2=3D-4.000000
    >->-> Press any key to continue */
    >->->
    >->-> /*Please key in the value of constant a,b and c for finding the roots of =
    >->-> quadrati
    >->-> equation ax=B2+bx+c=3D0 :4 2 5
    >->-> Your quadratic equation has two distinct imaginary roots. Do you want =
    >->-> to know
    >->-> the values of the imaginary roots (Y/N)?Y
    >->-> q =3D Y
    >->->
    >->-> The imaginary roots are:
    >->-> x1=3D-0.250000 + 1.089725i , x2=3D-0.250000 - 1.089725i
    >->-> Press any key to continue*/
    >->->
    >->-> /*Please key in the value of constant a,b and c for finding the roots of =
    >->-> quadratic
    >->-> equation ax=B2+bx+c=3D0 :4 2 5
    >->-> Your quadratic equation has two distinct imaginary roots. Do you want =
    >->-> to know
    >->-> the values of the imaginary roots (Y/N)?N
    >->-> q =3D N
    >->-> Thank you for using this computer
    >->-> Press any key to continue*/
    >->-> =20
    >->->
    >->-> ------=_NextPart_000_000E_01C5D424.94159240
    >->-> Content-Type: text/html;
    >->-> charset="iso-8859-1"
    >->-> Content-Transfer-Encoding: quoted-printable
    >->->
    >->-> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    >->-> <HTML><HEAD>
    >->-> <META http-equiv=3DContent-Type content=3D"text/html; =
    >->-> charset=3Diso-8859-1">
    >->-> <META content=3D"MSHTML 6.00.2900.2769" name=3DGENERATOR>
    >->-> <STYLE></STYLE>
    >->-> </HEAD>
    >->-> <BODY bgColor=3D#ffffff>
    >->-> <DIV><FONT face=3DArial size=3D2>I have got all the results by using 2=20
    >->-> scanf().&nbsp; One is a dummy. &nbsp;I am also using double instead of =
    >->-> float.=20
    >->-> </FONT></DIV>
    >->-> <DIV><FONT face=3DArial size=3D2>Below are the results.&nbsp; I am =
    >->-> copying&nbsp; and=20
    >->-> paste from Notepad, so I hope I dont have HTML problem. </FONT></DIV>
    >->-> <DIV><FONT face=3DArial size=3D2>Regards,</FONT></DIV>
    >->-> <DIV><FONT face=3DArial size=3D2>Khoon</FONT></DIV>
    >->-> <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    >->-> <DIV>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial size=3D2>&nbsp;<FONT =
    >->-> color=3D#000080><STRONG>/*&nbsp;&nbsp;=20
    >->-> Roots of a Quadratic Equation.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
    >->-> 12.10.05&nbsp;=20
    >->-> */</STRONG></FONT></FONT></DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 =
    >->-> size=3D2><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>#include=20
    >->-> &lt;stdio.h&gt;<BR>#include &lt;stdlib.h&gt;<BR>#include=20
    >->-> &lt;math.h&gt;</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>int main=20
    >->-> (void)</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>{<BR>&nbsp;int =
    >->-> a; int b; int=20
    >->-> c; double x1; double x2; double E; int E1; double R; double I;double=20
    >->-> S;<BR>&nbsp;&nbsp;&nbsp; char q; char Y;</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>&nbsp;printf =
    >->-> ("Please key in=20
    >->-> the value of constant a,b and c for finding the roots of=20
    >->-> quadratic");<BR>&nbsp;&nbsp;&nbsp; printf ("equation ax%c+bx+c=3D0&nbsp; =
    >->->
    >->-> :",253);<BR>&nbsp;scanf ("%d%d%d", =
    >->-> &amp;a,&amp;b,&amp;c);<BR>&nbsp;&nbsp;&nbsp;=20
    >->-> <BR>&nbsp;&nbsp;&nbsp; E&nbsp; =
    >->-> =3D(b*b)-(4*a*c);<BR>&nbsp;<BR>&nbsp;&nbsp; if ( E=20
    >->-> &gt; 0) <BR>&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp; =
    >->-> <BR>&nbsp;&nbsp;&nbsp; x1 =3D=20
    >->-> (float)(-b+sqrt(E))/(2*a);<BR>&nbsp;&nbsp;&nbsp; x2 =3D=20
    >->-> (float)(-b-sqrt(E))/(2*a);</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 =
    >->-> size=3D2><STRONG>&nbsp;&nbsp;printf ("\nYour=20
    >->-> quadratic equation has two distinct real roots: x1=3D%1.6f=20
    >->-> ,x2=3D%1.6f",x1,x2);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; =
    >->-> else if (E=20
    >->-> =3D=3D 0) <BR>&nbsp;&nbsp; {</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080=20
    >->-> size=3D2><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x1 =3D=20
    >->-> (float)(-b+sqrt(E))/(2*a);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    >->-> <BR>&nbsp;&nbsp; printf ("\nYour quadratic equation has two same:=20
    >->-> x1=3Dx2=3D%1.6f\n",x1);<BR>&nbsp;&nbsp; }<BR>&nbsp; <BR>&nbsp;&nbsp; =
    >->-> else=20
    >->-> </STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>&nbsp;&nbsp;=20
    >->-> {</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>&nbsp; printf =
    >->-> ("Your=20
    >->-> quadratic equation has two distinct imaginary roots.&nbsp; Do you want =
    >->-> to=20
    >->-> know");<BR>&nbsp; printf ("\nthe values of the imaginary roots=20
    >->-> (Y/N)?");<BR>&nbsp;<BR>&nbsp; scanf=20
    >->-> ("%c",&amp;q);</STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
    >->-> bsp;&nbsp;&nbsp;&nbsp;=20
    >->-> &nbsp;<FONT color=3D#008080><STRONG>/*&nbsp;Dummy. &nbsp;The computer =
    >->-> jumps this=20
    >->-> scanf() */</STRONG></FONT></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>&nbsp; scanf=20
    >->-> ("%c",&amp;q);</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>&nbsp; printf =
    >->-> ("q =3D=20
    >->-> %c\n",q<FONT color=3D#008080>)<FONT=20
    >->-> color=3D#000080>;&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;/* Test=20
    >->-> statement*/</FONT></STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>&nbsp; if =
    >->-> ('Y'=3D=3Dq)<BR>&nbsp;=20
    >->-> {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R =3D=20
    >->-> (float)-b/(2*a);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
    >->-> S=3Dabs(E);<BR>&nbsp;&nbsp;=20
    >->-> S=3Dsqrt(S);<BR>&nbsp;&nbsp; I =3D =
    >->-> S/(2*a);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf=20
    >->-> ("\nThe imaginary roots are:\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
    >->-> printf ("=20
    >->-> x1=3D%1.6f + %1.6fi , x2=3D%1.6f - %1.6fi\n",R,I,R,I);<BR>&nbsp; =
    >->-> }<BR>&nbsp;=20
    >->-> else<BR>&nbsp;&nbsp; printf ("Thank you for using this=20
    >->-> computer\n");<BR>}<BR>&nbsp; return 0;<BR>}</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>/* =
    >->-> RESULT<BR>Please key in=20
    >->-> the value of constant a,b and c for finding the roots of =
    >->-> quadratic<BR>equation=20
    >->-> ax=B2+bx+c=3D0&nbsp; :3 4 1</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>Your quadratic =
    >->-> equation has=20
    >->-> two distinct real roots: x1=3D-0.333333 ,x2=3D-1.000000<BR>Press any key =
    >->-> to continue=20
    >->-> */</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>/*Please key in =
    >->-> the value of=20
    >->-> constant a,b and c for finding the roots of quadratic<BR>equation=20
    >->-> ax=B2+bx+c=3D0&nbsp; :1 8 16</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>Your quadratic =
    >->-> equation has=20
    >->-> two same: x1=3Dx2=3D-4.000000<BR>Press any key to continue =
    >->-> */</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>/*Please key in =
    >->-> the value of=20
    >->-> constant a,b and c for finding the roots of quadrati<BR>equation=20
    >->-> ax=B2+bx+c=3D0&nbsp; :4 2 5<BR>Your quadratic equation has two distinct =
    >->-> imaginary=20
    >->-> roots.&nbsp; Do you want to know<BR>the values of the imaginary roots=20
    >->-> (Y/N)?Y<BR>q =3D Y</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>The imaginary =
    >->-> roots=20
    >->-> are:<BR>x1=3D-0.250000 + 1.089725i , x2=3D-0.250000 - 1.089725i<BR>Press =
    >->-> any key to=20
    >->-> continue*/</STRONG></FONT></DIV>
    >->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>/*Please key in =
    >->-> the value of=20
    >->-> constant a,b and c for finding the roots of quadratic<BR>equation=20
    >->-> ax=B2+bx+c=3D0&nbsp; :4 2 5<BR>Your quadratic equation has two distinct =
    >->-> imaginary=20
    >->-> roots.&nbsp; Do you want to know<BR>the values of the imaginary roots=20
    >->-> (Y/N)?N<BR>q =3D N<BR>Thank you for using this computer<BR>Press any key =
    >->-> to=20
    >->-> continue*/<BR>&nbsp;&nbsp; <BR></STRONG></FONT></DIV></BODY></HTML>
    >->->
    >->-> ------=_NextPart_000_000E_01C5D424.94159240--
    >->->
     
    Tim Rentsch, Oct 18, 2005
    #17
  18. On Tue, 18 Oct 2005 17:57:50 +0800, in comp.lang.c , "Red Dragon"
    <> wrote:

    >I dont quite understand the phrase "newline to terminate the line".


    How many keys do you press, when you supply user input value of 1? One
    key or two?
    --
    Mark McIntyre
    CLC FAQ <http://www.eskimo.com/~scs/C-faq/top.html>
    CLC readme: <http://www.ungerhu.com/jxh/clc.welcome.txt>

    ----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure Usenet News==----
    http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
    ----= East and West-Coast Server Farms - Total Privacy via Encryption =----
     
    Mark McIntyre, Oct 18, 2005
    #18
  19. Red Dragon

    Red Dragon Guest

    >>->-> any key to=20
    >>->-> continue*/</STRONG></FONT></DIV>
    >>->-> <DIV><FONT color=3D#000080><STRONG></STRONG></FONT>&nbsp;</DIV>
    >>->-> <DIV><FONT face=3DArial color=3D#000080 size=3D2><STRONG>/*Please
    >>key in =
    >>->-> the value of=20
    >>->-> constant a,b and c for finding the roots of quadratic<BR>equation=20
    >>->-> ax=B2+bx+c=3D0&nbsp; :4 2 5<BR>Your quadratic equation has two
    >>distinct =
    >>->-> imaginary=20
    >>->-> roots.&nbsp; Do you want to know<BR>the values of the imaginary
    >>roots=20
    >>->-> (Y/N)?N<BR>q =3D N<BR>Thank you for using this computer<BR>Press any
    >>key =
    >>->-> to=20
    >>->-> continue*/<BR>&nbsp;&nbsp; <BR></STRONG></FONT></DIV></BODY></HTML>
    >>->->
    >>->-> ------=_NextPart_000_000E_01C5D424.94159240--
    >>->->



    Thank you Tim,
    I absolutely have no idea of the problem until I saw your post to me. Not
    even I dont like to read it, I am unable to read it.
    I had purposely sent myself a returned copy of the mail and it was not like
    this. The returned copy had not a single line of HTML code.
    I suppose why this problem arises is because only readers with Outlook
    Express get the mail in its perfect state. Others with different platform
    will get it all in HTML.
    Thanks for enlightening me.
    Regards,
    Khoon.
     
    Red Dragon, Oct 19, 2005
    #19
  20. Red Dragon

    Red Dragon Guest

    "Mark McIntyre" <> wrote in message
    news:...
    > On Tue, 18 Oct 2005 17:57:50 +0800, in comp.lang.c , "Red Dragon"
    > <> wrote:
    >
    >>I dont quite understand the phrase "newline to terminate the line".

    >
    > How many keys do you press, when you supply user input value of 1? One
    > key or two?
    > --
    > Mark McIntyre


    2 keys. One for 1 and One for Enter.
    Can you kindly tell me is using 2 scanf() the best solution to the problem?
    What is a better method?
    Thanks
    Rgds,
    Khoon.
     
    Red Dragon, Oct 19, 2005
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?dHJlbGxvdzQyMg==?=

    HELP! HELP! HELP! Opening Web Application Project Error

    =?Utf-8?B?dHJlbGxvdzQyMg==?=, Feb 20, 2004, in forum: ASP .Net
    Replies:
    0
    Views:
    806
    =?Utf-8?B?dHJlbGxvdzQyMg==?=
    Feb 20, 2004
  2. hfk0
    Replies:
    2
    Views:
    21,732
  3. JavaQueries
    Replies:
    1
    Views:
    3,752
    John C. Bollinger
    Mar 1, 2005
  4. Balaji
    Replies:
    3
    Views:
    10,178
  5. Bishop
    Replies:
    1
    Views:
    820
    Bishop
    Feb 24, 2007
Loading...

Share This Page