Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание списка 
:(
    Опции темы
darkness
Дата 22.10.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



Задача:
Создать двунаправленный список книг в библитеке (фамилия автора, название книги и кол-во экземпляров)
Создать на С.

Написал плка только добавление в список. Вот что получилось:
Код


#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<dos.h>
#include<alloc.h>
#include<math.h>
#define LIST struct list

LIST                                      //создаю структуру
{
  char inic[20], book[20];     
  int kol;
  LIST *pred, *next;         // указаетли на предыдущий и последующий элемент
};
LIST *now;                               //указатель на текущий(последний добавленный элемент)

void add_list(char famil[], char n_book[], int kol_vo)
{
  LIST *uk1;                                     // инициализирую переменную-указатель типа LIST 
  uk1=(LIST*) malloc(sizeof(LIST));  //   выделяю для неё пямять
  strcpy(uk1->book, n_book);        
  strcpy(uk1->inic, famil);
  uk1->kol=kol_vo;
  now->next=uk1;
  uk1->pred=now;
  uk1->next=NULL;
  now=uk1;
  return;
}

int main()
{
      

   char fam[20];
   char nam[20];
   int  koli;
  // заношу переменные в список
      printf ("Vvedite Familiu");
   scanf ("%s", fam);
   printf ("Vvedite Nazvanie");
   scanf ("%s", nam);
   printf ("Vvedite Kol_vo");
   scanf ("%d", koli);
   add_list(fam, nam, koli);

    getch();


    //  system("PAUSE");
      return 0;
}



Компилит нормально, без ошибок, но после занесения данных предлагает отправить отчёт об ошибке...
По ходу трабла в функциии add_list.  Не могу разобраться - Помогите!!!! ПЛИЗ!!!

--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
Daevaorn
Дата 22.10.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(darkness @  22.10.2006,  19:52 Найти цитируемый пост)
now->next=uk1;

Чему равно это самое now?
PM MAIL WWW   Вверх
MAKCim
Дата 22.10.2006, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



кто now будет инициализировать?
Код

LIST* now = (LIST*) malloc(sizeof(LIST));



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
darkness
Дата 22.10.2006, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



вот млин!!!
Ребят, огромное спасибо!!!
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
darkness
Дата 23.10.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



всё-таки продолжу тему...
вроде всё теперь компилит, но теперь проблема возникла в другом.
Итак, есть кольцевой двунаправленный список:
Код

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<dos.h>
#include<alloc.h>
#include<math.h>
#define LIST struct list

LIST
{
  char inic[20], book[20];
  int kol;
  LIST *pred, *next;
};
LIST *now, *top;    // top в данном случае является первый элемент



void add_list(char famil[], char n_book[], int kol_vo)
{
  LIST *uk1;
  uk1=(LIST*) malloc(sizeof(LIST));
  strcpy(uk1->book, n_book);
  strcpy(uk1->inic, famil);
  uk1->kol=kol_vo;
  now->next=uk1;
  uk1->pred=now;
  uk1->next=top;
  top->pred=uk1;
  now=uk1;

  return;
};

//void del_list

void print_list()
{
  LIST *uk1;
  uk1=now;
  while (uk1!=top)
      {

       printf ("%d\n",/* uk1->inic, */uk1->kol);                        //  место возможной ошибки....
       uk1=uk1->pred;
      }
   return;
};



int main()
{

    top=(LIST*) malloc(sizeof(LIST));
    now=(LIST*) malloc(sizeof(LIST));
    top->next=NULL;
    top->pred=NULL;
    top=now;

   char fam[20];
   char nam[20];
   int  koli;
   printf ("Vvedite Familiu");
   scanf ("%s", &fam);
   printf ("Vvedite Nazvanie");
   scanf ("%s", &nam);
   printf ("Vvedite Kol_vo");
   scanf ("%d", &koli);
   add_list(fam, nam, koli);

  

     print_list();
    getch();
     return 0;
}


Проблема теперь в функции print_list...  выводит на экран всякую дрянь, хотя параметры для printf заданы верно %d - десятичное целое...

Это сообщение отредактировал(а) darkness - 23.10.2006, 09:06
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
Daevaorn
Дата 23.10.2006, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(darkness @  23.10.2006,  09:57 Найти цитируемый пост)
uk1->next=NULL;
  top->pred=uk1;

Тут то кольцо и рушится... С логикой проблемы в программе.
PM MAIL WWW   Вверх
darkness
Дата 23.10.2006, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



Daevaorn, у меня на компе так и есть, а здесь забыл исправить. sorry - теперь кольцо....
Но проблема остаётся...

--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
Daevaorn
Дата 23.10.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(darkness @  23.10.2006,  10:08 Найти цитируемый пост)
Но проблема остаётся...

Не знаю, работает. Что я ввел, то и увидел. Только вот память ты нигде не освобождаешь...
Вообще-то существует отладчик, в которм очень удобно искать ошибки и самомуsmile
PM MAIL WWW   Вверх
darkness
Дата 23.10.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



Daevaorn, всё разобрался...
кстати по поводу памяти, какая в С есть функция альтернатива delete[] в С++ ?
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
Damarus
Дата 23.10.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Цитата(darkness @  23.10.2006,  10:48 Найти цитируемый пост)
кстати по поводу памяти, какая в С есть функция альтернатива delete[] в С++ ?

free
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1353 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.