- •Часть 1 Строки и структуры
- •Содержание
- •Порядок выполнения лабораторных работ
- •Оборудование, технические средства, инструмент
- •6.2 Работа с предложениями текста
- •6.3 Работа со структурами и бинарными файлами
- •Void create(void) // Создание файла
- •Void view(void) // Просмотр файла
- •6.4. Задание 1
- •6.5 Задание 2
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’.
-
Cчитать из текстового файла три предложения и вывести их в обратном порядке.
-
Считать текст из файла и вывести на экран только предложения, содержащие введенное с клавиатуры слово.
-
Считать текст из файла и вывести на экран только строки, содержащие двузначные числа.
-
Считать английский текст из файла и вывести на экран слова, начинающиеся с гласных букв.
-
Считать текст из файла и вывести его на экран, меняя местами каждые два соседних слова.
-
Считать текст из файла и вывести на экран только предложения, не содержащие запятых.
-
Считать текст из файла и определить, сколько в нем слов, состоящих из не более чем четырех букв.
-
Считать текст из файла и вывести на экран цитаты, то есть предложения, заключенные в кавычки.
-
Считать текст из файла и вывести на экран только предложения, состоящие из заданного количества слов.
-
Считать английский текст из файла и вывести на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.
-
Считать английский текст из файла и вывести его на экран, заменив каждую первую букву слов, начинающихся с гласной буквы, на прописную.
-
Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова «ноль», «один», …, «девять», начиная каждое предложение с новой строки.
-
Считать текст из файла, найти самое длинное слово и определяет, сколько раз оно встретилось в тексте.
-
Считать текст из файла и вывести его на экран, после каждого предложения добавляя, сколько раз встретилось в нем введенное с клавиатуры слово.
-
Считать текст из файла и вывести на экран сначала вопросительные, а затем восклицательные предложения.