Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2011, 22:46   #1
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию Проблема считыванием данных из файла(fortran 90)

Доброго времени суток. Прошу прощения, что создал тему не в том разделе, но темы про fortran нет. Написал программку по считыванию данных из столбцов столбцов
Y1-1,Z-1,My-1,Mz-1,Y1-2,Z-2,My-2,Mz-2 из 3M9.dat файла:
Код:
	program read_file
	integer*4 zap,b
	real y1(1:9),z1(1:9),my1(1:9),mz1(1:9),
	& y2(1:9),z2(1:9),my2(1:9),mz2(1:9) 
	character(4) proverka

	proverka="My-1"
	call massivi(my1)
	proverka="Mz-1"
	call massivi(mz1)

	proverka="Mz-2"
	call massivi(mz2)
	do b=1,9
	write(*,*)my2(b)
	enddo

	contains

	

	subroutine massivi(falcon)
	real falcon(1:9)
	integer*4 :: t,r=1
	character(1000) str
	character(20) chislo
	falcon=0
	call poziciya()

	open(6,file="3M9.dat",status="old")
	do t=1,b
	read(6,*)
	enddo
	do while(.NOT.EOF(6))
	str=" "
	read(6,"(A)")str
	str=str(zap:len(str))
	chislo=" "
	chislo=str(1:index(str,",")-1)
	read(chislo,*)falcon(r)
	r=r+1
	enddo ! do while 
	close(6)
	write(*,*)		
	end subroutine massivi


		subroutine poziciya()
		character(1000) stroka
		integer*4 g
		b=1
		open(5,file="3M9.dat",status="old")
		do while(.NOT.EOF(5))
		if (stroka=="@1")exit
		stroka=" "
		read(5,"(A)")stroka
		b=b+1
		enddo !do while
		stroka=" "
		read(5,"(A)")stroka
		do g=1,996
		if (stroka(g:g+3)==proverka)exit
		enddo
		stroka=" "
		read(5,"(A)")stroka
		do zap=g,1,-1
		if (stroka(zap:zap)==",")exit
		enddo
		close(5)
		zap=zap+1 !Позиция, с которой необходимо
		!считывать число
		end subroutine poziciya

		end program read_file
Суть такова, в переменную proverka заносится название столбца, процедура massivi считывает эти данные, и переводит в числовой формат. Проблема такая, при вызове процедуры massivi один раз программа прекрасно начинает выводить на экран данные. А если я несколько раз вызываю процедуру (меняя при этом значение proverka), выводятся правильные данные массива только после первого вызова процедуры. А при следующих вызовах данные неправильные. Почему я не могу вызывать процедуру massivi несколько раз?

Файл прилагается.
Вложения
Тип файла: zip файл внутри.zip (1.6 Кб, 7 просмотров)

Последний раз редактировалось ivan.tiran; 04.11.2011 в 13:55.
ivan.tiran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы со считыванием игровой карты с файла Enlightened Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 13.01.2011 19:36
Сложные типа данных. Многомерные массивы. (Fortran) Miles Prower Помощь студентам 0 18.10.2010 21:53
как сам лабиринт ввести не как постоянную как тут а считыванием с файла Голем Помощь студентам 10 17.07.2010 18:07
Проблема с нахождением корня нелинейного уравнения (Fortran 77) reafantu Помощь студентам 7 03.03.2010 19:42
DBGrid. Проблема со считыванием инфы из столбца. Teenager БД в Delphi 6 18.01.2008 15:33