Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 28 • Страница 1 из 21  2  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
Уважаемые программисты помогите мне в фортраном.
Имеются у меня файлы .тхт, в них таблицы. Я сделал так чтобы таблицы читались и записывались в новый рабочий файл. И теперь мне надо сделать поиск в таблице по имени(1-й столбец). Это должно выглядеть примерно так: на экране появляется надпись "Введите шифр опоры", мы вводим, далее происходит поиск в таблице этого имени и оно выводится на экран и в добавок по этому имени производятся некие расчеты и тоже выводятся.
Как это сделать?:spy: Помогите пожалуйста.

_________________
Well, hello there.
Do you want to see my magical staff?



Партнер
 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
И как они у тебя читаются? так в чем проблема прочесть первый элемент?

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
Ну я делаю так: через open() открываю файл. Потом Read(тут формат ставлю и столбцы проставляю), Потом точно так же Write() и все это у меня записывается в файл nfrez.dat И как мне сделать поиск имени в Nfrez?

_________________
Well, hello there.
Do you want to see my magical staff?


 

Member
Статус: Не в сети
Регистрация: 01.12.2004
Откуда: BY, Gomel
Душегуб странно, значит столбцы считать и записать в новый файл можешь, а сравнить содержимое этих столбцов нет? В чём проблема-то?

_________________
А не ударить ли нам внезапно кувалдой с тыла? (мысль, рождённая во время ремонта)


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
L.E.X.X. Ну я Фротран еще толком не знаю)) вы бы мне пример привели какойнибудь с коментариями.

_________________
Well, hello there.
Do you want to see my magical staff?


 

Member
Статус: Не в сети
Регистрация: 01.12.2004
Откуда: BY, Gomel
Душегуб давно это было... Если б хоть конкретно рассказал в чём проблема, тода может и помог бы. Почитай здесь, может поможет.

_________________
А не ударить ли нам внезапно кувалдой с тыла? (мысль, рождённая во время ремонта)


 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
:spy:
Душегуб писал(а):
Потом Read(тут формат ставлю и столбцы проставляю),

так в каком месте ты проставляешь столбец, по которому искать надо, ты туда что вставляешь из первого файла?

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Member
Статус: Не в сети
Регистрация: 01.12.2004
Откуда: BY, Gomel
Душегуб по идее, у тебя "шифр опоры" - целое n-значное число, я так понимаю - первое в строке. Тогда, на вскидку:
Код:
        OPEN(3,file="имя созданного файла",form='formatted',recl=60)
      DO 10 i=1,m
      READ(3,100)x
10    IF (x.eq.y) THEN
      ...
      ENDIF
100   FORMAT(i6)

где m - количество строк,
i6 - формат при считывании, т.е. считается 6 (к примеру) первых цифер в строке,
x - считываемое число,
y - значение "шифра".
Главное: не забывать правильно указывать параметры форматирования.

_________________
А не ударить ли нам внезапно кувалдой с тыла? (мысль, рождённая во время ремонта)


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
L.E.X.X.
У меня все описывается как Character*15 shifr_op(30)
Первый столбец с шифром у меня занимает 8-12 символов, но самого шифра там на 5-10 символов, а остальные как я понял заполняются пробелами и эти пробелы надо как-то отрезать.
armadillo писал(а):
так в каком месте ты проставляешь столбец, по которому искать надо, ты туда что вставляешь из первого файла?

Шифр у меня естественно первым идет, а вставляется туда что-то типа УБ220-9+5.

_________________
Well, hello there.
Do you want to see my magical staff?


 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
так в чем проблема кроме как найти или написать функцию trim?

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
armadillo
А это что за функция?

_________________
Well, hello there.
Do you want to see my magical staff?


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
Короче вот текст моей проги, чето у меня не работает поиск((
program test
character*30 a
character*15 b(21)
character*15 c
integer samp1,samp2,Ierr,mat,k,i
character*15 sample(5), Name
Character*15 shifr_op(21)
Character*15 shifrop(21)
character*1 mat_ru(21)
Character*80 Mes_Ier
COMMON /BLPASP/
* T2(21), T3(21),T4(21),T5(21),T6(21),
* T7(21),T8(21),T9(21),T10(21),T11(21),
* T12(21),T13(21),shifrop
data sample/20H/1gf,2fo,3kf,4fr,5ee/

nfrez=3

open(nfrez,file='frez.dat')
nfdat=2
open(nfdat,file='test.txt')
read(nfdat,'(a94)') a
write(nfrez,'(a94)') a
read(nfdat,*) Nrow,Ncol
write(nfrez,*) 'îïîðû ÂË 35 êâ '
write(nfrez,*) 'Nrow, Ncol', Nrow ,Ncol
do i=1,Nrow-1

read(nfdat,'(a8,2e8.0,10e7.0)') Shifr_op(i),
* T2(i), T3(i),T4(i),T5(i),T6(i),
* T7(i),T8(i),T9(i),T10(i),T11(i),T12(i),T13(i)
write(nfrez,'(a8,12(1x,g10.4))') Shifr_op(i),
* T2(i), T3(i),T4(i),T5(i),T6(i),
* T7(i),T8(i),T9(i),T10(i),T11(i),T12(i),T13(i)
enddo

print '(a20)','vvedite marku opori'
read(*,'(a15)') a
* samp1=index(a,' ')
* write(*,*) samp1
open(nfdat,file='test.txt')
do i=1,21
read(c8) shifr_op(i)
b(i)=Trim(shifr_op(i))
b(i)=shifr_op(i)
if(a==b(i)) write(*,*) b(i)

enddo


А ВОТ текст файла TEST.TXT
шифр H h1 h2 h3 h4 a1 a2 a3 b1 b2 b3 d
19 13
П35-1 19000 15000 0 3000 0 2000 0 0 3300 2000 0 1800
П35-1т 20900 14000 0 3000 2900 2000 0 0 3300 2000 0 1800
П35-1пг 23000 0 0 3000 5000 2000 0 0 3300 2000 0 1800
П35-2 21000 14000 3000 3000 0 2000 3300 2000 2000 3300 2000 1800
П35-2т 22900 12000 3000 3000 2900 2000 3300 2000 2000 3300 2000 1800
П35-2пг 25000 11000 3000 3000 5000 2000 3300 2000 2000 3300 2000 1800
ПС35-2 18000 9000 3000 3000 0 2000 3300 2000 2000 3300 2000 1800
У351 14000 10000 0 3000 1000 2800 0 0 3500 2800 0 1500
У35-1+5 19000 15000 0 3000 1000 2800 0 0 3500 2800 0 4200
У35-1т 17950 10000 0 3000 4950 2800 0 0 3500 2800 0 5700
У35-1т+5 22950 15000 0 3000 4950 2800 0 0 3500 2800 0 4200
У35-2 17500 9500 3000 3000 1000 2800 3500 2800 2800 3500 2800 5700
У35-2+5 22500 14500 3000 3000 1000 2800 3500 2800 2800 3500 2800 4200
У35-2т 21450 10500 3000 3000 4950 2800 3500 2800 2800 3500 2800 5700
У35-2т+5 26450 15500 3000 3000 4950 2800 3500 2800 2800 3500 2800 3900
У35-4 17500 9500 3000 3000 1000 2100 2800 2100 2100 2800 2100 5416
У35-4+5 22500 15500 3000 3000 1000 2100 2800 2100 2100 2800 2100 6616
У35-4+9 26500 19500 3000 3000 1000 2100 2800 2100 2100 2800 2100 1111

_________________
Well, hello there.
Do you want to see my magical staff?


 

Member
Статус: Не в сети
Регистрация: 01.12.2004
Откуда: BY, Gomel
поподробней про эти места:
Душегуб писал(а):
data sample/20H/1gf,2fo,3kf,4fr,5ee/

Душегуб писал(а):
* samp1=index(a,' ')

Душегуб писал(а):
read(c8) shifr_op(i)

Сильно в алгаритм не всматривался, но заинтересовало это:
Душегуб писал(а):
b(i)=Trim(shifr_op(i))
b(i)=shifr_op(i)

_________________
А не ударить ли нам внезапно кувалдой с тыла? (мысль, рождённая во время ремонта)


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
L.E.X.X. писал(а):
поподробней про эти места:
Душегуб писал(а):
data sample/20H/1gf,2fo,3kf,4fr,5ee/

Душегуб писал(а):
* samp1=index(a,' ')

Это бред)) я его закоментировал. Я хотел шифр в константу внести, но не получилось))
L.E.X.X. писал(а):
Душегуб писал(а):
read(c8) shifr_op(i)

Ну а это у меня формат такой с8- 8 символов в столбце.
L.E.X.X. писал(а):
Сильно в алгаритм не всматривался, но заинтересовало это:

А тут я хотел отрезать пробелы справо. По идеи должно работать, но почемуто не пашет((
П.С. я кажется понял как мне решить эту проблему. Надо посимвольно сравнивать шифры, только вот как это сделать - ума не приложу))
Добавлено спустя 1 минуту, 22 секунды
После некоторых раздумий родил вот такую штуку:
do 100 i=1,18
read(nfrez,'(a8)') shifr_op(i)
e=len(shifr_op(i))
n=8-e
10 format(Tl4)
if(a.eq.shifr_op(i)) then
write(*,fmt=11) shifr_op(i)
11 format(Tl4)
endif
100 continue

Но это тоже не пашет(((((

_________________
Well, hello there.
Do you want to see my magical staff?


 

Member
Статус: Не в сети
Регистрация: 01.12.2004
Откуда: BY, Gomel
Душегуб писал(а):
read(nfrez,'(a8)') shifr_op(i)
e=len(shifr_op(i))
n=8-e

в 1-й строке шифр считывается в количистве 8-ми знаков
2-я, соответственно, присвоит е=8
3-я, сам понимаешь, равна 0
Добавлено спустя 10 минут, 35 секунд
Проблема вот в чём. Если не ты создаёшь файл с исх. данными, тогда ты точно не знаешь сколько символов у тебя отведено под шифр. Я бы сделал так.
1. Поиск пробела по очереди по одному символу:
сначала - присвоил значение из файла переменной А слово, длинной = мин. значению шифра.
затем проверил следующей символ на предмет равенства " ", если нет, то сложил символ с переменной А. И т.д. до нахождения " "
2. Элементарно сравнил полученное слово А с заданным.
Ну и далее по заданию.

_________________
А не ударить ли нам внезапно кувалдой с тыла? (мысль, рождённая во время ремонта)


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
А как по символам сравнивать? Я че то не видел таких операторов.
Я знаю что символы можно только складывать, а вот как слово на буквы разбить???

_________________
Well, hello there.
Do you want to see my magical staff?


 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
с каким еще заданным? пишите нормальную универсальную функцию трим. И никаких сусликов!

Душегуб задание: написать функции:
1) ltrim() отрезающие все пробелы у строки слева.
2) rtrim отрезающие все пробелы у строки справа.
3) trim отрезающая все пробелы и справа и слева.

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Member
Статус: Не в сети
Регистрация: 01.12.2004
Откуда: BY, Gomel
Душегуб почитай, какими параметрами задаётся формат файла через OPEN. Точно не помню, но там вроде как-то указывается последовательное чтение информации в строке. Т.е., не указывая номер символа в строке, программа обращается к следующему символу (символам, это уже как в формате числа укажешь) относительно предыдущего обращения.

_________________
А не ударить ли нам внезапно кувалдой с тыла? (мысль, рождённая во время ремонта)


 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
Душегуб писал(а):
b(i)=Trim(shifr_op(i)) b(i)=shifr_op(i)

а, так она таки в фортране есть. теперь надо только осознать что она делает.

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 27.03.2006
Откуда: Иркутск
armadillo А вот Ltrim и RTrim у меня не работают! они даже синим не выделяются.
L.E.X.X. Это чо, придестя прямо в операторе READ цикл делать?

_________________
Well, hello there.
Do you want to see my magical staff?


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 28 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan