Главная страница
Навигация по странице:

  • Выходные данные.

  • Входные данные

  • Выходные данные

  • Для начинающих на С. Составители


    Скачать 1.31 Mb.
    НазваниеСоставители
    Анкорisakova-zarina@mail.ru
    Дата18.02.2023
    Размер1.31 Mb.
    Формат файлаdocx
    Имя файлаДля начинающих на С .docx
    ТипЗадача
    #943648
    страница27 из 38
    1   ...   23   24   25   26   27   28   29   30   ...   38
    Входные данные. Первая строка входного файла INPUT.TXT содержит целое число n – количество нот, которые воспроизводил Максим с помощью тюнера (2 ≤ n ≤ 1000). Последующие n строк содержат записи Максима, причем каждая строка содержит две компоненты: вещественное число fi – частоту, выставленную на тюнере, в герцах (30 ≤ fi ≤ 4000), и слово «closer» или слово «further» для каждой частоты, кроме первой. Частоты fi заданы с точностью, не превышающей 10 цифр после запятой.

    Слово «closer» означает, что частота данной ноты ближе к частоте звучания треугольника, чем частота предыдущей ноты, что формально описывается соотношением: |fi – fтреуг.| < |fi-1 – fтреуг.| Слово «further» означает, что частота данной ноты дальше, чем предыдущая. Если оказалось, что очередная нота так же близка к звуку треугольника, как и предыдущая нота, то Максим мог записать любое из двух указанных выше слов. Гарантируется, что результаты, полученные Максимом, непротиворечивы.

    Выходные данные. В выходной файл OUTPUT.TXT необходимо вывести через пробел два вещественных числа – наименьшее и наибольшее возможное значение частоты звучания треугольника, изготовленного Максимом. Числа следует выводить с точностью, не худшей 10-6.


    # include

    #include

    #include

    #include

    using namespace std;
    int main(){

    int n;

    string word;

    double prev,cur,curMin, curMax;

    double totalMin=30;

    double totalMax=4000;

    cin>>n;

    cin>>prev;
    for (int i=1; i
    cin>>cur>>word;
    if ((cur>prev && word=="closer") || (cur


    {curMin=(cur+prev)/2;

    curMax=4000;}
    else if ((cur
    prev&&word=="further")){

    curMin=30;

    curMax=(cur+prev)/2;}

    else{curMin=30;

    curMax=4000;}
    totalMin=max(totalMin,curMin);

    totalMax=min(totalMax,curMax);
    prev=cur;}
    printf ("%.7f %.7f", totalMin,totalMax);

    return 0; }

    См. подробный разбор https://www.youtube.com/watch?v= OLNkFH6GLu8
    prev – предыдущая точка

    cur – текущая точка

    mid=(cur+prev)/2 – середина между ними
    closer: от mid в сторону cur.

    further: от mid в сторону prev.
    cur>prev, closer: допустимый интервал [mid,4000]

    cur<prev, further: допустимый интервал [mid,4000]

    cur<prev, closer: допустимый интервал [30,mid]

    cur>prev, further: допустимый интервал [30,mid]
    Начальный интервал [30,4000]. Для каждой пары получили интервал. Нужно получить пересечение интервалов. [max(min1,min2), min(max1,max2)]






    Библиотека позволяет вычислять max , min



    Текущая точка становится предыдущей

    Задача 63 (№ 272) Сумма max и мin (Сложность: 26%)


    Задана последовательность целых чисел. Числа нумеруются по порядку следования, начиная с единицы. Требуется написать программу, которая найдет сумму максимума из чисел с четными номерами и минимума из чисел с нечетными номерами – max{a2, a4, …}+min{a1, a3, …}.

    Входные данные

    Входной текстовый файл содержит в единственной строке последовательность от 2 до 2*105 целых чисел, которые по модулю не превышают 10000.

    Выходные данные




    INPUT.TXT

    OUTPUT.TXT

    1

    1 2

    3

    2

    1 -2 3 -4 5

    -1
    Выходной текстовый файл OUTPUT.TXT должен содержать одно целое число - сумму максимума из чисел с четными номерами и минимума из чисел с нечетными номерами.
    1   ...   23   24   25   26   27   28   29   30   ...   38


    написать администратору сайта