Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Максимальное расстояние между локальными минимумам 
:(
    Опции темы
ZimOne
Дата 7.10.2014, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.12.2013

Репутация: нет
Всего: нет



Задача написать программу по нахождению максимального расстояния между двумя соседними локальными минимумами. На вход подается файл, в котором есть некая последовательность цифр. Программу написал, но она всегда выдает 1, в чем ошибка вообще не понимаю, мучаюсь несколько дней уже. Надеюсь на Ваш опытный взгляд и заранее благодарю!
P.S. программа без масива 
P.P.S если у нас есть три числа, и то которое посредине меньше остальных двух, то это локальный минимум

#include <stdio.h>
#include <math.h>
int maxlength (FILE *fin);
int maxl = 0;
int main ()
{
    char filename[256];
    int result;
    FILE *fin;
    printf("Type file name ->");
    scanf("%s",filename);
    fin = fopen (filename, "r");
    if (!fin) 
    {
        printf ("Cant open file %s\n", filename);
        return -1;
    }
    result = maxlength(fin);
    switch(result)
    {
        case 1:
            printf ("The maximum length is:\n");
            printf ("%d@",maxl);
            break;
        case -1:
            printf ("Not enough data\n");
            break;
    }
    fclose (fin);
    return 0;
}
 
int maxlength (FILE *fin)
{
    double x,y,z;
    int n = 0;
    fscanf(fin,"%lf",&x);
    fscanf(fin,"%lf",&y);
    while ((fscanf(fin,"%lf",&z)==1))
    {
        if ((y<x)&&(y<z))
        {
            n++;
        }
        else
        {
            if (n>maxl)
            {
            maxl = n;
            }
            n = 0;  
        }   
        x = y;
        y = z;  
        
    }
    
    return 1;
}
PM MAIL   Вверх
sQu1rr
Дата 7.10.2014, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 3
Всего: 13



Цитата(ZimOne @  7.10.2014,  19:29 Найти цитируемый пост)
максимального расстояния между двумя соседними локальными минимумами

Знаю что такое локальный минимум в функции на определенном отрезке, не знаю, что такое 2 локальных минимум в последовательности цифр без задавания отрезка. Если задача в том что бы найти максимальное расстояние между двумя минимальными числами в последовательности (по обе стороны которых числы больше, такие же, конец/начало) то так и говорите. А еще используйте тег "код" что бы код не выглядил... вот так... а то его будут читать только самые упоротые упорные
PM MAIL Skype GTalk   Вверх
sQu1rr
Дата 7.10.2014, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 3
Всего: 13



Ладно, называйте упоротым, почитал я ваш код..
Проблемма в том что каждый раз когда 'y' не является минимумом, 'n' скидывается в 0, тоесть на первом шаге после первого минимума (ага! n=1) он запишется в maxl и скинется в 0.
На самом деле вам нужно просто сделать две переменных a и b, в a вы запишите индекс первого минимума, а в b будете писать все остальные (останется последний) b-a = то что вам нужно

Добавлено через 1 минуту и 28 секунд
И не забудьте что первое и последние значения тоже могут быть минимумами, как и значения вокруг которых те же значения
0 1 2 - 0 минимум
2 1 1 1 2 - все три еденицы минимумы
3 2 1 - 1 минимум
PM MAIL Skype GTalk   Вверх
xvr
Дата 9.10.2014, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Вы считаете не расстояние между локальными минумами, а их количество (в непрерывной последовательности). А так как непрерывно может быть только 1 локальный минимум, на то он и минимум, то не удивительно, что получается 1  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4088 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.