Главная страница
Навигация по странице:

  • Лабораторная работа 9

  • Лабораторная работа 9. Лабораторная работа Отладка и выполнение программ для обработки многомерных массивов


    Скачать 140.89 Kb.
    НазваниеЛабораторная работа Отладка и выполнение программ для обработки многомерных массивов
    Дата06.04.2021
    Размер140.89 Kb.
    Формат файлаpdf
    Имя файлаЛабораторная работа 9.pdf
    ТипЛабораторная работа
    #191836

    Подборка по базе: Курсовая работа (1).docx, Практическая работа 11.pdf, Менеджмент. Контрольная работа. (2).doc, Курсовая работа.docx, Русский язык Корчик практическая работа.doc, Контрольня работа по ОЗИ.docx, курсовая работа 3.docx, практическая работа.docx, Курсовая работа Пшеничников Д.И..docx, Курсовая работа.doc

    Лабораторная работа 9. Отладка и выполнение программ для обработки многомерных массивов
    2.9.1 Цель работы
    Освоение приемов обработки символьных многомерных массивов
    2.9.2 Задание
    Задание для домашней подготовки:
    - ознакомиться с первым разделом данного методического пособия;
    - ознакомиться с приведенным к данной практической работе заданием и с теоретическими сведениями;
    - написать текст программы по заданию практической работы. Задание к практической работе:
    1)
    Разработать программу обработки массива слов
    Для доступа к элементам использовать указатели.
    2)
    Самостоятельно подготовить тестовые данные.
    3)
    Выполнить предложенное преподавателем индивидуальное дополнительное задание (использовать режим игнорирования высоты букв, для оформления интерфейса использовать функции текстового режима).
    2.8.3 Теоретические сведения, необходимые для выполнения работы
    Массивы
    Массив - это совокупность однотипных элементов, имеющих общее имя. Массивы описываются следующим образом:
    3.
    <тип элементов><имя массива>[<кол. элементов>] ... [<кол. элементов>];
    4.
    < тип элементов >< имя массива >[] ... [] = {<нач. значения>};
    Пример.
    //одномерные массивы int А[5]; char В[3] [20]; charCtH'AVBVC'); int D[]={ 1,2,3}; int E[5]={1;2};
    //двумерные массивы int F[] [3] = { 1,2,3,4,5,6}; intG[] [3] = {{1},{4,5}}; int ЕЕ[2] [3] ;
    Доступ к элементам массива осуществляется через имя массива и индекс (номер) элемента. Индекс 1-го элемента равен 0. Элементы располагаются построчно в памяти.
    При выполнении контроль на допустимость индекса не производится.
    Строка символов может рассматриваться как одномерный массив из элементов типа char, в конце которого устанавливается символ «\0».
    Идентификатор или имя массива рассматривается как адрес его 1го элемента.
    Пример, int А[10];
    //одномерный массив int *р;
    //указатель *р=А;
    //запоминание адреса массива р=&А[0]; //запоминание адреса массива
    2.9.4 Пример листинга программы.

    Дана последовательность слов:
    PETROV
    GUK
    SOKOLOV JENE
    Вывести слова, заканчивающиеся на «OV».
    #include
    // #include //если имеется в системе include include
    #define konstr "*" //конец слов void main()
    { char masstr [5] [10];//массив слов char *adrstr [5];//массив адресов слов char **a; //указатель на массив указателей int i,j,k; system(“clear”)
    //window( 10,5,65,22); textcolor(4); textbackground(3); gotoxy(20,2); //если curves puts("BBeflHTe слова");
    //gotoxy(20,3); textcolor(0); for (i=0;i<5;i++)
    { gotoxy(5,i+3); scanf("%s",masstr[i]); adrstr[i] = masstr [i]; if (!strcmp(adrstr [i],konstr)) //если строка "*" break;
    } a=adrstr; i=10;
    //gotoxy(20,8); textcolor(5); textbackground(3); puts("CЛOBa на - OV \n");
    //gotoxy(20,3); textcolor(O); while (*a) //цикл перебора слов {
    //gotoxy(5,2); k=strlen(*a); //длинна строки
    (*a)+=(k-2); //адрес предпоследнего символа if (strchr(*a,'0')) //если символов '0'
    { (*а)++; //переход к следующему символу if (strchr(*a,'V')) //если 'V cputs((*a)-k+l); //переход на начало строки 'PETROV и печать
    } а++; //переход к следующему адресу ( слову) i++;
    } getc();
    //textbackground( 1); system(«clear»);
    }

    Лабораторная работа 9.1 Отладка и выполнение программ, использующих файловый ввод-вывод
    2.10.1 Цель работы
    Освоение приемов ввода-вывода данных в файлы средствами СИ и С++.
    2.10.2 Задание
    Задание для домашней подготовки:
    - ознакомиться с первым разделом данного методического пособия;
    - ознакомиться с приведенным к данной практической работе заданием и с теоретическими сведениями;
    - написать текст программы по заданию практической работы. Задание к практической работе:
    1)
    Разработать программу создания и просмотра текстового файла.
    Самостоятельно подготовить тестовые данные.
    2)
    Выполнить предложенное преподавателем индивидуальное дополнительное задание.
    2.10.3 Теоретические сведения, необходимые для выполнения работы
    Файловый ввод-вывод в С.
    Система ввода/вывода работает с двумя типами потоков: текстовый и двоичный
    (последовательность байтов). В начале работы программы открыты 5 предопределенных текстовых потока.
    1)
    Stdin -клавиатура
    2)
    Stdout - экран
    Stderr - ошибки
    Stdoux -первый последовательный порт
    Stdprn - принтер
    Файловая система является частью общей системы ввода/вывода. Для выполнения операций связи файла и потока в языке С используется указатель на файл Р1ЬЕ*<имя указателя>;
    Указатель ссылается на структуру типа «файл», которая содержит имя файла, статус, текущую позицию.
    Основные функции, связанные с файлами описаны в заголовочном файле : fopen() - открытие файла fclose() - закрытие файла putc() - вывод символа в файл fputc() - вывод символа в файл getc()- ввод символа из файла fgetc()- ввод символа из файла fputsQ - вывод строки в файл fgets() - чтение строки из файла fsech - переход к указанному байту файла fprintfQ - форматный вывод в файл fscanf() - форматный ввод из файла feof() - при достижении конца файла возвращает значение «истина» ferror() - «истина» при ошибке rewindQ - переход на начало файла removeQ - удаление файла
    Формат функции открытия файла:
    fореn(<имя файла на диске>,<режим открытия>);
    , где
    -
    <имя файла> задается строкой.
    Функция возвращает нулевой указатель, если файл не может быть открыт (NULL). Файл может быть открыт в текстовом и двоичном режиме. В текстовом режиме последовательность «возврат каретки и перевод строки» транслируется в символ «новая строка». При выводе символ «новая строка» транслируется в возврат каретки и перевод строки.
    В двоичных файлах обеспечивается однозначное соответствие с байтом. Если функция fopen() используется для открытия файла на запись, то существующий файл с тем же именем будет удален.
    -
    <режим открытия> задается символами: "г" - открыть для чтения "w" - открыть для записи "а" - добавление в существующий файл "г+" - для чтения записи "w+" - создать для чтения записи "а+" - открыть для добавления
    Все с буквой b для двоичного файла "rb" "wb" "w+b"
    Пример,
    //ввод из файла
    FILE *f; if ((f=fopen("tesf \"w")= = NULL)
    { putsf/'Файл не открыть"); exit(l); } ch=getc(f); while (ch!=eof) ch = getc(f);//читается пока не конец файла
    Формат функции закрытия файла: fclose(<имя указателя>);
    Пример. fclose(f);
    Работа с файлами на С++
    В языке С++ кроме методов ввода-вывода, используемых в языке С, можно использовать собственные функции, базирующиеся на понятии «класс». Для работы с файлами в С++ необходимо:
    1)
    Создать объект соответствующего класса
    Открыть файл для работы.
    В языке С++ можно создать экземпляры объектов для следующих классов:
    - fstream ( класс iostream)
    - ifstream (класс istream)
    - ofstream (класс ostream)
    Функция открытия файла имеет формат: open (<имя файла>,<режим открытия>,[<режим доступа>]);
    <режим открытия> задается следующими константами: ios::app - режим добавления ios::in
    - режим ввода ios::out - режим вывода ios::end - маркер на конец файла
    ios::nocreate - если файл существует, не создается новый ios::trunc - если файл существует, то он очищается и маркер становится в начало ios::noreplace - прекратить выполнение, если файл существует ios::text - текстовый файл ios::binary - двоичный файл <режим доступа> имеет значения: NORMAL - О READONLY
    -1 HIDDEN - 2 SYSTEM - 4 ARCHIVE - 8
    Пример, ofstream myf; //создание объекта myf.open('iextr',ios::in|ios::out); //открытие на ввод-вывод
    Имена конструкторов совпадают с именами классов iostream, istream и имеют тот же набор документов, что функция open, поэтому создание и открытие можно записать одним оператором.
    Пример. ofstream myf("text", ios::out,0); , где ofstream - конструктор класса.
    Функция закрытия файла имеет формат:
    <имя объекта>. closeQ;
    Пример. fout.close();
    2.10.4 Пример листинга программы.
    Составить программу чтения и сохранения строк в файле. а) Вариант С
    #include
    #include
    #include
    FILE* f;
    //Указатель на файловую переменную void main()
    {char s[21], sf[10]; int i,k; system(“clear”); puts("vvod imya"); gets(sf);
    //Ввод имени файла f=fopen(sf,"w+"); //Открытие файла на запись puts("stroka\n"); k=0; do
    { gets(s);
    //Ввод строки fputs(s,f);
    //Запись строки в файл fprintf(f,"\xOa"); k++;
    } while(!feof(stdin)); fclose(f), f=fopen(sf"r+"); puts("rezultat\n"); for (i=0;i{ fgets(s,20,f); //puts(s); printf("%s",s);
    }
    fclose(f);
    } b) Вариант С++
    #include
    #include int main (int argC, char**argV)
    { char ch; if (argC!=2)
    { cout<< "Нет имени файла \n"; exit(l);} ofstream fout (argV[l], ios::out|ios::binary); //открыть двоичный файл на создание if (! four) { cout<< "Файл не открыт \n"; exit (2);} cout<< "Конец - $ \n"; do
    { cout<< "Введите текст \n"; cin.get(ch); //ввод с клавиатуры посимвольно fout.put(ch); //вывод в файл
    } while (ch!='$'); // пока не встретится символ'$' fout.close();
    } ifstream fin (argV[l], ios::in|ios::binary);// открыть файл на чтение if(!fm)
    { cout<< "Файл не открыт \n"; exit (2);
    } while (!fin.eof()) //пока не конец файла
    { fin.get(ch);//BBOA из файла cout<< ch; //вывод на экран
    } fin.close();
    }


    написать администратору сайта