1108. Finding Average (20)

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
	int n;
	scanf("%d", &n);

	int i, len, xiaoshu, j, begin, pointcount, flag, numcount = 0;
	char s[100], ch;
	double sum = 0, num;

	for(i = 1; i <= n; i++)
	{
		getchar();
		scanf("%s", s);

		len = strlen(s);
		begin = xiaoshu = pointcount = 0;
		flag = 1;

		if(s[0] == '-')
		{
			begin++;
		}

		for(j = begin; j < len; j++)
		{
			ch = s[j];
			if(ch == '.')
			{
				pointcount++;

				if(pointcount > 1)
				{
					flag = 0;
					break;
				}
			}
			else if(ch >= '0' && ch <= '9')
			{
				if(pointcount == 1)
				{
					xiaoshu++;

					if(xiaoshu > 2)
					{
						flag = 0;
						break;
					}
				}
			}
			else
			{
				flag = 0;
				break;
			}
		}

		if(flag == 1)
		{
			sscanf(s, "%lf", &num);

			if(num >= -1000 && num <= 1000)
			{
				numcount++;
				sum += num;
			}
			else
			{
				flag = 0;
			}
		}
		
		if(flag == 0)
		{
			printf("ERROR: %s is not a legal number\n", s);
		}
	}

	if(numcount == 0)
	{
		printf("The average of 0 numbers is Undefined\n");
	}
	else if(numcount == 1)
	{
		printf("The average of 1 number is %.2lf\n", sum);
	}
	else
	{
		printf("The average of %d numbers is %.2lf\n", numcount, sum / numcount);
	}

	system("pause");
	return 0;
}

 

posted on 2025-11-25 09:10  王景迁  阅读(5)  评论(0)    收藏  举报

导航