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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2013, 00:11   #1
ЮлияБаля
 
Регистрация: 08.10.2012
Сообщений: 6
По умолчанию программа на фортране с массивами

Я понимаю что это нечто но помогите пожалуйста я вообще не соображаю(
своими словами
есть уравнение его решение я предусмотрела но суть в том что теперь нужно подготовить программу, чтобы функцию С(х,р) при изменении значения аргумента X от значения xl до значения х2 с шагом Нх и аргумента Р - от p1 до р2 с шагом Нр. Результаты напечатайте в виде таблицы-матрицы: т.е. мы задает начальные знач х и р, шаг и кол-во шагов а потом когда все расчитается это должно быть выведено ввиде табл. Если возник ошибка (ноль в знаменателе) то в табл в этой графе будет набор звездочек.

При вводе данных организуйте контроль на достоверность: при положительном шаге Нx недопустимо, чтобы xl было боль¬ше х2, а при отрицательной величине ша-га Нx нельзя задавать xl < х2 (аналогично для Нp );

Вот я накидала немного но с выводом я не знаю что делать((
Код:
Program massiv
	N=5
	M=5
	Real p(N), x(N), c(N,M) 
	Character S(N,M)
	write(*,*) 'vvedite x1'
	read(*,*) x1
	write(*,*) 'vvedite x2'
	read(*,*) x2
	write(*,*) 'vvedite Hx'
	read(*,*) Hx
	write(*,*) 'vvedite p1'
	read(*,*) p1
	write(*,*) 'vvedite p2'
	read(*,*) p2
	write(*,*) 'vvedite Hp'
	read(*,*) Hp

	Nx=abs((x2-x1)/Hx)+1;
 	Np=abs((p2-p1)/Hp)+1;

	x(1)=x1
	p(1)=p1
 	do 1,i=2,Nx
1	x(i)=x1+(i-1)*Hx
	do 2,i=2,Np
2	p(i)=p1+(i-1)*Hp
	do 3,i=1,N
	do 3,j=1,M

3	buf1=x(i)*x(i)*x(i)-1.5
	if (buf1) 10,20,30
	

10	write(*,*) S(i,j)='*'
	goto 1000


20	write(*,*) S(i,j)='***'
	goto 1000
	
30	buf2=abs(x(i)*x(i)-(p(j)/(x(i)*x(i)-1.5)))-0.2
	
	if (buf2) 40,40,50

40	write(*,*) S(i,j)='**'
	goto 1000

50	buf3=log((abs(x(i)*x(i)-(p(j)/(x(i)*x(i)-1.5)))-0.2))

	if (buf3) 10,60,60
	
	
60	buf4=sqrt(log((abs(x(i)*x(i)-(p(j)/(x(i)*x(i)-1.5)))-0.2)))

	if (buf4) 70,80,70

80	write(*,*) S(i,j)='***'
	goto 1000
	
70	C(i,j)= (p(j)*x(i)-sqrt(buf1)-sin(x(i)))/(buf4)
	write(*,*) C
	
1000	end ?
	

	write(*,*)  'x/p    '
	do 4,j=2,M
4	write(*,*) p(j)








write(*,*) '*-net kornya iz otr, **-logarifma net, ***-0 v znamenatele'

Последний раз редактировалось ЮлияБаля; 13.03.2013 в 13:27.
ЮлияБаля вне форума Ответить с цитированием
Старый 13.03.2013, 07:46   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Интересно, какой Фортран позволяет так описывать константы?
Код:
N=5
M=5
А вот это:
Код:
Nx:=abs((x2-x1)/Hx)+1;
Np:=abs((p2-p1)/Hp)+1;
больше похоже на Паскаль, чем на Фортран.

И еще пару советов:
1. Оформляйте код, как это принято.
2. Не забывайте про комментарии.
3. Напишите точно, что Вам нужно.
s-andriano вне форума Ответить с цитированием
Старый 13.03.2013, 13:26   #3
ЮлияБаля
 
Регистрация: 08.10.2012
Сообщений: 6
По умолчанию

Я не знаю как правильно( я привыкла к паскалю и мне сложно переключится
А задание.. У меня было первое задание написать решение уравнения относит х и р.
А теперь нужно это задание первое преобразовать. т.е. теперь нужно решить уравнение на наборе значений х и р. Но еще есть шаг. т.е. например я ввожу х1=0.9 х2=3 а р1=0.7 р2=5 и по этим формулам рассчитывается шаг Nx:=abs((x2-x1)/Hx)+1;
Np:=abs((p2-p1)/Hp)+1;
а главная задача вывести результаты в виде таблицы когда х(1)=0.9 а p(1)=0.7, потом х(2)=0.9+шаг и р(2)=0,7+шаг и т.д.
ЮлияБаля вне форума Ответить с цитированием
Старый 14.03.2013, 16:10   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Давайте по порядку.
Какой стандарт Фортрана Вы используете?
Какой компилятор Вы используете?
Компилируется ли Ваша программа? Если нет - какова диагностика ошибок?

И по поводу первых двух строчек.
Я не помню навскидку, как точно записывается определение констант в Фортране, но, как мне кажется, в зависимости от диалекта, должно быть что-то вроде
Код:
integer (parameter N=5)
или
Код:
integer, parameter :: N=5
s-andriano вне форума Ответить с цитированием
Старый 14.03.2013, 19:26   #5
ЮлияБаля
 
Регистрация: 08.10.2012
Сообщений: 6
По умолчанию

Я пишу на 77 Фортране
Компилятор 95
Сегодня была у преподавателя и в таком виде программа компилируется
Program massiv

Real p(5), x(5), c(5,5)
Character S(5,5)
N=5
M=5
write(*,*) 'vvedite x1'
read(*,*) x1
write(*,*) 'vvedite x2'
read(*,*) x2
write(*,*) 'vvedite Hx'
read(*,*) Hx
write(*,*) 'vvedite p1'
read(*,*) p1
write(*,*) 'vvedite p2'
read(*,*) p2
write(*,*) 'vvedite Hp'
read(*,*) Hp

Nx=abs((x2-x1)/Hx)+1;
Np=abs((p2-p1)/Hp)+1;

x(1)=x1
p(1)=p1
do 1,i=2,Nx
1 x(i)=x1+(i-1)*Hx
do 2,i=2,Np
2 p(i)=p1+(i-1)*Hp
do 3,i=1,N
do 3,j=1,M

3 buf1=x(i)*x(i)*x(i)-1.5
if (buf1) 10,20,30


10 write(*,*) S(i,j)='*'
goto 1000


20 write(*,*) S(i,j)='***'
goto 1000

30 buf2=abs(x(i)*x(i)-(p(j)/(x(i)*x(i)-1.5)))-0.2

if (buf2) 40,40,50

40 write(*,*) S(i,j)='**'
goto 1000

50 buf3=log((abs(x(i)*x(i)-(p(j)/(x(i)*x(i)-1.5)))-0.2))

if (buf3) 10,60,60


60 buf4=sqrt(log((abs(x(i)*x(i)-(p(j)/(x(i)*x(i)-1.5)))-0.2)))

if (buf4) 70,80,70

80 write(*,*) S(i,j)='***'
goto 1000

70 C(i,j)= (p(j)*x(i)-sqrt(buf1)-sin(x(i)))/(buf4)
write(*,*) C

1000 end ?


write(*,*) 'x/p '
do 4,j=2,M
4 write(*,*) p(j)







'*-net kornya iz otr, **-logarifma net, ***-0 v znamenatele'

Последняя строчка записана через format правда не помню точно как(
ЮлияБаля вне форума Ответить с цитированием
Старый 14.03.2013, 20:43   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Повторюсь:
1. Оформляйте код, как это принято.
2. Не забывайте про комментарии.

1 - очень трудно читать.
2 - до меня не доходит логика, которой Вы руководствовались, когда писали программу. Поэтому комментарии нужны чтобы:
- понять, что же Вы хотите сделать,
- на Фортране пишете именно то, что хотели.

И еще: все это компилироваться точно не может, но, возможно, Ваш компилятор (кстати, Вы так и не написали о нем) что-то пропускает.
Но последний оператор в программе - только end и никогда не write.

Последний раз редактировалось s-andriano; 14.03.2013 в 20:46.
s-andriano вне форума Ответить с цитированием
Старый 15.03.2013, 00:12   #7
ЮлияБаля
 
Регистрация: 08.10.2012
Сообщений: 6
По умолчанию

Ладно ясно.. буду пытаться сама как нибудь! А то мы так все равно не разберемся(
ЮлияБаля вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на СИ с массивами abstractionhawk Помощь студентам 6 07.02.2013 02:27
программа на фортране kuki1 Фриланс 2 01.07.2011 11:26
Программа на фортране z1zu Помощь студентам 0 26.05.2011 10:33
программа на фортране. Правильно ли я написала? Mell Помощь студентам 0 21.11.2009 18:44
Программа по работе с массивами Kamikadze_666 Общие вопросы C/C++ 2 16.12.2008 18:29