Running Average Again

Given N numbers, read each one, calculate the running average and print it. For example, given the t…

Click here to read the complete problem statement.


If you need help solving this problem, mention your approach and ask specific questions. Please avoid sharing your code and asking the Community to figure out “what’s wrong”.

What’s wrong in this code???

#include <iostream>
#include <cstdio>

using namespace std;

int main() {

    int n;
    cin >> n;
    if (n < 100000) {
        int arr[n];
        int count = 0;
        double data = 0;

        for (int i = 0; i < n; i++) {
            count++;
            cin >> arr[i];
            if(arr[i] < 1 || arr[i] > 1000)
                return 0;
            
            data += (double) arr[i];
            double result = (data / count);
            printf("%.10f\n", result);
        }
    }

    return 0;
}
1 Like

@tariqul The problem statement has been updated. N can be equal to 100000.

#include <stdio.h>
 float main()
{
    int n,num[n];
    scanf("%d",&n);
    printf("\n");
    if(n<=100000)
    {
        float s=0;
        float av;
        for(int i=0;i<n;)
        {
            scanf("%d",&num[i]);
            s+=num[i];
            i+=1;
            av=s/i;
            printf("%.5f\n",av);
        }
    }
}

what’s the problem with this code?

@Talha76 You don’t need this printf.

#include<stdio.h>
int main()
{
    int N,i,sum=0;
    float average;
    scanf("%d",&N);
    int a[N];
    for(i=0;i<N;i++){
        scanf("%d",a[i]);
    }
    for(i=0;i<N;i++){
        sum=sum+(float)a[i];
        average=sum/(i+1);
        printf("%f\n",average);
        }
        return 0;
    }

what is the problem?

@Rabeya You missed an ampersand here. It should be &a[i].

#include <stdio.h>
float main()
{
    int n,num[n];
    scanf("%d",&n);
    float s=0;
    float av;
    for(int i=0; i<n;)
    {
        scanf("%d",&num[i]);
        s+=num[i];
        i+=1;
        av=s/i;
        printf("%f\n",av);
    }

}

whats the problem

@MD_Mynuddin Could you please try using double instead of float?

#include <stdio.h>
int main()
{
    int n,i;
    double r = 0;
    scanf("%d",&n);
    int N[n];
    for(i = 0;i < n; i++){
        scanf("%d",&N[i]);
        r = (r+N[i])/(i+1);
        printf("%.4lf\n",r);
    }
    return 0;
}

what is wrong in my code?
I can’t submit

@Nilc_Zet If r is your running average, then you cannot add the next number to it directly.

1 Like
#include<stdio.h>
int main()
{
    int x,a[x],total=0;
    scanf("%d",&x);
    for(int i=0;i<x;i++){
        scanf("%d",&a[i]);
        total=total+(float)a[i];
        printf("%f\n",(float)total/(i+1));
    }
    return 0;
}

Still showing error. It is showing wrong answer

Welcome to the community, @moc_55!

You are initializing the array a before knowing the value of x.

Welcome to the community, @RDA_Programmer. Can you please share your code?

Runtime error I debugged it and everything okk but when i submit it says runtime error

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,ar[1000],i;
double total=0,avg=0;
scanf(“%d”,&n);
if(n<=100000)
for(i=0;i<n;i++)
{
scanf(“%d”,&ar[i]);
}
for(i=0;i<n;i++)
{
total+=ar[i];
avg=total/(i+1);
printf(“%.10lf\n”,avg);
}
return 0;
}

n=int(input())
num=0
for i in range(1, n+1):
    z=int(input())
    if (z<0 or z>1000):
        exit()
    else:
        num+=z
        ava=num/i
        print(format(ava, ".10f"))

Sir,I do not know why I’m facing runtime error

In your code, this won’t work:

z=int(input())

Because, the second line will have n integers. Calling input() reads the entire line. To read n integers from a line, you can do this:

Z = map(int, input().split())

Here, Z will now be a list with all of the integers in that line.

This is what happens in that line of code:

  • input() reads the entire line as string.
  • split() causes the string to become a list of strings where each space-separated word becomes an element of that list.
  • map(int, ...) takes that list and converts each element to an int.
  • The resulting list is assigned to Z.
1 Like

how can i pass the runtime problem?

#include <stdio.h>
#include<math.h>
int main() {
	double ara[1001],sum=0.0,ravg,dif;
	int i,t;
	scanf("%d", &t);
	for(i=1; i<=t; i++){
        scanf("%lf", &ara[i]);
        sum += ara[i];
        ravg = sum / i;
        dif = ravg - (int) (ravg) ;
        //dif = ceil(ravg) - floor(ravg);
        if(dif<0.000001) printf("%.0lf\n", ravg);
        else{
            printf("%0.5lf\n", ravg);
        }
	}
	return 0;
}

Please check the constraint on N. The array you declared is too small.

1 Like