У вас вопросы?
У нас ответы:) SamZan.net

306-5196820755 Качесова Л

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 20.2.2025

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

АЛТАЙСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ ИМЕНИ  И. И. ПОЛЗУНОВА

Л. Ю. Качесова

ПРОГРАММИРОВАНИЕ НА С++

Часть 1 Строки и структуры

Методические указания к лабораторным работам

по дисциплине “Программирование”

БАРНАУЛ 2011

УДК 681.3.06:519.682(0.75.5)

Качесова Л.Ю. Программирование на языке С++. Часть 1: Методические указания к лабораторным работам по дисциплине  “Программирование” для студентов направления 23. 01.00 – Информатика и вычислительная техника./Алт. гос. техн. ун-т им. И. И. Ползунова. – Барнаул: Изд-во АлтГТУ, - 2011.-  13 с.

                                                            Рассмотрены и одобрены

                                                                        на заседании кафедры САПР

                                                  Протокол №    от

  

Содержание

[1] Порядок выполнения лабораторных работ

[2] Требования к оформлению лабораторных работ

[3] Требования к защите лабораторных работ

[4] Лабораторная работа №6. Строки и структуры

[5] 6.1 Работа со словами  текста

[6] 6.2 Работа с предложениями текста

[7] 6.3 Работа со структурами и бинарными файлами

[8] 6.4. Задание 1

[9] 6.5 Задание 2

Порядок выполнения лабораторных работ

Для выполнения лабораторной работы нужна предварительная подготовка:

  •  знакомство с темой и целью лабораторной работы;
    •  изучение необходимых к выполнению лабораторной работы теоретических сведений  и примеров программ;
    •  знакомство с заданием к лабораторной работе, постановка задачи индивидуального варианта, обдумывание алгоритма и программной реализации задачи.

Выполнение лабораторной работы означает: набор, отладка и тестирование программы на компьютере, а также демонстрация преподавателю блок – схемы алгоритма решения задачи и безошибочного выполнения программы.

Оборудование, технические средства, инструмент

Лабораторные работы выполняются в компьютерном классе, оснащенном персональными компьютерами. На компьютерах должна быть установлена система программирования, поддерживающая создание консольных программ на С++, например, Geany, Visual C++ или другие.

Требования к оформлению лабораторных работ

Отчет по лабораторной работе оформляется в виде принтерных распечаток на сброшюрованных листах формата А4. Он должен содержать:

  •  титульный лист;
    •  задание к лабораторной работе;
    •  постановка задачи;
    •  алгоритм решения задачи  в виде блок-схемы;
    •  листинг программы;
    •  тестовые примеры, иллюстрирующие все варианты работы программы.

Требования к защите лабораторных работ

После выполнения лабораторную работу защищают, т. е. поясняют алгоритм работы программы и отвечают на контрольные вопросы.

На защиту не допускаются студенты, не оформившие отчет о выполненной лабораторной работе.

Лабораторная работа №6. Строки и структуры

Цель работы: получить практический опыт написания программ по обработке  информации с использованием строк и структур.

 6.1 Работа со словами  текста

В листинге 6.1 представлена программа, которая определяет, сколько раз встретилось заданное слово в текстовом файле, длина строки в котором не превышает 80 символов (рис. 6.1). Текст не содержит переноса слов. Слово – это последовательность алфавитно-цифровых символов, после которых следует знак пунктуации, разделитель или признак конца строки. Результат выполнения программы представлен на рис. 6.2.

Первый вызов функции strtok в операторе 1 формирует адрес первого слова строки line. Он сохраняется в переменной tok. Функция strtok заменяет на NULL разделитель, находящийся после найденного слова, поэтому в операторе 2 можно сравнивать на равенство искомое и выделенное слово. В операторе 3 выполняется поиск следующего слова в той же строке. Для этого в функции strtok задается в качестве первого параметра NULL.

Листинг  6.1 Подсчет количества вхождений слова в текст 

#include <iostream>

#include <string>

using namespace std;

int main(void)

{ const int len = 81;

 char word[len], line[len];

 char delims[]=",.!?/|)(*:; "; //разделители слов

 

 FILE * f;

 f=fopen("D:\\FileTXT\\text.txt","r");

 if (f != NULL)

 { cout << "Вв. слово для поиска: \n";

   cin >> word;

   char *tok;

   int kol = 0;

   while(!feof(f))

   { fgets(line,sizeof(line), f);

     tok=strtok(line, delims); //оператор 1

  while (tok != NULL)

   { if (!strcmp(tok, word)) kol++;//оператор 2

  tok= strtok(NULL,delims);    //оператор 3

  }

}

  fclose(f);

 cout<<"Кол-во вхождений заданного слова = "<<kol;

  cout << endl;

 } else cout << "Файл  не найден!\n";

 }

Рисунок  6.1 – Файл с текстом

Рисунок  6.2 – Результат выполнения программы.

 6.2 Работа с предложениями текста

В листинге 6.2 представлена программа, которая считывает текст из файла (рис. 6.3) и выводит на экран только вопросительные предложения из этого текста (рис. 6.4).

Исходными данными в этой задачи является текстовый файл неизвестного размера, состоящий из неизвестного количества предложений. Предложение может занимать несколько строк, поэтому ограничиться буфером на одну строку в данной задаче нельзя. Нужно выделить буфер, в который поместиться весь файл. Алгоритм решения задачи следующий: 1.  Открыть файл. 2.  Определить его длину в байтах.

3.  Выделить в динамической памяти буфер соответствующего размера.

4.  Считать файл с диска в буфер. 5.  Анализируя буфер посимвольно, выделять предложения. Если предложение оканчивается вопросительным знаком, вывести его на экран.

Детализируем последний пункт алгоритма. Для вывода предложения необходимо хранить позиции его начала и конца. Предложение может оканчиваться точкой, восклицательным или вопросительным знаком. В первых двух случаях предложение пропускается. Это выражается в том, что значение позиции начала предложения обновляется. Оно устанавливается равным символу, следующему за текущим,  и просмотр продолжается. В случае обнаружения вопросительного знака предложение выводится на экран, после чего также устанавливается новое значение позиции начала предложения.

Листинг  6.2 Вывод вопросительных предложений

#include <stdio.h>

#include <iostream>

#include <string>

#include <windows.h>

using namespace std;

 

 char bufRus[256];

 char* Rus(char* mes)

 {  AnsiToOem(mes, bufRus);

 return bufRus;

  }

int main(void)

{ char ch[2]; FILE * f;

 f=fopen("D:\\FileTXT\\text2.txt","r");

 if (f != NULL)

  { // определяем длину файла

    fseek(f,0,SEEK_END);

    long len = ftell(f);

   // выделяем буфер необходимого размера

    char *buf=new char[len+1];

   // смещаем указатель на начало файла и

   // считываем файл в буфер

    fseek(f,0,SEEK_SET);

    fread(buf, len,1, f); buf[len]='\0';

   // выделение предложений из текста

   long n = 0; // позиция начала предложения 

   long i=0, j=0;

   while(buf[i])

    { if (buf[i]== '?')

    { // вывод символов вопросительного 

         // предложения

         for(j=n; j<=i; j++)

    { ch[0]=buf[j]; ch[1]='\0';

      cout << Rus(ch);

     }

   n=i+1;

    }

   if (buf[i]=='.' || buf[i]== '!')

     n=i+1;

   i++;

     }  

    fclose(f);

   cout << endl;

 } else

     cout << "Файл  не найден!\n";

}

Рисунок  6.3 – Файл с текстом

Рисунок  6.4 – Результат выполнения программы.

6.3 Работа со структурами и бинарными файлами

В листинге 6.3 представлена программа, которая

  •  создает бинарный файл, в котором храниться информация о сотрудниках предприятия: фамилия и инициалы, год рождения, оклад.
  •  Выводит на экран информацию, хранимую в бинарном файле, а также сведения о сотруднике по заданной фамилии и инициалам (рис. 6.5).

Листинг  6.3 Создание и обработка бинарного файла

#include <stdio.h>

#include <string.h>

#include <iostream>

using namespace std;

const int l_name = 30;

 struct Man

 { char name[l_name];

 int birth_year;

 float pay;

 };

int compare(const void *manl, const void *man2);

void create(void) // Создание файла

{ Man man; int pr; FILE *fbin;

 if ((fbin =fopen("dbase.bin","wb")) == NULL)

  puts("Ошибка создания  файла\n ");

 else

{ do

   { cout << "\n Фамилия и инициалы: ";

  cin.get() ; gets (man.name) ;

  cout << "\n Год рождения: ";

  cin >> man.birth_year;

  cout << "\n Оклад: ";

  cin >> man.pay;

  fwrite(&man, sizeof(man),1,fbin);

  cout<< "\n Продолжить ввод? (1-да/0-нет)";

  cin >> pr;

  } while(pr == 1);

  }  

 fclose(fbin);

}

void view(void) // Просмотр файла

 { FILE *fbin;

 if ((fbin =fopen("dbase.bin","rb")) == NULL)

  puts("Ошибка открытия  файла\n");

 else

 { fseek(fbin, 0, SEEK_END);

   int n_record = ftell(fbin)/sizeof(Man);

   Man *man = new Man[n_record];

   fseek(fbin, 0, SEEK_SET);

   fread(man, sizeof(Man),n_record, fbin);

   fclose(fbin);

   qsort(man, n_record, sizeof(Man), compare);

   for (int i=0; i < n_record; i++)

 cout << "\n" << man[i].name << "  " <<

  man[i].birth_year << "  " << man[i].pay;

 cout << "\n";

 }

 }

// Обработка файла

 

 void work(void)

 { char z_name[l_name];

FILE *fbin;

if ((fbin =fopen("dbase.bin","rb")) == NULL)

      puts("Ошибка открытия  файла\n");

 else

 { fseek(fbin, 0, SEEK_END);

   int n_record = ftell(fbin)/sizeof(Man);

   Man *man = new Man[n_record];

   fseek(fbin, 0, SEEK_SET);

   fread(man, sizeof(Man),n_record, fbin);

   fclose(fbin);

   qsort(man, n_record, sizeof(Man), compare);

      cout<<"\nВведите фамилию и инициалы сотрудника:";

   cin.get();gets(z_name);

   for (int i=0; i < n_record; i++)

   { if (!strcmp(man[i].name,z_name))

   cout <<  "\n" << man[i].name << "  " <<

    man[i].birth_year << "  " << man[i].pay;

   } cout << "\n";

 }

}

int main(void)

{ int num;

  do

{ cout << "\n 1 - Создание файла";

  cout << "\n 2 - Просмотр файла";

  cout << "\n 3 - Обработка файла";

  cout << "\n 4 - Выход";

  cout << "\n Ваш выбор: ";

  cin >> num;

  switch(num)

   { case 1: create();break;

  case 2: view();break;

  case 3: work();break;

   }

} while (num != 4);

}

int compare(const void *manl, const void *man2)

{ return strcmp(((Man *)manl)->name,

((Man *)man2)->name);

}

Рисунок  6.5 – Результат выполнения программы.

6.4. Задание 1

Написать программу, которая считывает текст из файла и обрабатывает его. Обработку текстовой информации нужно организовать с использованием С – строк, т. е. массивов символов, завершающихся символом с кодом ‘\0’.

  1.  Cчитать из текстового файла три предложения и вывести их в обратном порядке.

  1.  Считать текст из файла и вывести на экран только предложения, содержащие введенное с клавиатуры слово.

  1.  Считать текст из файла и вывести на экран только строки, содержащие двузначные числа.

  1.  Считать английский текст из файла и вывести на экран слова, начинающиеся с гласных букв.

  1.  Считать текст из файла и вывести его на экран, меняя местами каждые два соседних слова.

  1.  Считать текст из файла и вывести на экран только предложения, не содержащие запятых.

  1.  Считать текст из файла и определить, сколько в нем слов, состоящих из не более чем четырех букв.

  1.  Считать текст из файла и вывести на экран цитаты, то есть предложения, заключенные в кавычки.

  1.  Считать текст из файла и вывести на экран только предложения, состоящие из заданного количества слов.

  1.  Считать английский текст из файла и вывести на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.

  1.  Считать английский текст из файла и вывести его на экран, заменив каждую первую букву слов, начинающихся с гласной буквы, на прописную.

  1.  Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова «ноль», «один», …, «девять», начиная каждое предложение с новой строки.

  1.  Считать текст из файла, найти самое длинное слово и определяет, сколько раз оно встретилось в тексте.

  1.  Считать текст из файла и вывести его на экран, после каждого предложения добавляя, сколько раз встретилось в нем введенное с клавиатуры слово.

  1.  Считать текст из файла и вывести на экран сначала вопросительные, а затем восклицательные предложения.

6.5 Задание 2

Разработать алгоритм и написать программу решения задачи индивидуального варианта.

  1.  Список товаров, имеющихся на складе, включает: наименование товара, количество единиц товара, цену единицы товара, дату поступления товара на склад. Для описания списка товаров в программе необходимо использовать тип данных структура. Для хранения списка товаров  создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести в порядке возрастания стоимости список товаров, хранящихся более одного месяца и стоимость которых превышает 1000 рублей.

  1.  Для получения места в общежитии формируется список студентов, который включает: Ф. И. О. студента, номер группы (буква и четыре цифры), средний балл, доход на одного члена семьи. Общежитие в первую очередь предоставляется тем студентам, у которых доход на члена семьи меньше двух минимальных зарплат, затем остальным в порядке уменьшения среднего балла. Для описания списка студентов в программе необходимо использовать тип данных структура. Для хранения списка студентов  создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести список очередности предоставления мест в общежитии.

  1.  В справочной автовокзала хранится расписание рейсов автобусов. Для каждого рейса указаны: номер рейса, тип автобуса, пункт назначения, время отправления, время прибытия в конечный пункт. Для описания рейса в программе необходимо использовать тип данных структура. Для хранения расписания рейсов автобусов  создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести отсортированную информацию о рейсах, которыми можно воспользоваться для прибытия в пункт назначения ранее заданного времени.

  1.  На междугородней АТС информация о разговорах содержит: дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе, номер телефона абонента. Для описания информации о разговорах в программе необходимо использовать тип данных структура. Для хранения информации о разговорах  создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести по каждому городу общее время разговоров и общую сумму. Вывод осуществите в порядке возрастания суммы.

  1.  Информация о сотрудниках фирмы содержит: Ф. И. О. сотрудника, табельный номер, количество отработанных часов за месяц, почасовой тариф. Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. Для описания информации о сотрудниках фирмы в программе необходимо использовать тип данных структура. Для хранения информации о сотрудниках фирмы  создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести размер заработной платы каждого сотрудника фирмы за вычетом подоходного налога, который составляет 13% от суммы заработка. Информацию отсортируйте.

  1.  Информация об участниках спортивных соревнований содержит: Ф. И. О. игрока, игровой номер, возраст, рост, вес. Для описания информации об участниках спортивных соревнований в программе необходимо использовать тип данных структура. Для хранения информации об участниках спортивных соревнований создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести информацию о самых молодых, самых рослых и самых легких участниках соревнований.

  1.  Для книг хранящихся в библиотеке задаются: регистрационный номер, Ф. И. О. автора, название, год издания, издательство, количество   страниц. Для описания книг в программе необходимо использовать тип данных структура. Для хранения информации о книгах создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести   отсортированный   список   книг, изданных после заданного года

  1.  Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпущенной продукции включают: наименование, количество, номер цеха. Для описания сведений о выпущенной продукции  в программе необходимо использовать тип данных структура. Для хранения сведений о выпущенной продукции  создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: для заданного цеха вывести информацию о выпущенной продукции в порядке убывания количества.

  1.  Информация о сотрудниках предприятия содержит: Ф. И. О. сотрудника, номер отдела, должность, дату начала работы. Для описания информации о сотрудниках предприятия в программе необходимо использовать тип данных структура. Для хранения информации о сотрудниках создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести список сотрудников по указанному отделу в порядке убывания стажа работы.

  1.  Ведомость абитуриентов, сдавших вступительные экзамены, содержит: Ф. И. О. абитуриента, адрес, оценки по трем предметам. Для описания строки ведомости  в программе необходимо использовать тип данных структура. Для хранения ведомости абитуриентов создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: определить количество абитуриентов, проживающих в г. Барнаул и сдавших экзамены со средним баллом не ниже 50. Вывести их фамилии в порядке возрастания среднего балла.

  1.  Справочная служба содержит информацию о кинофильмах: название кинотеатра, стоимость билета, время сеанса, адрес. Для описания информации о кинофильмах  в программе необходимо использовать тип данных структура. Для хранения  информации о кинофильмах создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести адреса всех кинотеатров в порядке возрастания стоимости билетов с указанным временем сеанса.

  1.  Информация о городах России содержит: название города, количество жителей, количество школ, количество высших учебных заведений. Для описания информации о городах России  в программе необходимо использовать тип данных структура. Для хранения  информации о городах России создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести названия городов и количество жителей, где не менее двух высших учебных заведений и количество школ не меньше заданного числа.

  1.  Имеется  информация о телевизорах на складе: наименование, фирма изготовитель, стоимость, размер экрана, количество на складе. Для описания информации о телевизорах на складе в программе необходимо использовать тип данных структура. Для хранения  информации о телевизорах на складе создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла  и выполнить его обработку: вывести в порядке возрастания стоимости названия телевизоров и их количество на складе.




1. Школа здоровья 384 Методическая разработка музыкальнолитературной композиции
2. Распространение животных на Земле
3. тематики 6 класу уроку Дата уроку Зміст навчальн
4. это любое юридическое или физическое лицо поставляющие товары заказчикам
5. сложное системное явление
6. Хронология позднечетвертичных флювиогляциальных катастроф на юге Сибири по новым космогенным данным
7. вариант ответа Религиозные нормы как правила поведения верующих содержатся в таких источниках как- А Фед.
8. Отчет по производственной практике в отделе документационного обеспечения Турухтанного таможенного поста Балтийской таможни в качестве помощника государственного таможенного инспектора отдела документационного обеспечения
9. Тема выпускной квалификационной работы ВКР Анализ локальных нормативноправовых актов о труде П
10. Как говорить мужчинам комплименты