Заблокирован Статус: Не в сети Регистрация: 27.03.2006 Откуда: Иркутск
Уважаемые программисты помогите мне в фортраном.
Имеются у меня файлы .тхт, в них таблицы. Я сделал так чтобы таблицы читались и записывались в новый рабочий файл. И теперь мне надо сделать поиск в таблице по имени(1-й столбец). Это должно выглядеть примерно так: на экране появляется надпись "Введите шифр опоры", мы вводим, далее происходит поиск в таблице этого имени и оно выводится на экран и в добавок по этому имени производятся некие расчеты и тоже выводятся.
Как это сделать?:spy: Помогите пожалуйста.
_________________ Well, hello there.
Do you want to see my magical staff?
Заблокирован Статус: Не в сети Регистрация: 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
Душегуб по идее, у тебя "шифр опоры" - целое 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?
Заблокирован Статус: Не в сети Регистрация: 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
Заблокирован Статус: Не в сети Регистрация: 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?
в 1-й строке шифр считывается в количистве 8-ми знаков
2-я, соответственно, присвоит е=8
3-я, сам понимаешь, равна 0 Добавлено спустя 10 минут, 35 секунд Проблема вот в чём. Если не ты создаёшь файл с исх. данными, тогда ты точно не знаешь сколько символов у тебя отведено под шифр. Я бы сделал так.
1. Поиск пробела по очереди по одному символу:
сначала - присвоил значение из файла переменной А слово, длинной = мин. значению шифра.
затем проверил следующей символ на предмет равенства " ", если нет, то сложил символ с переменной А. И т.д. до нахождения " "
2. Элементарно сравнил полученное слово А с заданным.
Ну и далее по заданию.
_________________ А не ударить ли нам внезапно кувалдой с тыла? (мысль, рождённая во время ремонта)
Member
Статус: Не в сети Регистрация: 07.10.2003 Откуда: Russia, Moscow
с каким еще заданным? пишите нормальную универсальную функцию трим. И никаких сусликов!
Душегуб задание: написать функции:
1) ltrim() отрезающие все пробелы у строки слева.
2) rtrim отрезающие все пробелы у строки справа.
3) trim отрезающая все пробелы и справа и слева.
_________________ В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru
Member
Статус: Не в сети Регистрация: 01.12.2004 Откуда: BY, Gomel
Душегуб почитай, какими параметрами задаётся формат файла через OPEN. Точно не помню, но там вроде как-то указывается последовательное чтение информации в строке. Т.е., не указывая номер символа в строке, программа обращается к следующему символу (символам, это уже как в формате числа укажешь) относительно предыдущего обращения.
_________________ А не ударить ли нам внезапно кувалдой с тыла? (мысль, рождённая во время ремонта)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения