Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

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

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

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

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

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

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

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

Часть 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. Конспект лекций Конспект лекций ~ Наталья Ольшевская Философия Введение Философия к
2. Правознавство спеціалізація- цивільноправова кримінальноправова державноправова для студентів 2 к
3. Report Theodore Roosevelt Icon of the mericn Century ldquo;The joy of living is his who hs the hert to demnd it.html
4. Содержание и форма искового заявления
5. ПМК 1
6. Контрольная работа- Дозвілля як складова часового простору
7. Техникоэкономический анализ деятельности предприятия
8. Тема 6 ФЕДЕРАЛЬНЫЕ ОРГАНЫ ИСПОЛНИТЕЛЬНОЙ ВЛАСТИ- ОРГАНИЗАЦИОННОПРАВОВЫЕ ФОРМЫ СТРУКТУРА ПОЛНОМОЧИЯ 6
9. Характеристика понятий и принципов бюджетного процесса в РФ
10. Тема 10 Фінансові послуги з перейняття ризику Мета заняття- Навчальна- вивчити аспекти теорії с
11. Собиратели голов Руслан МельниковСобиратели голов Серия- Хэдхантер ~ 2 Scn HL; OCR
12. Типы реакций и их классификация в органической химии
13. Характеристика исходной информации и режим атмосферных осадков (на примере метеостанции Лиски)
14. После того как я дописал автоматизацию очень важны даты окончание описания было где то в 10 числах апре
15. Эпилепсия
16.  Расспрашивание или выяснение Это самый распространенный прием установления обратной связи
17. Лабораторная работа 14 Тема- Работа с файловой системой
18. варіант відповіді- Збільшити вихід продукту утвореного плавленням Збільшити чистоту продукту утворено
19. вариант 48 Выполнил- студент 2 курса
20. 0 Урсула Познански Игра 14