Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Профессионал
Рейтинг: 4632
∙ повысить рейтинг »
Micren
Статус: Профессионал
Рейтинг: 1539
∙ повысить рейтинг »
Andrew Kovalchuk
Статус: Студент
Рейтинг: 608
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Microsoft .NET : C#

Номер выпуска:188
Дата выхода:30.09.2010, 02:30
Администратор рассылки:Alexey G. Gladenyuk, Управляющий
Подписчиков / экспертов:169 / 62
Вопросов / ответов:1 / 2

Вопрос № 180018: Здравствуйте,помогите решить задачу на c# Дана непустая последовательность положительных целых чисел,за которой следует 0(это признак конца последовательности).Вычислить среднее геометрическое этих чисел по операторам ветвления...



Вопрос № 180018:

Здравствуйте,помогите решить задачу на c#
Дана непустая последовательность положительных целых чисел,за которой следует 0(это признак конца последовательности).Вычислить среднее геометрическое этих чисел по операторам ветвления

Отправлен: 25.09.2010, 02:01
Вопрос задал: Benqq, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Micren, Профессионал :
Здравствуйте, Benqq.
Тестировал в MS VS 2010.
Код:
using System;
using System.Collections.Generic;
using System.Linq;

namespace _180018
{
using UintType = System.UInt32;
using IntermediateType = System.Double;

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Вводите целые положительные числа(0-завершение):");

// Промежуточные произведения(цель - избежать переполнения и потери результата)
var intermediateResults = new List<IntermediateType>();

// Количество чисел
uint count = 0;

wh ile (true)
{
try
{
// Читаем. Одно число в строке.
UintType value = UintType.Parse(Console.ReadLine());

// Если 0 - завершим цикл
if (value == 0)
{
break;
}

++count;
if (intermediateResults.Count == 0 || (IntermediateType.MaxValue / value < intermediateResults[intermediateResults.Count - 1]))
{
intermediateResults.Add(value);
}
else
{
intermediateResults[intermediateResults.Count - 1] *= value;
}
}
catch (FormatException)
{
Console.WriteLine("Неверный форм ат для целого положительного числа.");
}
catch (OverflowException)
{
Console.WriteLine("Диапазон значений:{0}..{1}", UintType.MinValue, UintType.MaxValue);
}
catch (ArgumentNullException)
{
break;
}
}


if (intermediateResults.Count == 0)
{
Console.WriteLine("Нет в последовательности целых положительных чисел");
}
else
{
// Считаем и выводим среднее геометрическое
Console.WriteLine("Среднее геометрическое:{0}", intermediateResults.Aggregate(1.0,
(current, intermediateResult) => current * Math.Pow(intermediateResult, 1.0 / count)));
}

Console.ReadKey();
}
}
}

Пример работы:
Код:
Вводите целые положительные числа(0-завершение):
23
453534
45
234
4565
987
456456464
tyrt
Неверный формат для целого положительного числа.
464658768788979
Диапазон значений:0..4294967295
4345
567
786
0
Среднее геометрическое:3665,15101821618

Ответ отправил: Micren, Профессионал
Ответ отправлен: 25.09.2010, 04:06
Номер ответа: 263176

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263176 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает Челноков Виктор Альбертович, Студент :
    Здравствуйте, Benqq.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    double[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 0 };
    double sg=1; //среднее геометрическое

    for(int i = 0;i<x.Length-1;i++)
    {

    if (x[i] > 0)// ограничение только положительные числа
    {
    sg = sg * x[i];

    }

    }
    sg=Math .Exp(Math .Log (sg )*(x.Length-1));
    Console.Write(" среднее геометрическое = " + sg.ToString());
    Console.Write("\nДля выхода из программы нажмите [Enter]:");
    string ankey = Console.ReadLine();
    }
    }
    }

    Ответ отправил: Челноков Виктор Альбертович, Студент
    Ответ отправлен: 25.09.2010, 09:49
    Номер ответа: 263180

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263180 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.21 от 28.09.2010

    В избранное