Страница 1 из 212»
Модератор форума: Екатерина_Пашкова 
Форум учителей об образовании в России и мире » Форум педагогов по предметам, разделам » Форум учителей информатики » составить прогамму, помогите пожалуйста (на Паскале с использованием record или на С/C++ (struct))
составить прогамму, помогите пожалуйста
АрсикДата: Суббота, 18.02.2012, 15:09 | Сообщение # 1

Арслан Батыршин
Ранг: Дошколенок (?)
Группа: Пользователи
Российская Федерация
Уфа

Сообщений:
19
Награды: 0
Статус: Offline
составить программу , которая содержит текущую информацию о книгах в библиотеке.
Сведения о книгах включают:
-номер УДК;
-фамилию и инициалы автора;
-название;
-год издания;
-количества экземпяров данной книги в библиотеке;
Программа должна обеспечивать:
-начальное формирование данных обо всех книгах в библиотеке в виде двоичного дерева;
добавление данных о книгах, вновь поступающих в библиотеку;
-удаление данных о списываемых книгах;
-по запросу выдаются сведения о наличии книг в библиотеке, упорядоченных по годам издания
Спасибо
tjulenДата: Понедельник, 20.02.2012, 05:25 | Сообщение # 2

Евгений Тюленев
Ранг: Первоклашка (?)
Группа: Пользователи
Российская Федерация
Боровиха

Сообщений:
35
Награды: 1
Статус: Offline
Программа - это закодированный алгоритм если что:) Если по Вашему то берете текстовый редактор и тупо вбиваете в константы вашу информацию.

PS: Вообще-то ужасно когда так матерятся, давайте называть вещи своими именами!!! А то "программа может"( да ни чего не может текст по определению), программа содержит информацию о книгах. Караулл!!!!!!!!
Спасибо
alex_eduДата: Понедельник, 20.02.2012, 09:52 | Сообщение # 3

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Арсик, как и раньше: что вы уже сделали и что у вас не получилось? Что конкретно не понятно?
Спасибо
AYuDДата: Понедельник, 20.02.2012, 10:21 | Сообщение # 4

Андрей Юрьевич Долгов
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Москва

Должность: информатика, математика
Сообщений:
352
Награды: 4
Статус: Offline
Quote (Арсик)
начальное формирование данных обо всех книгах в библиотеке в виде двоичного дерева;

Это место поподробнее, пожалуйста.
Спасибо
Маня58Дата: Вторник, 21.02.2012, 20:24 | Сообщение # 5

Марина Кондратьева
Ранг: Студент (?)
Группа: Я - учитель
Российская Федерация
Москва

Должность: информатика
Сообщений:
165
Награды: 2
Статус: Offline
Обычно такие задачи идут в разделе ЗАПИСИ. А вот с двоичным деревом действительно хотелось бы поподробнее. Если не секрет - откуда задача?

Сообщение отредактировал Маня58 - Вторник, 21.02.2012, 20:24
Спасибо
alex_eduДата: Среда, 22.02.2012, 00:36 | Сообщение # 6

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Наверняка имеется ввиду двоичное дерево поиска

Сообщение отредактировал alex_edu - Среда, 22.02.2012, 00:42
Спасибо
AYuDДата: Среда, 22.02.2012, 09:27 | Сообщение # 7

Андрей Юрьевич Долгов
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Москва

Должность: информатика, математика
Сообщений:
352
Награды: 4
Статус: Offline
Если поиска, то при чём тут начальное формирование данных? Это подошло бы к хранению данных в деревянной структуре.
Тогда почему бинарной?

Прикольная опечатка. Древовидной.
Спасибо
alex_eduДата: Среда, 22.02.2012, 11:08 | Сообщение # 8

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Так, что б на стадии "формирования данных" это самое дерево и строилось. Возможно, чтоб обозначить, что нужен не просто, например, связанный список по которому будет потом осуществляться поиск, а именно сразу построение дерева.

А "бинарное", полагаю потому, что положение в дереве определяется двумя состояниями: меньше или иначе. Иначе говоря каждый узел имеет не более двух "детей".
Code

if (A >= C  )   идем направо
else идем налево


Сообщение отредактировал alex_edu - Среда, 22.02.2012, 11:08
Спасибо
alex_eduДата: Среда, 22.02.2012, 11:20 | Сообщение # 9

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Если это все задание полностью и исходя их пункта
Quote
-по запросу выдаются сведения о наличии книг в библиотеке, упорядоченных по годам издания

Условие сравнения должно работать по году. Тогда этот последний пункт можно реализовать следующий функцией
Code

ФункцияВыводаСпискаПоГодам (УказательНаУзел)
{
Если ЛеваяВетка заполнена то ФункцияВыводаСпискаПоГодам (УказательНаУзел.ЛеваяВетка);
Вывод Информации о Книге в текущем узле;
Если ПраваяВетка заполнена то ФункцияВыводаСпискаПоГодам (УказательНаУзел.ПраваяВетка);
}


Сообщение отредактировал alex_edu - Среда, 22.02.2012, 11:23
Спасибо
alex_eduДата: Среда, 22.02.2012, 11:22 | Сообщение # 10

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Т.е. на стадии вывод никакой сортировки или сравнения годов не будет - все будет сделано на стадии заполнения
Спасибо
AYuDДата: Среда, 22.02.2012, 11:25 | Сообщение # 11

Андрей Юрьевич Долгов
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Москва

Должность: информатика, математика
Сообщений:
352
Награды: 4
Статус: Offline
Ну вот его данные:
-номер УДК;
-фамилию и инициалы автора;
-название;
-год издания;
-количества экземпяров данной книги в библиотеке.

Дерево, видимо, такое:
Ф. И. Автора
--Первая книга
----1900г
----2000г
----2100г
--Вторая книга
----1950г
--Третья книга
----1800

УДК и количество экземпляров взаимно однозначно связаны с каждой книгой.
Кода тут бинарность воткнуть? Странное требование.
Спасибо
alex_eduДата: Среда, 22.02.2012, 12:32 | Сообщение # 12

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Нет. Не путайте. Вы смешали понятия.... Здесь не логическое дерево. А исключительно бинарное. Этому бинарному дереву (согласно задания) важен только год книги. (хотя можно сконструировать сложное условие сравнения где будут учтены хоть все поля). По сути в рамках данной задачи вся информация о книге, кроме года издания - шум, дополнительная ненужная инфа.

Вы создали дерево именно по иерархии: автор, книга, год издания. Это логическое дерево....
Поскольку Арсих до сих пор не ответил - значит ему не очень нужны знания. Поэтому публикую код. Но ориентир не на его задание, а именно на само дерево. Собственно отклонение от задания: там по запросу должен формироваться список, у меня он всегда работает после заполнения библиотеки. (возможно Арсику еще все в файл надо сохранять/читать)
Code

#include <stdio.h>
#include <stdlib.h>

typedef struct sBookInfo
{
  char UDK[10];
  char autor[80];
  char name[200];
  uint year;
  uint count;
  sBookInfo *left;
  sBookInfo *right;
} BookInfo;

BookInfo* getBookInfo()
{
  BookInfo *result = (BookInfo*)malloc(sizeof(BookInfo));
  printf("Enter UDK: ");
  scanf("%f",&result->UDK);
  printf("Enter autor: ");
  scanf("%80s",&result->autor);
  printf("Enter name: ");
  scanf("%200s",&result->name);
  printf("Enter year: ");
  scanf("%d",&result->year);
  printf("Enter books count: ");
  scanf("%d",&result->count);
  result->left =  NULL;
  result->right =  NULL;
  return result;
}
int compareBook(BookInfo *book1, BookInfo *book2)
{
  return (book1->year > book2->year);
}
void addBook(BookInfo *&parent, BookInfo *newBook)
{  
  if (parent == NULL)
   parent = newBook;
  else
  {
   if (compareBook(parent,newBook)) addBook(parent->left,newBook);
   else addBook(parent->right,newBook);
  }
}
void freeLibrary(BookInfo *book)
{
  if (book == NULL) return;
  freeLibrary(book->left);
  freeLibrary(book->right);
  free(book);
}
void printLibrary(BookInfo *book)
{
  if (book == NULL) return;
  printLibrary(book->left);
  printf("%s\t%d\t%d\t%s\t\%s\n",book->UDK,book->year, book->count, book->autor, book->name);
  printLibrary(book->right);
}
int main()
{
  int answer = 1;
  BookInfo *first = NULL;
  while (answer == 1)
  {
   addBook(first,getBookInfo());
   printf("\nAdd another book? (1 - Yes, 0 - No)");
   scanf("%d",&answer);
  }
  printf("\n");
  printLibrary(first);
  freeLibrary(first);
}
Спасибо
alex_eduДата: Среда, 22.02.2012, 12:34 | Сообщение # 13

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
собственно, если усложнить compareBook() то можно учесть все поля
Спасибо
alex_eduДата: Среда, 22.02.2012, 12:36 | Сообщение # 14

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Собственно в вике все нормально объяснено: Бинарное дерево поиска
Спасибо
alex_eduДата: Среда, 22.02.2012, 12:52 | Сообщение # 15

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Перечитал задание ТС:
возможно необходимо добавить обработку ситуации когда добавляется книга которая уже есть (т.е. надо просто увеличить количество книг);
добавить возможность удаление книги (возможно так же с учетом количества);

Так, что ТС осталось над чем подумать smile
Спасибо
Форум учителей об образовании в России и мире » Форум педагогов по предметам, разделам » Форум учителей информатики » составить прогамму, помогите пожалуйста (на Паскале с использованием record или на С/C++ (struct))
Страница 1 из 212»
Поиск:



Спорная ситуация с родителями или администрацией? Ищете выход из проблемы на уроке или с учеником?
Не знаете, как что-то сделать на компьютере?


Вы можете задать анонимный вопрос
х
Подробно изложите суть вашего вопроса.
Обратите внимание, что вопросы публикуются в открытом доступе не сайте, поэтому не указывайте персональные данные ваши или иных лиц. Однако стоит указать свой РЕГИОН, т.к. законодательство в разных регионах разное.
Отправить