Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Помогите решить задачи по фортрану

Ответить
Настройки темы
Разное - Помогите решить задачи по фортрану

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток. Не могли бы вы мне помочь решить две задачи. Вот условия:
1) даны натуральное число n, символы s[1],...,s[n]. исключить из последовательности s[1],...,s[n] группы символов, расположенные между скобками (,). сами скобки тоже должны быть исключены. предполагается что внутри каждой пары скобок нет других скобок. (нужно сделать на fortran).
2) в данной действительной квадратной матрице порядка n найти сумму элементов строки, в которой расположен элемент с наименьшим значением (минимальный элемент). предполагается, что такой элемент единственный. (нужно сделать на fortran).
Желательно алгоритм решения должен быть максимально прост. Очень надеюсь на вашу помощь и буду премного благодарен.

Отправлено: 20:36, 05-08-2009

 

Аватара для Tau_0

Ветеран


Сообщения: 6211
Благодарности: 1393

Профиль | Отправить PM | Цитировать


IkinG , Время прошло и если это ещё актуально…

Как старый фортранщик, мог бы и помочь, но смущают этические проблемы:
--- Вам это для отписки (лениво самому разбираться), а зачёт нужен --- одно дело.
Думаю, что не стоит поощрять халявщиков…

--- Хвосты поджали (припёрло и некогда), другое дело --- без вопросов сделаю.

Сами задачи выеденного яйца не стоят, но поставлены из рук вон плохо. Толи Вы такой молодец, толи те, кто Вас научить собрался ещё большие умники.

Фортран, для меня святое, хотя не для обучения не предназначен…

Ну да ладно, итак???

1. ANSI.стандарт ФОРТРАНа? Языку более 50 лет!!!
На чем реализовывать. В задаче 1 символьные (строковые), данные. В изначальном Базовом Фортране (до 77-го) таких данных нет, но выкрутится можно -- есть код Холлерита. Кодировка символов???

2. Задача 2. Тип данных: целые, плавающая точка? Да и точность не помешает.

Как я понимаю, нужно написать подпрограммы. Хотя для задачи 2 это может быть и функция.

3. Среда. Думаю, что FORTRAN 77 в MS DOS Вам хватит. Но кто знает.

Отправлено: 21:05, 21-08-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток. Да, помощь мне действительно необходима. Но задачу с матрицами я уже сделал, а вот задача со строками не получается. Ума не приложу как сделать. Я думаю что лучше воспользоваться встроенными функциями обработки текстовых элементов. Но в данном случае придется ограничить длину строки определённым числом, так как константа n не поддерживается при использовании функций. Я пробовал циклично выводить подстроку, но так получается коряво. При решении я пользуюсь книгой Бартеньева. Все задачи решаю на Фортран 90. Буду премного благодарен за помощь. С уважением IkinG

Отправлено: 00:14, 22-08-2009 | #3


Аватара для Tau_0

Ветеран


Сообщения: 6211
Благодарности: 1393

Профиль | Отправить PM | Цитировать


IkinG, Увы, я тоже хвостист…
Задержка на N… месяцев по вредным обстоятельствам --- не было Инета…

Решение ниже
/////////////////////////////////////////////////////////////

PROGRAM Cutting

PARAMETER Bunny ='PROGRAM Cutting (((()))))----()((())())(**** +++(123),+++ &
(12) +++(123)////(1234),,,,,(12345) 12345 -- Compaq Visual &
Fortran Version 6.1 Home Page !!!(Debugging+++Fortran+++Programs)!!!'

CHARACTER ( Len = 200 ) InString
!
!------------------------------------------------------------------------------
!

InString = Bunny

WRITE (*, *) InString

CALL COMPRESS (InString)

WRITE (*, *) InString

END PROGRAM Cutting

! =============================================================================
!
!
! COMPRESS.F90 Подпрограмма COMPRESS
! Верезает печатные символы между сбалансированными скобками и сжимает строку...
! Освободившийся хвост строки зачищается пробелами
!
! Аргумент (Фиктивный параметр)
! ----------------------------------------------------------------------------
! Str --- Строка символов-
! ВНИМАНИЕ ПОДПРОГРАММА "КАЛЕЧИТ ПАРАМЕТР" !!! *** *** *** +++ +++ ---
!
!-----------------------------------------------------------------------------
!

SUBROUTINE COMPRESS (Str)


CHARACTER Str * (*)

CHARACTER Char ! Промежуточная Рабочая переменная для хранения символа

PARAMETER Left = '(', Rigth = ')', Blank = ' '! Обозвали так скобки и пробел для удобства
! и прозрачности текста программы
! Символ пробела (Нужен для зачистки)
! Blank) = '\0'C Если нужна C - совместимость --- ESC нулями
! (Символические имена лучше литералов...)

INTEGER Head, Tail ! Индексы-Указатели на символ в строке...
! Одиночный Символ интерпретируется как подстрока в строке
! P.S. При выходе из подпрограммы длина сжатой подстроки Head - 1

INTEGER LenStr ! Полная длина строки символов

INTEGER IBlank ! Индексирует "вычищаемые" символы хвоста (после сжатия0

LOGICAL Closed ! Флаг/Переключатель ---.TRUE. --- В Текущем состоянии Скобки закрыты
! ---.FALSE.. --- В Текущем состоянии Левая скобка открыта

!
! +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
!
!
! ====================>>> Движение по строке слева направо ==========================>>>
! Обрабатываем строку посимвольно в DO-цикле от 1 до LEN(Str)
!
! Смысл Всего ЭТОГО в некотором Текущем состоянии
! -----------------------------------------------
!
!
! Head --- Текущий указатель на Голову
! ------------------------------------
! |
! | Tail --- Текущий указатель на Хвост
! | -----------------------------------
! | |
! | |
! ----------------------------------------- Строка символов
! | с1 | с2 | с3 | .. | .. | .. | .. | N | <===============
! -----------------------------------------
! 1 2 3 ... ... ... ... | Указатель на Последний символ строки N == LEN(Str)
! ------------------------------------------------------
! N == LenStr
!
!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
!

Head = 1
Closed =.TRUE.

LenStr = LEN(Str)
DO Tail = 1, LenStr
!-------------------------------------------------------
!Основной программный цикл по массиву одиночных символов
!передвигаемся слева направо.
! Нужные символы перебрасываются и хвоста в гллву...
!
! В некотором смысле Хвост из Головы растёт
! --- вначале совпадает с Головой, f затем
! (за счёт"рыхлости"строки символов) иуходит дальше...
!-------------------------------------------------------
!

Char = Str(Tail : Tail)


IF ( Char == Left ) THEN
Closed = .FALSE.
ELSEIF ( Char == Rigth ) THEN
Closed = .TRUE.
END IF


IF ( Closed .AND. (Char /= Rigth) ) THEN
! ---------------------------------------------------------------
! Если прапвая скобка закрыта и символ не правая скобка
! Только в этом случае сохраняем текущий символ ---
!
! Перебрасываем его из хвоста в голову и сдвигаем голову "вправо"
! ---------------------------------------------------------------
Str(Head : Head) = Char
Head = Head + 1
END IF

END DO


DO IBlank = Head, LenStr
! -------------------------------------------------
! Чистим хвост пробелами..---.
!
! Затираем мусор сразу за головой и до конца строки...
!(В Общем случае должен остаться "дубликат")
! перекидываемых символов
!
! Если не было лакун (Скобок),
! то Head > LenStr (Head == LenStr,+ 1)
! и данныый DO - цикл пропускается
! -------------------------------------------------
!


Str(IBlank : IBlank) = Blank ! Стандарт FORTRAN --- забиваем ненужный мусор пробелами

END DO


END SUBROUTINE COMPRESS

Отправлено: 16:01, 28-05-2010 | #4


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


прошу помочь. Сложение двух матриц МхN, FORTRAN 77
PROGRAM PR
CCCC SLOZHENIE DVUH MATRIC RAZMERA MxN
DIMENSION A(100,100),B(100,100),C(100,100)
INTEGER A,B,C
READ*,M,N
DO 1 I=1,M
DO 2 J=1,N
READ*,A(I,J),B(I,J)
2 CONTINUE
1 CONTINUE
PRINT*,'A(M,N)=',((A(I,J),I=1,M),J=1,N)
PRINT*,'B(M,N)=',((B(I,J),I=1,M),J=1,N)
CALL MATADD(A,B,C,M,N,4)
PRINT*,'C=',((C(I,J),I=1,M),J=1,N)
END

SUBROUTINE MATADD(A,B,C,M,N,LU)
DIMENSION A(LU,*),B(LU,*),C(LU,*)
INTEGER A,B,C
DO 5 I=1,M
DO 6 J=1,N
C(I,J)=A(I,J)+B(I,J)
6 CONTINUE
5 CONTINUE
RETURN
END

ВВОД ДАННЫХ, ВЫВОД ДАННЫХ/ОТВЕТ ЗАДАЧИ
СКОПИРОВАНО ИЗ BUSH:


2
2
1
2
3
4
5
6
7
8




A(M,N)= 1 5 3 7
B(M,N)= 2 6 4 8

C= 3 11 0 0


ОБРАЗЦЫ ВВОДИМЫХ МАТРИЦ

A B
1 5 2 6
3 7 4 8

ДОЛЖНО ПОЛУЧИТьСЯ

C
3 11
7 15

ПОЛУЧИЛОСь

C
3 11
0 0

БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ

Отправлено: 02:05, 31-05-2010 | #5


Аватара для Tau_0

Ветеран


Сообщения: 6211
Благодарности: 1393

Профиль | Отправить PM | Цитировать


wolf000,

Угу, на то он и Баш…
Там ВСЕГДА мозгов не хватает, чтобы что-нибудь поумнее придумать…

Замените утверждение
CALL MATADD(A,B,C,M,N,4) <==== CALL MATADD(A,B,C,M,N,100)

И будет Вам шасце…

Отправлено: 14:24, 31-05-2010 | #6


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо Tau 0, а ларчик просто открывался.

Отправлено: 21:49, 31-05-2010 | #7


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


тут есть кто нибудь? ._.

Отправлено: 19:47, 28-11-2012 | #8


Ветеран


Сообщения: 1849
Благодарности: 146

Профиль | Отправить PM | Цитировать


Иногда есть. А в чем проблемы?

Отправлено: 20:10, 28-11-2012 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Помогите решить задачи по фортрану

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Помогите решить задачу zdughi Программирование и базы данных 1 01-05-2009 06:03
помогите с алгоритмом решения задачи bool Хочу все знать 2 14-06-2008 18:43
Разное - помогите решить задачи на QBasic rockman90 Программирование и базы данных 1 28-12-2007 18:34
C/C++ - Помогите решить elektra192 Программирование и базы данных 14 19-12-2007 18:00
Помогите решить задачи Anton_pmg Программирование и базы данных 3 13-03-2006 09:16




 
Переход