Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Borland C++3.1: Проблема с функцией

34K
08 апреля 2008 года
Kostyan777
8 / / 24.03.2008
Задача с использованием линейного односвязного списка.
Суть в том, что функция неправильно возврщает указатель.
Цитата:

Часть кода:
Код:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#define FNAME "db.dat"
struct toy
{
  char name[10];
  float cena;
  int num;
  float vozr_min,vozr_max;
  toy *next;
};
toy *add_it(toy *beg,toy *it) //vstavka elementa v spisok
{
 toy *begin=NULL;
 if(beg==NULL)     //novii spisok
 {
  beg=it;
  it->next=NULL;
  return beg;
 }
 else
 {
  if(it->cena <beg>cena)  //v nachalo
  {
    it->next=beg;
    return it;
  }
  else
  {
    begin=beg;
    while(!(beg->cena <it>cena && it->cena <beg>next->cena) &&
        beg->next!=NULL)
    {
     beg=beg->next;
    }
    if(beg->next==NULL)  // v konec
    {
     beg->next=it;
     it->next=NULL;
     return begin;
    }
    else             // v serediny
    {
     it->next=beg->next;
     beg->next=it;
     return begin;
    }
  }
 }
}
toy *read_file(char *filename) //  chtenie faila
{
  FILE *in=fopen(filename,"rb");
  int i=0;
  toy *beg=NULL,t;
  if(in!=NULL)
  {
    while(!feof(in))
    {
     if(fread(&t,sizeof(t),1,in))
     {
       beg=add_it(beg,&t);
       i++;
     }
    }
    fclose(in);
    n=i;
    return beg;

здесь *beg={"medved", 23.0, 5, 1.0, 13.0, NULL}
 
Код:
}
  else return 0;
}
void main()
{
. . . . . . . .
. . . . . . . .
toy *list=read_file(FNAME);
. . . . . . . .
}

здесь *list={"medved", 23.0, 5, 1.102043e-39, 1.681558e-44, DS:000C}


Как решить проблему?
(танец с бубном не помог :( )

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог