Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прога экзамен.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
29.59 Кб
Скачать

Int main()

{

num *head, *newList, *last, *current;

int n;

/*

где-то здесь идёт задавание списка, но оно не требуется в задании

*/

return 0;

}

// 15. Данные о книгах (автор, название, количество страниц) хранятся в стеке (односвязный список, добавление в начало).

//Оформить функцию добавления в список. Написать фрагмент программы, выводящий на экран данные о книгах, имеющих более 300 страниц.

#include <iostream>

#include <string>

using namespace std;

struct book

{

string aut;

string name;

int pages;

book *next;

};

void newel(book **head, book **newj, book **curr, book **last)

{

if ((*head) == nullptr)

{

(*newj) = new book;

cout << "Enter author, name and pages" << endl;

cin >> (*newj) -> aut >> (*newj) -> name >> (*newj) -> pages;

cout << endl;

(*head) = (*newj);

(*newj) -> next = nullptr;

(*curr) = (*newj);

(*last) = (*head);

} else

{

(*newj) = new book;

cout << "Enter author, name and pages" << endl;

cin >> (*newj) -> aut >> (*newj) -> name >> (*newj) -> pages;

cout << endl;

(*newj) -> next = (*head);

(*head) = (*newj);

(*curr) = (*newj);

}

}

void quest(book *head)

{

book *i = head;

while (i)

{

if (i -> pages > 300)

{

cout << i -> aut << " " << i -> name << endl;

}

i = i -> next;

}

}

Int main()

{

book *head = nullptr, *last = nullptr, *curr = nullptr, *newj = nullptr;

newel(&head, &newj, &curr, &last);

newel(&head, &newj, &curr, &last);

newel(&head, &newj, &curr, &last);

quest(head);

}

// 18. Написать фрагмент программы, находящий в стеке (односвязном списке, добавление в начало),

//состоящем из n вещественных элементов, среднее значение всех элементов и заменяющий им наименьший элемент.

//Оформить функцию добавления элемента.

#include <iostream>

#include <string>

using namespace std;

struct num

{

float a;

num *next;

};

void newel(int &n, num **head, num **newj, num **curr, num **last)

{

if ((*head) == nullptr)

{

(*newj) = new num;

cout << "Enter number" << endl;

cin >> (*newj) -> a;

cout << endl;

(*head) = (*newj);

(*newj) -> next = nullptr;

(*curr) = (*newj);

(*last) = (*head);

n = 1;

} else

{

(*newj) = new num;

cout << "Enter number" << endl;

cin >> (*newj) -> a;

cout << endl;

(*newj) -> next = (*head);

(*head) = (*newj);

(*curr) = (*newj);

n++;

}

}

void quest(num *head, int n)

{

num *i = head;

double sr = 0;

float min = i -> a;

while (i)

{

sr += i -> a;

if (i -> a < min)

min = i -> a;

i = i -> next;

}

sr /= double(n);

i = head;

while (i)

{

if (i -> a == min)

i -> a = sr;

}

cout << sr << endl;

}

Int main()

{

int n = 0;

num *head = nullptr, *last = nullptr, *curr = nullptr, *newj = nullptr;

newel(n, &head, &newj, &curr, &last);

newel(n, &head, &newj, &curr, &last);

newel(n, &head, &newj, &curr, &last);

quest(head, n);

}

// 19. Данные о продуктах (наименование, цена, срок годности в сутках) хранятся в двусвязном списке.

// Оформить функцию добавления в список. Написать фрагмент программы, выводящий на экран самый дорогой товар,

// срок годности которого не превышает 7 суток.

#include <iostream>

#include <string>

using namespace std;

struct p

{

string name;

int cost;

int days;

p *prev, *next;

};

void add_element(int &n, p **head, p **newList, p **last, p **current)

{

int tmp;

if((*head) != NULL)

{

(*newList) = new p;

//начало ввода

cin >> (*newList) -> name;

cin >> (*newList) -> cost;

cin >> (*newList) -> days;

//конец ввода

(*newList) -> next = NULL;

(*newList) -> prev = (*current);

(*current) -> next = (*newList);

(*last) = (*newList);

(*current) = (*newList);

}

else

{

(*newList) = new p;

//начало ввода

cin >> (*newList) -> name;

cin >> (*newList) -> cost;

cin >> (*newList) -> days;

//конец ввода

(*head) = (*newList);

(*newList) -> next = NULL;

(*newList) -> prev = NULL;

(*current) = (*newList);

(*last) = (*head);

}

n++;

}

void quest(p *head)

{

p *i = head;

int max = 0;

while (i)

{

if (i->days < 8 && i->cost > max)

max = i->cost;

i = i->next;

}

i = head;

while (i)

{

if (i->cost == max)

cout << i->name << endl;

i = i->next;

}

}