Страницы

Поиск по вопросам

Показаны сообщения с ярлыком fortran. Показать все сообщения
Показаны сообщения с ярлыком fortran. Показать все сообщения

суббота, 11 января 2020 г.

Как убрать консольное окно при использовании функции System?

#cpp #c #консоль #fortran


Добрый день, уважаемые пользователи форума!

В Fortran-е, как и в C, есть функция System, которая передает команду командной строке,
при этом на экране на мгновение появляется консольное окно (Сама программа работает
без использования консоли - заранее прописано:
 #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup") ).

Собственно, вопрос в том, можно ли как-нибудь предотвратить появление этой консоли
при использовании функции System?

Заранее благодарю за ответы!
    


Ответы

Ответ 1



Не используйте функцию system. Используйте popen или CreateProcess, или другую функцию, которая предоставит создаваемому процессу поток вывода, так что ОС не придется создавать консоль для этого процесса.

пятница, 10 января 2020 г.

Вывод в консоль Fortran 66 (IV)

#консоль #fortran


1) Дайте пример кода, чтобы вывести сообщение в консоль по спецификации Fortran 66,
не сохраняя в переменных строку, а сразу оператор вывода со строкой.
Пример на языке С#: 

Console.WriteLine("Программист Программисту Программист");


2) Подскажите параметры чтения, чтобы не закрывал консоль, а ждал ввода любого символа
обязательно Fortran66 он же FortranIV.
пример на языке С#:

Console.ReadKey();


Спасибо. 
Работает!Но не забывайте, что там без наворотов доступно ток латиница А-Z       
                                                                       

program second

WRITE(*,10)
10    FORMAT('Программист Программисту Программист')
READ(*,20) 
20 FORMAT(//) 
end program second   

    


Ответы

Ответ 1



Как-то так: WRITE(*,10) 10 FORMAT('Программист Программисту Программист')

пятница, 14 июня 2019 г.

Как исправить ошибку Array 'f' cannot have a deferred shape?

Я пытаюсь решить СДУ с комплексной переменной методом Рунге-кутты 4 порядка, используя GNU Fortran Compiler. Как устранить ошибку "Array 'f' cannot have a deferred shape"?
program main integer, parameter :: n = 3, nsteps = 100 real, parameter :: a = 0.0, b =1.0 real :: x(0:n)
real :: d, hbar,W,omega0,omega,gamma1, E, delta d=3.335641E-30 hbar=1.0546e-34 omega = 2.482/(6.24e18*hbar) W = 1.25e10 omega0= 2.4743/(6.24e18*hbar) delta=0.0 gamma1= 1E15 E=(1/hbar)*W; x = (/1.0, 0.0, 0.0,0.0/) h = (b - a)/nsteps call rk4sys(n,h,x,nsteps) end program main

subroutine xpsys(n,x,f) complex, dimension (0:n) :: x, f integer n
f(0)= (-(0., 1.))*d*x(1)*E - x(2)*E+gamma1*x(4) ! 00+ f(1)= ((0., -1.)*(x(2)*(delta)+ d*E*(x(0)- x(3)))-gamma1*x(2)/2)!11 f(2)= (0., 1.)*(x(2)*(delta)+ d*E*(x(0)- x(3)))-gamma1*x(2)/2!10 f(3)= (0., 1.)*d*(x(1)*E- x(2)*E)-gamma1*x(3)!01
end subroutine xpsys
subroutine rk4sys(n,h,x,nsteps) complex :: x(0:n), f(:,:) real, allocatable :: y(:) integer :: i, k, n real :: h print *,0,x allocate (y(0:n), f(0:n,4)) out: do k = 1,nsteps call xpsys(n,x,f(0,1)) in1: do i = 0,n y(i) = x(i) + 0.5*h*f(i,1) end do in1 call xpsys(n,y,f(0,2)) in2: do i = 0,n y(i) = x(i) + 0.5*h*f(i,2) end do in2 call xpsys(n,y,f(0,3)) in3: do i = 0,n y(i) = x(i) + h*f(i,3) end do in3 call xpsys(n,y,f(0,4)) in4: do i = 0,n x(i) = x(i) + (h/6.0)* (f(i,1) + 2.0*(f(i,2) + f(i,3)) + f(i,4)) end do in4 print *, k, x end do out end subroutine rk4sys


Ответ

В процедуре rk4sys динамически-распределяемый массив f должен быть описан как allocatable
subroutine rk4sys(n,h,x,nsteps) complex :: x(0:n) complex, allocatable :: f(:,:) real, allocatable :: y(:) ...

вторник, 12 марта 2019 г.

Как убрать консольное окно при использовании функции System?

Добрый день, уважаемые пользователи форума!
В Fortran-е, как и в C, есть функция System, которая передает команду командной строке, при этом на экране на мгновение появляется консольное окно (Сама программа работает без использования консоли - заранее прописано: #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup") ).
Собственно, вопрос в том, можно ли как-нибудь предотвратить появление этой консоли при использовании функции System?
Заранее благодарю за ответы!


Ответ

Не используйте функцию system Используйте popen или CreateProcess, или другую функцию, которая предоставит создаваемому процессу поток вывода, так что ОС не придется создавать консоль для этого процесса.

четверг, 21 февраля 2019 г.

Вывод в консоль Fortran 66 (IV)

1) Дайте пример кода, чтобы вывести сообщение в консоль по спецификации Fortran 66, не сохраняя в переменных строку, а сразу оператор вывода со строкой. Пример на языке С#:
Console.WriteLine("Программист Программисту Программист");
2) Подскажите параметры чтения, чтобы не закрывал консоль, а ждал ввода любого символа обязательно Fortran66 он же FortranIV. пример на языке С#:
Console.ReadKey();
Спасибо. Работает!Но не забывайте, что там без наворотов доступно ток латиница А-Z
program second
WRITE(*,10) 10 FORMAT('Программист Программисту Программист') READ(*,20) 20 FORMAT(//) end program second


Ответ

Как-то так:
WRITE(*,10) 10 FORMAT('Программист Программисту Программист')