- •Курсовая работа по технологии программирования
- •Постановка задачи
- •1.2 Программа решения задачи 1.1
- •1.3 Результат работы программы
- •1.4 Объяснение результатов
- •1.5 Программа решения задачи 1.2
- •1.6 Результат работы программы
- •Лабораторная работа №2 «Использование основных операторов языка Си»
- •2.1 Постановка задачи
- •2.2 Программа решения задачи
- •2.3 Результат работы программы
- •Лабораторная работа №3 «Вычисление функций с использованием их разложения в степенной ряд»
- •3.1 Постановка задачи
- •Программа решения задачи
- •Результат работы программы
- •Лабораторная работа №4 «Работа с одномерными массивами»
- •4.1 Постановка задачи
- •Программа решения задачи
- •Результат работы программы
- •Лабораторная работа №5 «Функции и массивы»
- •Постановка задачи
- •Программа решения задачи
- •Результат работы программы
- •Лабораторная работа №6 «Строки»
- •Постановка задачи
- •Программа решения задачи
- •Результат работы программы
- •Постановка задачи
- •Программа решения задачи
- •Результат работы программы
- •Лабораторная работа №7.2 «Функции с переменным числом параметров»
- •Постановка задачи
- •Программа решения задачи
- •Результат работы программы
- •Лабораторная работа №8 «Блоковый ввод-вывод»
- •Постановка задачи
- •Программа решения задачи
- •Результат работы программы
- •Лабораторная работа №9 «Строковый ввод-вывод»
- •Постановка задачи
- •Программа решения задачи
- •Результат работы программы
- •11. Лабораторная работа №10 «Динамические массивы»
- •11. 1 Постановка задачи
- •2 Программа решения задачи
- •11.3 Результат работы программы
- •Лабораторная работа №11 «Информационные динамические структуры»
- •Постановка задачи
- •Программа решения задачи
- •12.3 Результат работы программы
Постановка задачи
Сформировать двоичный файл из элементов, заданной в варианте структуры, распечатать его содержимое, выполнить удаление и добавление элементов в соответствии со своим вариантом, используя для поиска удаляемых или добавляемых элементов функцию. Формирование, печать, добавление и удаление элементов оформить в виде функций. Предусмотреть сообщения об ошибках при открытии файла и выполнении операций ввода/вывода.
Структура "Информация":
носитель;
объем;
название;
автор.
Удалить первый элемент с заданным объемом информации, добавить элемент перед элементом с указанным номером.
Программа решения задачи
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <windows.h>
using namespace std;
/*
Структура "Информация":
носитель;
объем;
название;
автор.
Удалить первый элемент с заданным объемом информации, добавить элемент перед элементом с указанным номером.
*/
char* Rus(const char* text);
struct inform //структура
{
char nos[20];
int obyom;
char nazv[12];
char autor[15];
};
void input(int n);
void add(int n);
void del(int n);
void output();
int main(int argc, char** argv)
{
int kol;
cout << Rus("Сколько элементов запишем? ");
cin >> kol;
cout << endl;
input(kol); //вводим элементы
output(); //печатаем
cout << endl << Rus("Введите объем носителя, который хотите удалить: ");
int k;
cin >> k;
clrscr(); //очищаем экран
del(k); //удаляем нужный элемент
output(); //печатаем
cout << endl << Rus("Āāåäčņå ķīģåš, ļåšåä źīņīšūģ äīįąāčņü ķīāūé żėåģåķņ: ");
cin >>k;
add(k); //добавляем элемент на нужную позицию
output(); //печатаем
getch();
return 0;
}
//функция для добавления элемента перед элементом с заданным номером
void add(int n)
{
FILE *f,*f1;
inform b; //создаем структуру
f = fopen("data.txt", "r"); //открываем файл для чтения˙
f1 = fopen("data2.txt", "w"); //открываем файл для записи
for(int i=0; fread(&b,sizeof(b),1,f);i++)
{
// fread(&b,sizeof(b),1,f);
if(i == n-1) //встаем на нужную позицию
{
inform k; //создаем структуру
cout << Rus("Введите носитель: "); cin >> k.nos ;
cout << Rus("Введите объем: "); cin >> k.obyom ;
cout << Rus("Введите название: "); cin >> k.nazv ;
cout << Rus("Введите автора: "); cin >> k.autor;
cout << endl;
fwrite(&k,sizeof(k),1,f1); //заносим структуру в файл
}
fwrite(&b,sizeof(b),1,f1);
}
fclose(f);
fclose(f1);
f = fopen("data.txt", "w");
f1 = fopen("data2.txt", "r");
while(fread(&b,sizeof(b),1,f1))
{
fwrite(&b,sizeof(b),1,f);
}
fclose(f);
fclose(f1);
}
//функция для заполнения структур
void input(int n)
{
inform b; //создаем структуру
FILE *f;
f = fopen("data.txt", "w"); //открываем файл для записи
for(int i=0; i<n; i++) //заполняем нужное количество раз
{
cout << Rus("Вводим структуру: ") << i+1 << endl;
cout << Rus("Введите носитель: "); cin >> b.nos ;
cout << Rus("Введите объем: "); cin >> b.obyom ;
cout << Rus("Введите название: "); cin >> b.nazv ;
cout << Rus("Введите автора: "); cin >> b.autor;
cout << endl;
fwrite(&b,sizeof(b),1,f); //заносим структуру в файл
}
fclose(f);
}
//функция для удаления элемента с нужным объемом
void del(int n)
{
FILE *f,*f1;
inform b;
f = fopen("data.txt", "r"); //открываем файл для чтения
f1 = fopen("data2.txt", "w"); //открываем файл для записи
for(int i=0; fread(&b,sizeof(b),1,f);i++) //начинаем двигаться по файлу
{
//fread(&b,sizeof(b),1,f);
if(b.obyom == n) continue; //находим нужный элемент, не записываем его, пропускаем
fwrite(&b,sizeof(b),1,f1); //переписываем элемент
}
fclose(f);
fclose(f1);
f = fopen("data.txt", "w");
f1 = fopen("data2.txt", "r");
while(fread(&b,sizeof(b),1,f1))
{
fwrite(&b,sizeof(b),1,f);
}
fclose(f);
fclose(f1);
}
//функция для печати на экран
void output()
{
inform b;
FILE *f;
f = fopen("data.txt", "r"); //открываем файл для чтения
//оформляем вывод таблицей
cout << setw(3) << Rus("Номер");
cout << setw(10) << Rus("носитель");
cout << setw(7) << Rus("объем");
cout << setw(10) << Rus("название" );
cout << setw(10) << Rus("автор" );
cout << endl;
for(int i=0; fread(&b,sizeof(b),1,f); i++)
{
cout << setw(3) << i+1;
cout << setw(10) << b.nos;
cout << setw(7) << b.obyom;
cout << setw(10) << b.nazv;
cout << setw(10) << b.autor;
cout << endl;
}
fclose(f);
}
char bufrus[256];
char* Rus(const char* text)
{
CharToOem(text,bufrus);
return bufrus;
}