evronika
1

Простое интегрирование, ошибки при вводе

15.02.2011, 15:40. Показов 1475. Ответов 1
Метки нет (Все метки)

Моя программа вроде как *верна* но при вводе выскакивают ошибки и значение функции не считается. Как её исправить?
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
       dimension x(20), y(20)
 4     write (6,*) 'vvedite n, x ot 0 do 2.4'
       read (5,*) n,x1, (x(i), y(i), I=1,n)
       if (x1.lt.0.or.x1.gt.2.4) go to 4
       do 2 j=1,n-1
       do 3 i=j+1,n
       y(i)=((x1-x(j))*y(i)-(x(i)-x(i))*y(j))/(x(i)-x(j))
       if (x1.ge.0.and.x1.le.2.4) x1=x1+0.1
  3    continue
  2    continue
       y1=y(n)
       write (5,*) y1
       stop
       end
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2011, 15:40
Ответы с готовыми решениями:

Ошибки при работе с динамическим массивом: неверный числовой формат при вводе
Выдаёт ошибку "неверный числовой формат при вводе" и "попытка разыменовать нулевой указатель"

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

Простое интегрирование по времени
while (t<=interval) { v=vp+((1-pa/p)*g-(9/2)*na*vp/(r*r*p))*dt; z=zp+vp*dt; ...

Охота на ошибки, при неправильном вводе
В общем проблема такая. Если есть переменная типа int, а туда с клавы вводят какой-нибудь символ,...

1
294 / 206 / 2
Регистрация: 20.02.2011
Сообщений: 551
20.02.2011, 23:42 2
Тю! А зачем Вам ручной ввод сразу двух массивов с клавиатуры? Это ж ошибок можно море насажать при вводе! Почему бы не прочитать все из файла?

Ладно! Если вводите с клавиатуры, то неверно записали условие ввода. Вы хотите за один раз вогнать в компьютер и число n, и x1, (x(i), y(i), I=1,n). Т.е. компьютер, еще сам не зная, каково это самое число n, должен как-то исхитриться заранее его угадать, чтобы в неявном цикле прочитать ровно n пар данных. Естественно, он блестяще проваливает эту задачу. Точнее, пользуется нулем, которым почти наверняка инициирована эта переменная при старте программы. Давайте уж все по-порядку набирать, маленькими порциями, вот так примерно:
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
      implicit none
      real*4 x(20), y(20), x1, y1
      integer n, i, j
 
 1    write(*,*) 'Vvedite chislo tochek (ne bolee 20)
      read(*,*) n
      if(n.gt.20) go to 1
 
 2    write(*,*) 'Vvedite x ot 0 do 2.4'
      read(*,*) x1
      if(x1.lt.0.or.x1.gt.2.4) go to 2
 
      write(*,*) 'Vvedite pary chisel x i y (n par)'
      do 3 j = 1,n
      write(*,*) 'Para nomer ', j
      read(*,*) x(j), y(j)
 3    continue
 
      do 4 j=1,n-1
      do 4 i=j+1,n
         y(i)=((x1-x(j))*y(i)-(x(i)-x(i))*y(j))/(x(i)-x(j))
         if (x1.ge.0.and.x1.le.2.4) x1=x1+0.1
 4    continue
 
      y1=y(n)
      write (5,*) y1
      stop
      end
Комментарии:

1 - Ввод и вывод написан через (*,*) - стандартное устройство ввода или вывода. Если Вы точно уверены, что у данного компилятора их номера 5 и 6, можно оставить, как было.

2 - две метки подряд у вложенных циклов можно и объединить в одну.

3 - переменные хорошо бы описывать все. Да еще и давать implicit none, чтобы отлавливать необъявленные переменные (обычно - результат опечаток).
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2011, 23:42
Помогаю со студенческими работами здесь

Вывод ошибки при неправильном вводе
Помогите пожалуйста, мне нужно чтобы к примеру при вводе первого числа 0 и второго 0, в конце...

Устранение возможной ошибки пользователя при вводе
Здравствуйте! Есть участок кода (если понадобится скину весь код), в самом начале есть выбор пункта...

При вводе латинских букв вывод ошибки
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Вывод ошибки при вводе неверных данных
Есть программа "Угадайка - 23", которая угадывает задуманное число в диапазоне от 0 до 22. Варианты...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru