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

  • ОТЧЕТ по лабораторной работе № 1

  • Тема работы

  • Задачи работы

  • Вариант № 30 Задание

  • Выполнение задания: Исходный файл

  • Текст программы

  • Схема алгоритма работы программы: Скриншоты работы программы

  • Программирование. ЛР1: Добавление записи в массив структур и удаление записи из массива структур по запросу пользователя на язык. Прога 1 Фурсов. Добавление записи в массив структур и удаление записи из массива структур по запросу пользователя на языке С


    Скачать 1.48 Mb.
    НазваниеДобавление записи в массив структур и удаление записи из массива структур по запросу пользователя на языке С
    АнкорПрограммирование. ЛР1: Добавление записи в массив структур и удаление записи из массива структур по запросу пользователя на язык
    Дата12.01.2020
    Размер1.48 Mb.
    Формат файлаdocx
    Имя файлаПрога 1 Фурсов.docx
    ТипОтчет
    #103630
    страница1 из 4
      1   2   3   4

    ФГБОУ ВО

    Уфимский государственный авиационный технический университет

    Кафедра ТК

    ОТЧЕТ

    по лабораторной работе № 1

    по дисциплине «Программирование»
    Вариант № 30

    Выполнил: студент гр. ИВТ-120

    Фурсов Н.Ю.
    Проверил: доцент каф. ТК

    Хасанов А.Ю.


    Уфа 2019

    Тема работы: Добавление записи в массив структур и удаление записи из массива структур по запросу пользователя на языке С++.
    Цель работы: Получение навыков работы с динамическими массивами структур на языке С++.
    Задачи работы:

    - составить схему алгоритма работы программы;

    - написать программу на языке С++ с использованием динамических массивов структур и сортировки структур;

    - протестировать работоспособность программы для различных исходных данных.
    Вариант № 30
    Задание:

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


    1. Сортировка перечня:

      1. По стоимости игрушек в порядке возрастания.

      2. По названию игрушек в алфавитном порядке, а при совпадении названия по стоимости в порядке убывания.

    Выполнение задания:
    Исходный файл:


    Текст программы:
    #include

    #include

    #include

    #include

    #include

    #include

    using namespace std;
    struct toys

    {

    string name;

    double price;

    int y1;

    int y2;

    };
    const int N = 100;
    void flinpt(toys *a, int &n) //Ввод из файла

    {

    ifstream fin;

    fin.open("toys.txt");

    string temp;

    n = 0;

    while (fin >> temp)

    {

    a[n].name = temp;

    fin >> a[n].price >> a[n].y1 >> a[n].y2;

    n++;

    }

    }
    void look(toys *a, int n) //Вывод массива на экран

    {

    cout << "_________________________________________" << endl;

    cout << "| № | Название | Цена | Возраст |" << endl;

    cout << "_________________________________________" << endl;

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

    {

    cout << "|" << setw(3) << i + 1 << "|" << setw(18) << a[i].name << "|" << setw(5) << a[i].price << "|" << setw(7) << a[i].y1 << "-" << setw(2) << a[i].y2 << "|" << endl;

    };

    }
    void sortprice(toys *a, int n) //Сортировка по цене

    {

    toys p;

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

    for (int j = 0; j < n; j++)

    if (a[i].price < a[j].price)

    {

    p = a[i];

    a[i] = a[j];

    a[j] = p;

    }

    }
    void sortnameprice(toys *a, int n) //Соритровка по алфавиту,а при совпадении по цене

    {

    toys p;

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

    for (int j = 0; j < n; j++)

    {

    if (a[i].name < a[j].name)

    {

    p = a[i];

    a[i] = a[j];

    a[j] = p;

    }

    if (a[i].name == a[j].name)

    if (a[i].price > a[j].price)

    {

    p = a[i];

    a[i] = a[j];

    a[j] = p;

    }

    }
    }
    void search(toys *a, int n, toys *b, int &k) // Поиск

    {

    k = 0;

    toys srch, prmax;

    double delta;

    cout << "Введите диапазон возраста и разброс цены" << endl;

    cin >> prmax.y1 >> prmax.y2 >> delta;

    prmax.price = 0;

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

    {

    if (prmax.y1 >= a[i].y1 && prmax.y2 <= a[i].y2)

    if (a[i].price >= prmax.price)

    prmax.price = a[i].price; //Нашли самую большую цену на игрушку этого возраста

    }

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

    if ((a[i].price > (prmax.price - delta)) && ((a[i].y1 >= prmax.y1 && a[i].y1 <= prmax.y2) || (a[i].y2 >= prmax.y1 && a[i].y2 <= prmax.y2)))

    {

    b[k] = a[i];

    k++;

    }
    }
    void sortname(toys *b, int n) //Сортировка выходного массива

    {

    toys p;

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

    for (int j = 0; j < n; j++)

    {

    if (b[i].name < b[j].name)

    {

    p = b[i];

    b[i] = b[j];

    b[j] = p;

    }

    }

    }
    void add(toys *a, int &n)

    {

    if (n + 1 < N)

    {

    toys f;

    cout << "Введите название игрушки, цену и возрастной диапазон(Корабль 500 2 3" << endl;

    cin >> f.name >> f.price >> f.y1 >> f.y2;

    a[n] = f;

    n++;

    }

    else

    {

    cout << "Нет памяти" << endl;

    }

    system("pause");

    }
    void remove(toys *a, int &n)

    {

    look(a, n);

    int num, rmv, i;

    toys del;

    cin >> num; num--;

    if (num < 0 || num > n)

    cout << "Ошибка ввода.Такой строки нет." << endl;

    else

    {

    cout << a[num].name << " " << a[num].price << "руб " << a[num].y1 << "-" << a[num].y2 << "лет" << endl;

    cout << "Удалить?(1-да,2-нет)" << endl;

    cin >> rmv;

    if (rmv != 1)

    {

    cout << "Запись не удалена, возврат в меню." << endl;

    system("pause");

    }

    if (rmv == 1)

    {

    for (i = 0; i < num; i++)

    a[i] = a[i];

    for (i = num + 1; i < n; i++)

    a[i - 1] = a[i];

    n--;

    cout << "Запись успешно удалена,возврат в меню." << endl;

    system("pause");

    }

    }

    }
    void save(toys *a, int &n)

    {

    string filename, endway;

    string waydesktop = "D:/toys.txt";

    string txt = ".txt";

    cout << "Введите имя файла" << endl;

    cin >> endway;

    waydesktop += endway;

    waydesktop += txt;

    ofstream fout(waydesktop);

    if (!fout.is_open()) cout << "Ошибка";

    fout << "_________________________________________" << endl;

    fout << "| № | Название | Цена | Возраст |" << endl;

    fout << "_________________________________________" << endl;

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

    {

    fout << "|" << setw(3) << i + 1 << "|" << setw(18) << a[i].name << "|" << setw(5) << a[i].price << "|" << setw(7) << a[i].y1 << "-" << setw(2) << a[i].y2 << "|" << endl;

    };

    }
    int main()

    {

    SetConsoleCP(1251);

    SetConsoleOutputCP(1251);

    toys a[N], b[N];

    int n = 0, k = 0;

    while (true)

    {

    system("cls");

    int menu;

    cout << "0 - ввод из файла" << endl;

    cout << "1 - Сортировка исходного массива по цене" << endl;

    cout << "2 - Сортировка исходного массива по алфавиту и при совпадении названия — по цене" << endl;

    cout << "3 - Поиск" << endl;

    cout << "4 - Сортировка массива поиска по алфавиту" << endl;

    cout << "5 - Добавить запись" << endl;

    cout << "6 - удалить запись" << endl;

    cout << "7 - Вывод массива на экран" << endl;

    cout << "8 - сохранить исходный массив в файл" << endl;

    cout << "9 - сохранить выходной массив в файл" << endl;

    cout << "10 - Выход из программы" << endl;

    cin >> menu;

    switch (menu)

    {

    case 0:

    {

    flinpt(a, n);

    look(a, n);

    system("pause");

    break;

    }

    case 1:

    {

    sortprice(a, n);

    look(a, n);

    system("pause");

    break;

    }

    case 2:

    {

    sortnameprice(a, n);

    look(a, n);

    system("pause");

    break;

    }

    case 3:

    {

    search(a, n, b, k);

    look(b, k);

    system("pause");

    break;

    }

    case 4:

    {

    sortname(b, k);

    look(b, k);

    system("pause");

    break;

    }

    case 5:

    {

    add(a, n);

    break;

    }

    case 6:

    {

    remove(a, n);

    break;

    }

    case 7:

    {

    look(a, n);

    system("pause");

    break;

    }

    case 8:

    {

    save(a, n);

    break;

    }

    case 9:

    {

    save(b, k);

    break;

    }

    default:

    {

    exit(1);

    }

    }

    }
    }
    // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"

    // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
    // Советы по началу работы

    // 1. В окне обозревателя решений можно добавлять файлы и управлять ими.

    // 2. В окне Team Explorer можно подключиться к системе управления версиями.

    // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.

    // 4. В окне "Список ошибок" можно просматривать ошибки.

    // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.

    // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
    Схема алгоритма работы программы:


    Скриншоты работы программы:


      1   2   3   4


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