Форум программистов, компьютерный форум, киберфорум
Fortran
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 19.10.2019
Сообщений: 30
1

Подключение внешних подпрограмм

15.12.2019, 09:23. Показов 1430. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здавствуйте, у меня было 9 программ и их нужно было переделать в подпрограммы и отдельно создать программу с возможностью выбора в селекте данных подпрограмм. при компиляции главной программы пишет что не может открыть подключенные файлы

это главная программа
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
program itog
implicit none 
integer :: i, j
real :: s, h, v, Sb, P, sk , b, x, Fx, u
real :: x1, x2, y1, y2, x3, y3, x4, y4, d1, d2, d3, d4
integer,dimension(1:20) :: a
integer, dimension (1:5,1:5) :: Y, y1
real, parameter :: d=63.80, e=69.99, pi=3.14
 
open (2, file="itog.out")
 
print *,"choose lab number"
do
read(*,*) menu_number
if (check(menu_number)==1) then
exit
else
print*, "Ошибка в введении номера задания, введите номер заново"
end if
end do
select case (i) !МЕНЮ 
case (1) !лабораторная 1
 
open (1,file="lab1-.in")
read(1,*) s
read (1,*) h
read (1,*) v
close(1)
call lab1 (s, h, v, Sk, Sb, P)
write(2,*) "squares=", sb, sk, p
 
 
case(2)! лаболаторная 2
 
open (1, file="lab-02-task-04x.in" )
read (1,*) b
read (1,*) x
read (1,*) u
close(1)
call f(u,b,x,Fx)
write(2,*) "function value=", fx
 
case(3)! лаболаторная 3
open(1,file="lab-03-task-x.in")
read(1,*) x
read(1,*) s
close(1)
call sk(x,s,f)
write(2,*)  "fuction value2=" F
 
 
case(4)!лаболаторная 4
real :: x, y 
integer :: R, R1 
real, parameter :: d=63.80, e=69.99
open(2,file="lab-4-task-R.in.f90")
read(1,*) R
close(1)
call bank (R1,x,y)
write(2,*) "RUB=", R1  ,"dollar= ", x, "euro= ", y 
 
 
case(5)!лаболаторная 5
open(1,file="lab-5-task-f.in")
read(1,*) f
read(1,*) n
read(1,*) t
close(1)
call ameba (f,t,n)
write(2,*) n
print *, "*"
 
case (6) !лаболаторная 6.1
open(1,file="lab-6.1in")
do i=1,20
read(1,*) a(i)
enddo
close(1)
 call area1(a)
print*, "ВЫВОД МАССИВА"
write(2,*) "ОДНОМЕРНЫЙ МАССИВ" a(i)
 
case(7)!лаболаторная 6.2
 open(1,file="lab-6.2-task-.in")
 open(2,file="lab-6.2-k.in")
 read (2,*) k
 do i=1,5
 read (1,*) (y(i,j), j=1,5)
 end do
close(1)
call lb62(y,k,y1)
do i=1,5
 write (2,*) (y(i,j),j=1,5)   
 end do
 write (2,*) "massiv number two"
 do i=1,5
write (2,*) (y1(i,j),j=1,5) 
 end do
print *, "*"
 
case (8)
open (1,file="lab-08-task-07tr1.in")
do i=1,3
read (1,*) a
 
read (1,*)b 
 
read (1,*) h
 call lab8(a,b,h,p,summa)
end do
write (2,*) "Summa perimetrov trapeciy=" , summa
 
close(1)
print *, "*"
case(9)
open(1, file="lab-09-task-08.in")
read (1,*) x1, x2, y1, y2, x3, y3, x4, y4 
close(1)
call L8(x1, x2, y1, y2, x3, y3, x4, y4, d1, d2, d3, d4, p) 
 
write(2,*) "p=", p
 print *, "9"
 end select 
 end program itog
include "lab1vvod.f90"
include "laba2vvod1.f90"
include "laba3vvod.f90"
include "lab4vvod.f90"
include "lab5.f90"
include "lab6vvod.f90"
include "lab62vvod.f90"
include "lab-08.f90"
include "lab9..f90"
подпрограммы все такого вида

Fortran
1
2
3
4
5
6
7
subroutine lab1 (s, h, v, Sk, Sb, P)
implicit none
real :: s, h, v, Sb, P, sk
  Sk=2*(v*s+s*h+v*h)
  Sb=2*h*(s+v)
  P=s*h*v
  end subroutine lab1
и еще не знаю можно ли так делать, но вот

Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
subroutine  L8(x1, x2, y1, y2, x3, y3, x4, y4, d1, d2, d3, d4, p) 
real :: x1, x2, y1, y2, x3, y3, x4, y4, d1, d2, d3, d4, p
call vector(x, y, x0, y0, d1)
 call vector(x, y, x0, y0, d2)
 call vector(x, y, x0, y0, d3)
 call vector(x, y, x0, y0, d4)
p=d1+d2+d3+d4
contains 
subroutine vector(x, y, x0, y0, d)
real::  y, x0, y0, d, x
d=sqrt(((x-x0)**2)+((y-y0)**2))
end subroutine vector
end subroutine  L8





прошу прощения за некорректный код в прошлой теме!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2019, 09:23
Ответы с готовыми решениями:

Организация внешних подпрограмм на языке ассемблера
Составить внешнюю подпрограмму .Подпрограмму оформить в отдельном модуле. Для проведения отладки...

Подключение внешних *.cs
Добрый день, возник каким образом можно добавить в проект сторонние *.cs файлы которые по задумке...

Подключение внешних стилей
<!DOCTYPE html> <html> <head> <title>codebra</title> <link type = "thr/css" rel =...

Подключение внешних файлов
Здравствуйте!на visual C++ программирую недавно.Каким образом можно подключить к проге файлы типа...

2
160 / 140 / 10
Регистрация: 21.10.2012
Сообщений: 451
15.12.2019, 11:32 2
Тенька,

Можно каждую программу в виде модуля оформить,
откомпилировать отдельно
и подключать в главной программе
use include "lab1vvod.f90
use include "linclude "lab<номер>vvod.f90
...
Как вариант можно все лабы объединить в один файл, к примеру lab_all.f90,
опять же сделать модулем, компилировать. Подключение такое же.
use "lab_all.f90,

Если не устраивает раздельная компиляция, текст модуля можно разместить выше по тексту главной программы.
Но вообще нужно каждую программу оформить в процедуру или функцию.
В итоговой программе только одна конструкция должна быть
Fortran
1
2
3
4
program test
    ! use .... или incude...
    ! некий код
end program test
Добавлено через 5 минут
Тенька,

Код не форматированный не читается совсем.
Выделяйте размещаемый код блоком,
и жмите кнопку FORTRAN в верхнем ряду.
0
0 / 0 / 0
Регистрация: 19.10.2019
Сообщений: 30
15.12.2019, 13:10  [ТС] 3
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
program itog
implicit none 
integer :: i, j
real :: s, h, v, Sb, P, sk , b, x, Fx, u
real :: x1, x2, y1, y2, x3, y3, x4, y4, d1, d2, d3, d4
integer,dimension(1:20) :: a
integer, dimension (1:5,1:5) :: Y, y1
real, parameter :: d=63.80, e=69.99, pi=3.14
 
open (2, file="itog.out")
 
print *,"choose lab number"
do
read(*,*) menu_number
if (check(menu_number)==1) then
exit
else
print*, "Ошибка в введении номера задания, введите номер заново"
end if
end do
select case (i) !МЕНЮ 
case (1) !лабораторная 1
 
open (1,file="lab1-.in")
read(1,*) s
read (1,*) h
read (1,*) v
close(1)
call lab1 (s, h, v, Sk, Sb, P)
write(2,*) "squares=", sb, sk, p
 
 
case(2)! лаболаторная 2
 
open (1, file="lab-02-task-04x.in" )
read (1,*) b
read (1,*) x
read (1,*) u
close(1)
call f(u,b,x,Fx)
write(2,*) "function value=", fx
 
case(3)! лаболаторная 3
open(1,file="lab-03-task-x.in")
read(1,*) x
read(1,*) s
close(1)
call sk(x,s,f)
write(2,*)  "fuction value2=" F
 
 
case(4)!лаболаторная 4
real :: x, y 
integer :: R, R1 
real, parameter :: d=63.80, e=69.99
open(2,file="lab-4-task-R.in.f90")
read(1,*) R
close(1)
call bank (R1,x,y)
write(2,*) "RUB=", R1  ,"dollar= ", x, "euro= ", y 
 
 
case(5)!лаболаторная 5
open(1,file="lab-5-task-f.in")
read(1,*) f
read(1,*) n
read(1,*) t
close(1)
call ameba (f,t,n)
write(2,*) n
print *, "*"
 
case (6) !лаболаторная 6.1
open(1,file="lab-6.1in")
do i=1,20
read(1,*) a(i)
enddo
close(1)
 call area1(a)
print*, "ВЫВОД МАССИВА"
write(2,*) "ОДНОМЕРНЫЙ МАССИВ" a(i)
 
case(7)!лаболаторная 6.2
 open(1,file="lab-6.2-task-.in")
 open(2,file="lab-6.2-k.in")
 read (2,*) k
 do i=1,5
 read (1,*) (y(i,j), j=1,5)
 end do
close(1)
call lb62(y,k,y1)
do i=1,5
 write (2,*) (y(i,j),j=1,5)   
 end do
 write (2,*) "massiv number two"
 do i=1,5
write (2,*) (y1(i,j),j=1,5) 
 end do
print *, "*"
 
case (8)
open (1,file="lab-08-task-07tr1.in")
do i=1,3
read (1,*) a
 
read (1,*)b 
 
read (1,*) h
 call lab8(a,b,h,p,summa)
end do
write (2,*) "Summa perimetrov trapeciy=" , summa
 
close(1)
print *, "*"
case(9)
open(1, file="lab-09-task-08.in")
read (1,*) x1, x2, y1, y2, x3, y3, x4, y4 
close(1)
call L8(x1, x2, y1, y2, x3, y3, x4, y4, d1, d2, d3, d4, p) 
 
write(2,*) "p=", p
 print *, "9"
 end select 
 end program itog
include "lab1vvod.f90"
include "laba2vvod1.f90"
include "laba3vvod.f90"
include "lab4vvod.f90"
include "vvod 5lab.f90"
include "lab6vvod.f90"
include "lab62vvod.f90"
include "lab-08.f90"
include "lab9..f90"
Добавлено через 1 минуту
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
subroutine  L8(x1, x2, y1, y2, x3, y3, x4, y4, d1, d2, d3, d4, p) 
real :: x1, x2, y1, y2, x3, y3, x4, y4, d1, d2, d3, d4, p
call vector(x1, y1, x2, y2, d1)
 call vector(x2, y2, x3, y3, d2)
 call vector(x3, y3, x4, y4, d3)
 call vector(x1, y1, x4, y4, d4)
p=d1+d2+d3+d4
contains 
subroutine vector(x, y, x0, y0, d)
real::  y, x0, y0, d, x
d=sqrt(((x-x0)**2)+((y-y0)**2))
end subroutine vector
end subroutine  L8
0
15.12.2019, 13:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2019, 13:10
Помогаю со студенческими работами здесь

Подключение внешних стилей
Короче, если в шапку вставляю код, то нормально работает, как только выношу его во внешний сразу...

Подключение внешних библиотек
Доброго времени. И снова я к сообществу за помощью. Подскажите, как упаковываются исходники?...

Подключение внешних компонент
Всем доброе утро! Это снова я и снова с внешними компонентами... Не получается и всё тут. ...

Подключение внешних обработок
Подскажите где можно почитать теорию о подключении внешних обработок к другим базам?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru