bearforever99 Ответов: 2

Помогите мне рассчитать среднее значение


У меня застрял вопрос о том, как рассчитать среднее значение не работает, как я думаю. Он говорит, что введенные метки должны быть от 0 до 100 (включая 0 и 100), или пользователю предлагается повторно ввести данные до тех пор, пока не будет получена действительная метка. Пользователь вводит отметку -1, чтобы завершить процесс ввода. Затем программа должна отобразить: 

1. Сколько студентов были обработаны
2. Средняя оценка всех студентов

Подсказки: для решения этой проблемы должно быть два вложенных цикла - один внутри пыльника - цикл для проверки пользовательского ввода должен быть во внутреннем.

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Practical_1_Q16_Calculate_Average
{
    class Program
    {
        static void Main(string[] args)
        {
            double total = 0;
            int count = 0;
            double score = 5;

            Console.WriteLine("Enter a score (0-100): ");
            score = double.Parse(Console.ReadLine());
            while (score < 0 || score > 100)
            {
                Console.WriteLine("Invalid, must be 0-100");
                score = double.Parse(Console.ReadLine());
                total += score;
                count++;
            }
            if (count == 0)
            {
                Console.WriteLine("No numbers were entered.");
            }
            else
            {
                Console.WriteLine("Average:" + total / count);
            }
            Console.WriteLine("");
            Console.WriteLine("Program finished");
            Console.ReadLine();
        }
    }
}

User 59241

Программа работает, но результаты неверны. Следующий шаг достаньте отладчик и исправьте его.

jimboo1232

Ты заставил это запустить? Если да,то не могли бы вы опубликовать код? Я хотел бы увидеть это в действии.

Спасибо.

2 Ответов

Рейтинг:
2

CPallini

Вы не следовали подсказкам: ваша программа не имеет двух вложенных циклов, псевдокода:

do 
{
  score = get_from_user();
  if ( score >= 0 && score <=100)
  {
    update_and_possibly_print_values();
  }
} while (score != -1);


Maciej Los

5ед!

Рейтинг:
12

OriginalGriff

Начните с повторного прочтения инструкции и обратите внимание на " подсказку"

Тогда я бы предложил удвоить.TryParse было бы намного лучше использовать, чем double.Разбор: если бы вы ввели 56 значений, а затем неправильно набрали одно и приложение разбилось, вы бы не были счастливым кроликом! TryParse говорит вам, что это было плохое число, вместо того чтобы выдавать исключение и сбой программы, так что вы можете сказать пользователю и двигаться дальше.

Затем, когда вы получите значение "-1" от пользователя, вы должны выйти из цикла и показать результаты.

Когда вы читаете первое значение от пользователя вне вашего цикла, сколько образцов у вас есть? это действительно ноль?

И, наконец, while цикл выполняет строки, которые он содержит, до тех пор, пока условие true Если пользователь начинает с допустимого значения, он никогда не войдет в ваш loop...as я сказал, прочтите "подсказку"...


Maciej Los

5ед!