0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 4
1

Перевести код с Паскаля на Фортран

29.11.2011, 22:06. Показов 2867. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
собсна, просто перевести код. желательно не усложнять программу.
заранее спасибо

Pascal
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
uses crt;
const
  a = 0;{нижний предел}
  b = 1;{верхний предел}
  e=0.0001;{точность}
function F(x:real):real;
begin
F:=exp(2*x)-exp(x)-ln(abs(x)+1)*cos(x);
end;
 
var n,i:integer;
    h,k,s1,s2: real;
begin
clrscr;
write('Количество разбиений n=');
readln(n);//начальное число
s1:=0;//итоговый интеграл
h:=(b-a)/n;//шаг
s2:=h*F(a);//текущий интеграл
repeat
s1:=s2;//запомним текущий
h:=(b-a)/n;
k:=a;//левый край
for i:=1 to n-1 do
 begin
  k:=k+h;//наращиваем
  if i mod 2 = 0 then s2:=s2+2*f(k)//считаем новый интеграл
  else s2:=s2+4*f(k);
 end;
s2:=(s2+f(a)+f(b))*h/3;//конечное значение
n:=n*2;//если точность не достигнута удваиваем количество разбиений
until abs(s1-s2)<=e;
write('Интеграл=',s2:0:6);
readln
end.
Добавлено через 23 часа 54 минуты
уже сам попытался сделать, но выдаёт некорректный результат.
помогите, пожалуйста исправить..

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
program lab5
 
real h,k,s1,s2,a,b,e 
integer n,i
 
 
print*, 'n'
read*, n
print*, 'a'
read*, a
 
print*, 'b'
read*, b
print*, 'e'
read*, e
 
s1=0
h=(b-a)/n
s2=h*f(a)
 
do while (abs(s1-s2)<=e)
 
s1=s2
h=(b-a)/n
k=a
 
 
  do i=1,(n-1)
  k=k+h
  if (i==0) then 
  s2=s2+2*f(k)
  else 
  s2=s2+4*f(k)
  endif
 enddo
 
 
s2=(s2+f(a)+f(b))*(h/3)
n=n*2
 
end do
 
 
 
print*, 's2=',s2
end
 
function f(x)
real f,x
f=(exp(2*x))-(exp(x))-((alog(abs(x)+1))*cos(x))
end
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2011, 22:06
Ответы с готовыми решениями:

Каким образом можно перевести код Паскаля в код Фортран?
Здравствуйте уважаемые программисты! Может быть банальная, но довольно сложная проблема - перевод из одного кода в другой! Как его можно...

К сможет перевести простой код с Паскаля на Фортран?
С Фортрана на Паскаль можно конвертировать с помощью разных программ а обратной не нашла. Переведите пожалуйста. program A; var a,...

Перевести с Паскаля на Фортран
uses crt; type Link = ^Number; Number = record ID: integer; Cislo : real; NextRec: Link; end; Как это написать на...

9
 Аватар для BakinEugene
35 / 35 / 0
Регистрация: 26.09.2011
Сообщений: 143
29.11.2011, 22:17 2
В паскальной программе:
Pascal
1
if i mod 2 = 0 then
А у вас:
Fortran
1
if (i==0) then
Кроме того, я подозреваю, что в условии while должно стоять
Fortran
1
(abs(s1-s2)>=e)
WHILE - выполнять, пока выполняется условие
UNTIL - видимо, выполнять, пока условие не выполнится.
Слова то разные.
0
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 4
29.11.2011, 22:40  [ТС] 3
исправил, и тогда s2 равно нулю.

насчёт i==0, я думаю не существенно.
можно и меньше либо равно погрешности написать..
0
 Аватар для BakinEugene
35 / 35 / 0
Регистрация: 26.09.2011
Сообщений: 143
29.11.2011, 23:49 4
Цитата Сообщение от energyman Посмотреть сообщение
исправил, и тогда s2 равно нулю.
насчёт i==0, я думаю не существенно.
Что вы исправили и что несущественно?
0
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 4
30.11.2011, 00:13  [ТС] 5
не существенно какое условие: приблизительно равен нулю, равен погрешности, или меньше погрешности, или до 3-й цифры после запятой..

Добавлено через 46 секунд
исправил на знак ">"
0
 Аватар для BakinEugene
35 / 35 / 0
Регистрация: 26.09.2011
Сообщений: 143
30.11.2011, 13:09 6
Не понял ничего.

В оригинальной программе
Pascal
1
if i mod 2 = 0 then
- Это эквивалентно
Fortran
1
if (MOD(i,2) == 0) THEN
, а вовсе не равенству i нулю.

А знак я предлагал поменять с "<" на ">" - потому что в Фортране программа будет выполняться пока (WHILE) НЕ достигнута необходимая точность, т.е. разница БОЛЬШЕ точности.
0
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 4
30.11.2011, 23:04  [ТС] 7
собсна, огромное вам спасибо за помощь.
знак, кстати менять не надо было. как показала практика, while и until одно и тоже.
а вот с командой mod вы написали всё верно.

есть ещё один вопрос, для самообразования: что именно эта команда выполняет? отбрасывает определённое количество цифр после запятой??
0
 Аватар для BakinEugene
35 / 35 / 0
Регистрация: 26.09.2011
Сообщений: 143
01.12.2011, 20:50 8
Цитата Сообщение от energyman Посмотреть сообщение
знак, кстати менять не надо было. как показала практика, while и until одно и тоже.
Не верю, но вам виднее.


Цитата Сообщение от energyman Посмотреть сообщение
есть ещё один вопрос, для самообразования: что именно эта команда выполняет? отбрасывает определённое количество цифр после запятой??
Для самообразования есть гугль и фортрановские стандарты.
А mod возвращает остаток от деления.
0
0 / 0 / 1
Регистрация: 12.09.2011
Сообщений: 5
07.12.2011, 00:19 9
program semistrovaia4;

const
Nmass = 100;

var
X: array [1..Nmass] of integer;
sum, N, i, c1, c2: integer;
max: real;

begin
Writeln('Введите число N');
readln(N);
for i := 1 to N do
begin
write('X[', i, ']=');
readln(X[i]);
end;
max := x[1];
c1 := 0;
c2 := 1;
for i := 1 to N do
begin
if (X[i] > max) then
begin
max := x[i];
c2 := i;
end;
if((X [i] <> max) and (x[i] mod 3 = 0) and (c1 < c2)) then
begin
c1 := i;
end;
if(X [i] < 0) then
begin
sum := sum + x[i];
end;
end;
if(c1 > c2) then
x[c1] := abs(sum)
else
writeln('Нет такого элемента , массив не изменный');
writeln(' Замена числа кратного трем,на сумму модуля отрицательных чисел стояшего после мах работает:');
for i := 1 to N do
begin
write('X[',i,']=',X[i],' ');
end;
end.

Добавлено через 51 минуту
Pascal
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
program semistrovaia4;
 
const
Nmass = 100;
 
var
X: array [1..Nmass] of integer;
sum, N, i, c1, c2: integer;
max: real;
 
begin
Writeln('Введите число N');
readln(N);
for i := 1 to N do
begin
write('X[', i, ']=');
readln(X[i]);
end;
max := x[1];
c1 := 0;
c2 := 1;
for i := 1 to N do
begin
if (X[i] > max) then
begin
max := x[i];
c2 := i;
end;
if((X [i] <> max) and (x[i] mod 3 = 0) and (c1 < c2)) then
begin
c1 := i;
end;
if(X [i] < 0) then
begin
sum := sum + x[i];
end;
end;
if(c1 > c2) then
x[c1] := abs(sum)
else
writeln('Нет такого элемента , массив не изменный');
writeln(' Замена числа кратного трем,на сумму модуля отрицательных чисел стояшего после мах работает:');
for i := 1 to N do
begin
write('X[',i,']=',X[i],' ');
end;
end.
0
1 / 1 / 0
Регистрация: 03.11.2010
Сообщений: 18
04.01.2012, 20:49 10
Здравствуйте,уважаемые эксперты.Прошу перевести эти программы на фортран:

Pascal
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
uses crt;
var a,b,x,y,z,t:real;
begin
writeln('Введите значения a,b,x');
read(a,b,x);
if a>b then y:=a*x*x*x+b*b+x*x*x*x*x
else 
 begin
  if x<>0 then 
   begin
    if cos(a/2)=0 then y:=-1
    else y:=(sin(a/2)/cos(a/2))*b*x 
   end
  else y:=-1;
 end;
if y>0 then write('y>0')
else if y=0 then write('a=',a:0:2,' b=',b:0:2,' x=',x:0:2)
else
 begin
  t:=exp(2*x)+3*a*a*a*b; 
  if t=0 then z:=0
  else if t>0 then  z:=exp(ln(t)/5)
  else z:=-exp(ln(-t)/5);
  write('z=',z:0:2);
 end;
end.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses crt;
const a=2.8;
      b=-0.3;
      c=4;
var xn,xk,x,h,y:real;
begin
xn:=0.8;
xk:=2.8;
h:=0.2;
x:=xn;
while x<xk+h/2 do
 begin
  if x<1.4 then y:=(a+b*x)/sqrt(x*x+4)
  else if x=1.4 then y:=a*x*x+b*x+c
  else y:=a/x+exp(a*b);
  writeln('x=',x:4:1,'  y=',y:5:2);
  x:=x+h;
 end;
end.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
uses crt;
var n,i,k:integer;
begin
repeat
write('Введите натуральное число >=3 n=');
read(n);
until n>2;
i:=3;
k:=0;
while i<=n do
 begin
  k:=k+1;
  write(i,' ');
  if k mod 10=0 then writeln;
  i:=i+3;
 end;
end.
Pascal
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
uses crt;
const nmax=15;
var a:array[1..nmax] of real;
    n,i,imn,k:integer;
    mn,mx,s:real;
begin
repeat
write('Размер массива до ',nmax,' n=');
read(n);
until n in [1..nmax];
writeln('Введите элементы массива:');
for i:=1 to n do
 begin
  write('a[',i,']=');
  read(a[i]);
 end;
clrscr;
writeln('Исходный массив:');
mn:=a[1];
mx:=a[1];
imn:=1;
for i:=1 to n do
 begin
  write(a[i]:0:2,' ');
  if a[i]<mn then
   begin
    mn:=a[i];
    imn:=i;
   end;
  if a[i]>mx then mx:=a[i];
 end;
writeln;
writeln('Минимальный элемент=',mn:0:2,' его индекс=',imn);
writeln('Максимальный элемент=',mx:0:2);
repeat
write('Сколько последних элементов включить в сумму от 1 до ',n,' k=');
read(k);
until k in [1..n];
s:=0;
for i:=n downto n-k+1 do
s:=s+a[i];
writeln('сумма последних ',k,' элементов=',s:0:2);
a[imn]:=s;
writeln('замена минимального суммой:');
for i:=1 to n do
write(a[i]:0:2, ' ');
writeln;
if mn>=0 then
 begin
  writeln('Минимальный элемент >=0');
  for i:=1 to n do
  a[i]:=a[i]*mn*mn;
 end
else
 begin
  writeln('Минимальный элемент <0');
  for i:=1 to n do
  a[i]:=a[i]*mx*mx;
 end;
for i:=1 to n do
write(a[i]:0:2,' ');
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.01.2012, 20:49
Помогаю со студенческими работами здесь

Перевести из паскаля в фортран
program KAV; var a,b,c,r:real; begin writeln ('vvedite a,b,c'); readln (a,b,c); If (a&lt;&gt;0) and (b&lt;&gt;0) and (c&lt;&gt;0) then begin ...

Перевести программу с паскаля на фортран, используя Параллельные вычисления и OpenMP
Есть несложная программа на паскале, надо ее перевести в фортран с помощью параллельных вычислений и библиотеки OpenMP и MPI. Готовых...

Как перевести код с паскаля на Java. Пытался сам но код не хочет работать переведенный
А сам код на паскале работает. Вот код на паскале var i,j,m,c,d: integer; A:array of integer; begin c:=1; ...

Перевести код с Паскаля на С#
Помогите пожалуйста переделать код с Паскаля uses Graph, Crt; type mas= array of longint; var Gd,Gm, N,M, i,j, k,l, ...

Перевести код с Паскаля на C#
program lm; uses crt; Type P= array of integer; M= array of integer; Var a:p; b:m; i,k,n,x:integer; begin


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

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

Новые блоги и статьи
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
Apache Airflow для оркестрации и автоматизации рабочих процессов
Mr. Docker 16.03.2025
Управление сложными рабочими процессами — одна из главных головных болей инженеров данных и DevOps-специалистов. Представьте себе: каждый день нужно запускать десятки скриптов в определенной. . .
Оптимизация приложений Java для ARM
Javaican 16.03.2025
ARM-архитектура переживает настоящий бум популярности в технологическом мире. Когда-то воспринимаемая исключительно как решение для мобильных устройств и встраиваемых систем, сегодня она штурмует. . .
Управление состоянием в Vue 3 с Pinia и Composition API
Reangularity 16.03.2025
Когда я начал работать с Vue несколько лет назад, мне казалось достаточным использовать простую передачу данных через props и события между компонентами. Однако уже на среднем по сложности проекте. . .
Введение в DevSecOps: основные принципы и инструменты
Mr. Docker 16.03.2025
DevSecOps - это подход к разработке программного обеспечения, который объединяет в себе принципы разработки (Dev), безопасности (Sec) и эксплуатации (Ops). Суть подхода заключается в том, чтобы. . .
GitHub Actions vs Jenkins: Сравнение инструментов CI/CD
Mr. Docker 16.03.2025
В этой битве за эффективность и скорость выпуска программных продуктов ключевую роль играют специализированные инструменты. Два гиганта в этой области — GitHub Actions и Jenkins — предлагают разные. . .
Реактивное программировани­е с Kafka Stream и Spring WebFlux
Javaican 16.03.2025
Реактивное программирование – это программная парадигма, ориентированная на потоки данных и распространение изменений. Она позволяет выражать статические или динамические потоки данных и. . .
Простая нейросеть на КуМир: Учебное пособие по созданию и обучению нейронных сетей
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru