Zach Chernicky
Zach Chernicky

Reputation: 47

How do I stop scanf loop after user enters specific amount of integers?

#include <stdio.h>

int main(void) {
double numbersEntered, sum = 0;

do
{
    printf("Enter a number: ");
    scanf("%lf", &numbersEntered);
    sum += numbersEntered;
}

while (/* ??? */);

printf("Sum = %.2lf", sum);

return 0;
}

What should I do in the while statement to stop the loop after the user enters 4 integers?

Upvotes: 0

Views: 541

Answers (4)

ChrisF
ChrisF

Reputation: 137108

You need to introduce a counter:

double numbersEntered, sum = 0;
int count = 0;

do
{
    printf("Enter a number: ");
    scanf("%lf", &numbersEntered);
    sum += numbersEntered;
    count++;
} while (count < 4);

Make sure you increment it otherwise your loop will never end.

Changing the 4 to a constant (or even a configurable) variable will make the program more flexible, but whether you actually need to do that depends on what your application needs to do.

Upvotes: 2

Vlad from Moscow
Vlad from Moscow

Reputation: 310930

I can suggest the following solution

#include <stdio.h>

int main( void ) 
{
    const int N = 4;

    double sum = 0.0;

    for ( int i = 0, success = 1; success && i < N; i++ )
    {
        double numberEntered;

        printf( "Enter a number: " );


        if ( success = ( scanf( "%lf", &numberEntered ) == 1 ) ) sum += numberEntered;
    }

    printf( "\nSum = %.2lf", sum );


    return 0;
}

The program output can look like

Enter a number: 1.1
Enter a number: 2.2
Enter a number: 3.3
Enter a number: 4.4

Sum = 11.00

Or the program can look like

#include <stdio.h>

int main( void ) 
{
    const int N = 4;

    double sum = 0.0;

    printf( "Enter %d numbers\n\n", N );

    for ( int i = 0, success = 1; success && i < N; i++ )
    {
        double numberEntered;

        printf( "Enter number %d: ", i + 1 );


        if ( success = ( scanf( "%lf", &numberEntered ) == 1 ) ) sum += numberEntered;
    }

    printf( "\nSum = %.2lf", sum );


    return 0;
}

In this case its output might look like

Enter 4 numbers

Enter number 1: 1.1
Enter number 2: 2.2
Enter number 3: 3.3
Enter number 4: 4.4

Sum = 11.00

Instead of using the constant N equal to 4 you can ask the user to enter the number of entered values.

Upvotes: 2

fluter
fluter

Reputation: 13786

Use a counter to end the loop when the specified number of double you have entered. Also, remember to check scanf return value, otherwise, if you input something not a double, you will end up adding the old value of numbersEntered, which mostly is not what you want.

#include <stdio.h>

int main(void) {
    double numbersEntered, sum = 0;
    int cnt = 0;
    int ret;
    do
    {
        printf("Enter a number: ");
        ret = scanf("%lf", &numbersEntered);
        if (ret != 1) continue;
        sum += numbersEntered;
        cnt++;
    } while (cnt < 4);
    printf("Sum = %.2lf", sum);
    return 0;
}

Upvotes: 0

Shankar Shastri
Shankar Shastri

Reputation: 1154

Hey you need to take the number of integers to be scanned as a input. and then traverse continously. #include

int main() {
double numbersEntered, sum = 0;
int numbersToBeEntered = 0;
scanf("%d",&numbersToBeEntered);    
do
{
printf("Enter a number: ");
scanf("%lf", &numbersEntered);
sum += numbersEntered;
}while (--numbersToBeEntered);

printf("Sum = %.2lf", sum);

return 0;
}

Upvotes: 0

Related Questions