Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2013, 15:13   #11
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Код:
int n = 21;
double[] x = new double[n];
Код:
//Считываю числа типа double с текстового файла
try
        {
            FileInputStream fi = new FileInputStream("File of input.txt");
            Scanner src = new Scanner(fi);
            src.nextLine();
            for(int i = 0; i < n; i++)
            {    
                x[i] = src.nextDouble();
                src.nextLine();
                System.out.print(x[i] + " ");
            }
            
            fi.close();
        }catch (IOException e) {}
//Проверка элементов массива на возрастание
  int IER = 0; // если возрастание не нарушено 
        for(int i = 0; i < n; i++)
            if (x[i] >= x[i+1])
            {
                IER = 1;  //если возрастание нарушено
                break;
            }
//записываю ошибку в файл
        if(IER == 1)
        {    
            System.out.println("\rКод ошибки:" + IER);
            try
            {
                FileWriter fo = new FileWriter("File of output.txt");
                fo.write("IER=" + IER);
                fo.close();
            }catch(IOException e){}
            System.exit(IER);
        }
        
        IER=2;  //если точка xx не принадлежит отрезку [x[0] ... x[n-1]]
        System.out.println("\rВведите точку xx=");
        double xx = reader.nextDouble();
        if (xx >= x[0] && xx <= x[n-1])       
            IER = 0;   //если принадлежит отрезку [x[0] ... x[n-1]]
        if (IER == 2)
        {
            System.out.println("Код ошибки:" + IER);
            try
            {
                FileWriter fo = new FileWriter("File of output.txt");
                fo.write("IER=" + IER);
                fo.close();
            }catch(IOException e){}
            System.exit(IER);  
        }

Последний раз редактировалось Начинающий програм; 12.03.2013 в 15:17.
Начинающий програм вне форума Ответить с цитированием
Старый 12.03.2013, 15:20   #12
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Начнем отсюда:

Код:
        for(int i = 0; i < n; i++)
            if (x[i] >= x[i+1])
При n=21 и i=20 чему равно i+1?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 12.03.2013, 15:27   #13
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Допустим, что я исправлю вот так:
Код:
 for(int i = 0; i < n-1; i++)
            if (x[i] >= x[i+1])

Последний раз редактировалось Начинающий програм; 12.03.2013 в 15:43.
Начинающий програм вне форума Ответить с цитированием
Старый 12.03.2013, 16:33   #14
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Хоть это и не правильно, но я устранил проблему! Теперь как ввожу 5 то все норм. Может кто знает как изменить по-другому?

Было так
Код:
        int n = 21;
        double[] x = new double[n];
Изменил
Код:
        int n = 21;
        double[] x = new double[n+1];
        x[n] = 100; //добавил
Начинающий програм вне форума Ответить с цитированием
Старый 12.03.2013, 16:41   #15
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
 for(int i = 1; i < n; i++)
            if (x[i -1] >= x[i])
а массив объяви как было (без n+1)

Последний раз редактировалось GreenWizard; 12.03.2013 в 16:44.
GreenWizard вне форума Ответить с цитированием
Старый 12.03.2013, 17:10   #16
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Изменил, но теперь снова ошибка
Код:
        int n = 21;
        double[] x = new double[n];

        for(int i = 1; i < n; i++)
            if (x[i -1] >= x[i])
Код:
-5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 
Введите точку xx=
5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 21
	at numberzero.NumberZero.main(NumberZero.java:71)
Java Result: 1
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 4 секунды)
Начинающий програм вне форума Ответить с цитированием
Старый 12.03.2013, 17:19   #17
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

а что за код под if-ом?
GreenWizard вне форума Ответить с цитированием
Старый 12.03.2013, 17:41   #18
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Еще мне кажется, что вот это условие:

Код:
        if (xx >= x[0] && xx <= x[n-1])
было бы правильней записать в таком виде:

Код:
        if (xx >= x[0])&&(xx <= x[n-1])
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 12.03.2013, 20:28   #19
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Цитата:
а что за код под if-ом?
Это проверка элементов массива на возрастание
Начинающий програм вне форума Ответить с цитированием
Старый 12.03.2013, 20:34   #20
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Цитата:
Еще мне кажется, что вот это условие:

Код:
        if (xx >= x[0] && xx <= x[n-1])
было бы правильней записать в таком виде:

Код:
        if (xx >= x[0])&&(xx <= x[n-1])

В этом операторе похоже нельзя опускать основные скобки, без них ОШИБКА
Код:
   if (...)
Начинающий програм вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл For-Next заменить на For-Each-Next Romahah Microsoft Office Excel 7 23.11.2011 10:00
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34