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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2012, 22:48   #1
kestugar
Пользователь
 
Регистрация: 25.03.2011
Сообщений: 28
Стрелка Fortran читает "левые" символы в начале файла.

Условия выполнения первого задания:
1.Все исходные данные вводятся из входного текстового файла.
2.В выходной текстовый файл выводится как вся введенная информация , так
и полученный результат.
Это задания предстоит выполнить с массивами STRING, процедурами и текстовыми файлами;

Дан список сотрудников лаборатории ( 15 человек) в виде
ФАМИЛИЯ ДОЛЖНОСТЬ
5 симв. 15 симв.
Данные в одной строке отделяются друг от друга пробелами. Например:
Иванов техник
……………….
Составить программу, определяющую число одинаковых должностей и
напечатать список должностей в виде:
вед.инженер - 2
ст.инженер - 3
инженер - 8
техник -2

файл lab.txt - входной файл, out.txt - выходной.
компилятор - GNAT Programming Studio.
язык f2008

Подскажите пожалуйста почему, когда прога читает файл, то в первой строке в начале файла добавляет какойто символ(и с русскими и с английскими словами)? Текстовые файлы и код проги на "UTF-8".

Заранее спасибо
Код:
program lab_1_5_1
    use ISO_Fortran_Env
 
    implicit none
    character(*), parameter :: E_ = "UTF-8"                           ! Кодировка файлов.
    integer, parameter      :: CH_ = Selected_Char_Kind("ISO_10646")  ! Разновидность типа для символов.
    integer, parameter      :: I_ = int16                             ! Разновидность типа для целочисленных переменных.
 
    integer, parameter :: stuff_amount = 15, surname_len = 15
    character(*), parameter :: input_file = "lab2.txt", output_file = "out.txt"
 
    ! Массивы фамилий и должностей.
    character(surname_len, kind=CH_) :: surname(stuff_amount)       = CH__""
    character(surname_len, kind=CH_) :: spec(stuff_amount)      = CH__""
 
    ! Массивы уникальных фамилий
    character(surname_len, kind=CH_) :: spec_uniq(stuff_amount)     = CH__""
 
    ! Статистика должностей.
    integer                          :: statistics(stuff_amount)    = 0
 
    integer IO, i, j, count
 
    ! Чтение списка сотрудников.
    open (2, file = input_file, encoding=E_)
    read (2, "(a, 1x, a)", iostat = io) (surname(i), spec(i), i = 1, stuff_amount)
 
    do i = 1, stuff_amount
        select case (io)
            case(0)
                print *, surname(i), spec(i)
            case(IOSTAT_END)
                print *, "End of file has been reached.name"
            case(1:)
                print *, "Error while reading stuff: ", io
        end select
    end do
    close(2)
 
    ! Вывод списка сотрудников.
    open (2, file = output_file, encoding=E_)
    write (2, "(a, 1x, a)", iostat = io) (surname(i), spec(i), i = 1, stuff_amount)
 
    !do i = 1, stuff_amount
    !end do
 
    ! Подсчёт должностей.
    !statistics = 0
    count = 0
    spec_uniq = ""
    !spec_uniq(1) = spec(1)
    stuff_loop: &
    do i = 1, stuff_amount
        ! Сравнение должности сотрудника с уникальными специальностями.
        do j = 1, count
            if (spec(i) == spec_uniq(j)) then
                statistics(j) =  statistics(j) + 1
                cycle stuff_loop
            end if
        end do
        count = count + 1
        spec_uniq(count) = spec(i)
        statistics(j) =  1
    end do stuff_loop
 
    ! Вывод списка сотрудников.
    print *,
    print *, "list of stuff:"
    write (2, *)
    write (2, *) "list of stuff:"
    write (2, "(a, 1x, i2)", iostat = io) (spec_uniq(i), statistics(i), i = 1, count)
 
    do i = 1, count
        print *, spec_uniq(i), statistics(i)
        !write (2, *) spec_uniq(i), statistics(i)
    end do
 
    close(2)
    read *
 
end program lab_1_5_1
Изображения
Тип файла: jpg Чтение файла.jpg (27.5 Кб, 118 просмотров)

Последний раз редактировалось kestugar; 23.11.2012 в 23:02.
kestugar вне форума Ответить с цитированием
Старый 24.11.2012, 20:48   #2
kestugar
Пользователь
 
Регистрация: 25.03.2011
Сообщений: 28
По умолчанию

все исправил, путем создания файла через среду компилятора.
kestugar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Существуют ли "защищённые" флешки (посредством "заводского" внедрения туда файла autorun.inf) Вадим Мошев Безопасность, Шифрование 20 23.08.2012 22:19
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Считывание строк из файла. перемещение по строкам "веред"-"назад" Larkin. Помощь студентам 2 15.06.2009 17:58