Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2012, 20:23   #1
Dodjik1
Новичок
Джуниор
 
Регистрация: 20.06.2012
Сообщений: 2
Сообщение Проблема в отображении Линейных Списков

Мужики помогите. Неотображаются линейный списки. Помогите доработать БД в долгу не останусь)
Код:
#define _CRT_SECURE_NO_WARNINGS

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <string.h>
#include <io.h>
#include <dos.h>
#include <conio.h>
#include <ctype.h>
#include <iostream>
#include <windows.h>
#define IFILE "date.txt"


#define MAX_NAME      30
#define MAX_SURNAME   40
#define MAX_HOBBY     101
#define count         200
#define MAX_BIRTHDAY  40

enum sex {MALE = 1, FEMALE = 2};




struct ITEM 
{
  int nAge;
  int nomer;
  char name[MAX_NAME];
  char surname[MAX_SURNAME];
  char birthday[MAX_BIRTHDAY];
  float group;
  int phone;
  enum sex g ;
  union 
  {
    int year_army;
    char hobby[MAX_HOBBY];
  };
  ITEM *pNext;
};


ITEM* NewItem(int nomer, int nAge, char name[MAX_NAME],  char surname[MAX_SURNAME], char birthday[MAX_BIRTHDAY], float group,int phone, enum sex g)
{
  ITEM *p = new ITEM;
  //(*p).nAge

  p->nomer =nomer;
  p->nAge = nAge;
  p->name[MAX_NAME] = name[MAX_NAME];
  p->surname[MAX_SURNAME] = surname[MAX_SURNAME];
  p->birthday[MAX_BIRTHDAY] = birthday[MAX_BIRTHDAY];
  p->group = group;

p-> phone=  phone;

  p->pNext = NULL;
  return p;
}


ITEM* GetLastItem(ITEM *pBegin)
{
  if (pBegin == NULL)
    return NULL;

  ITEM *i = pBegin;
  while(i->pNext != NULL)
    i = i->pNext;

  return i;
}


void AddItem(ITEM **ppBegin, ITEM *p)
{
  if (*ppBegin == NULL)
  {
    *ppBegin = p;
    return;
  }

  //  найти последний эл-т
  ITEM *pLast = GetLastItem(*ppBegin);
  //  к нему прикрутить новый
  pLast->pNext = p;
}


ITEM* GetItem(ITEM *pBegin, int n)
{
  if (pBegin == NULL)
    return NULL;

  int i = 0;
  ITEM *p = pBegin;
  while((p != NULL) && (i < n))
  {
    p = p->pNext;
    i++;
  }

  return p;
}
Dodjik1 вне форума Ответить с цитированием
Старый 20.06.2012, 20:24   #2
Dodjik1
Новичок
Джуниор
 
Регистрация: 20.06.2012
Сообщений: 2
По умолчанию

Продолжение кода
Код:
void DelItem(ITEM **ppBegin, int n)
{
  if (*ppBegin == NULL)
    return;

  ITEM *pDel;

  //  если удаляем первый эл-т
  if (n == 0)
  {
    pDel = *ppBegin;
    *ppBegin = pDel->pNext;
  }
  else
  {
    //  ищем эл-т под номером n - 1
    ITEM *pPrev = GetItem(*ppBegin, n - 1);
    if ((pPrev == NULL) || (pPrev->pNext == NULL)) 
      return;

    pDel = pPrev->pNext;
    //  у него меняем связь pNext
    pPrev->pNext = pDel->pNext;
  }

  delete pDel;
}


void Print(ITEM *pBegin)
{
  for(ITEM *p = pBegin; p != NULL; p = p->pNext){
    printf("element = %d\n", p->nAge);
      printf("etel = %d\n", p->phone);
	  printf("day = %d\n", p->birthday);}

}



void plusItem(ITEM *pBegin)
{
	int nomer;
	 int nAge;
  char name[MAX_NAME];
  char surname[MAX_SURNAME];
  char birthday[MAX_BIRTHDAY];
  float group;
  int phone;
   union 
  {
    int year_army;
    char hobby[MAX_HOBBY];
  };
  nomer=0;
  nomer++;
  group=1.1;
	phone=8921434345;
  system("cls");
  nAge=12;
  printf("Name, please: ");
  rewind(stdin);
  scanf("%s", name);
  printf("Surname, please: ");
  rewind(stdin);
  scanf("%s", surname);
  printf("Birthday, please(in format dd.mm.yy), please: ");
  rewind(stdin);
  scanf("%s", birthday);
 // printf("Group, please(for exemple 1088.2) : ");
 // rewind(stdin);
 // scanf("%f", group);
 // rewind(stdin);
  //printf("Home phone number, please: ");
 // rewind(stdin);
  //scanf("%d", phone);
  /*
printf("Sex, please(male - 1, female - 2): \n");
  rewind(stdin);
  scanf("%d", &c);
  if(c == 1)
  {
	  NewItem.g=MALE;
	  printf("Year of recruitment, please: ");
	  rewind(stdin);
	  scanf("%d", &NewItem.year_army);
  }
  else 
  {
	  NewItem.g=FEMALE;
	  printf("Hobby, please(no more than 100 characters).\n ");
	  printf("Don't use spaces. Instead, use the symbol '_' : ");
	  rewind(stdin);
	  scanf("%s",NewItem.hobby);
  }
  */
  AddItem(&pBegin, NewItem(nomer,nAge,name,surname,birthday,group,phone,MALE));
  printf("Successful! Press any key.");
   getc(stdin);
}



void menu(ITEM *pBegin) // главное меню программы
{

	setlocale(LC_ALL, "rus");
  int nKey; ;
  system("cls");
  printf("Выбирите дальнейшее действие: \n"); // выбор режима работы
  printf("1. Добавить новую запись\n");
  printf("2. Поиск\n");
  printf("3. Удалить запись\n");
  printf("4. Редактировать запись\n");
  printf("5. Просмотр всех записей \n");
  printf("6. Сохранить и выйти\n");
  printf("\nВвод: ");

  
  do{
    rewind(stdin); //Очистка буфера клавиатуры
	scanf("%d", &nKey);
    switch(nKey) {
      case 1: plusItem(pBegin);  // добавление
	break;
/*      case 2: search(pBegin);  // поиск
	break;
      case 3: remove(pBegin);  // удаление
	break;
      case 4: editing(pBegin);  // редактирование
	break;*/
      case 5:
		    system("cls");
		  Print(pBegin);;  // просмотр всех записей
	break;/*
      case 6: save_and_exit(pBegin);  // выход и сохранение всех данных в файл
	break;
      default: printf("Error! Re-enter, please:\n");
      break;
  */  }
  }while(nKey<1 || nKey>6);
  getc(stdin);


}


int _tmain(int argc, _TCHAR* argv[])
{

setlocale(LC_ALL, "rus");
  ITEM *pBegin = NULL;
  /*
  AddItem(&pBegin, NewItem(10,"sfdsdfd","gaga","21.12.34",12,MALE));
    AddItem(&pBegin, NewItem(10,"sdsfdsfd","loka","12.12.43",12,MALE));
  AddItem(&pBegin, NewItem(11,"fdssd","mama","12.12.32",12,MALE));
  AddItem(&pBegin, NewItem(12,"sdfsdd","papa","12.12.12",12,MALE));



  DelItem(&pBegin, 2);
  */
    printf("Start list:\n");
  Print(pBegin);

  printf("After del list:\n");
  Print(pBegin);
  


  /*


  
  int nKey, t, new_size = 0;
  //struct ITEM *pBegin = NULL;
  
  do
  {
    system("cls");// очистка экрана
    printf("\nБаза Студентов ИБКС 2012! \n\n");
    printf("Выберите режим работы БД: \n\n"); // выбор режима работы
    printf("1. Создать новую \n");
    printf("2. Загрузить из файла  \n");
    printf("\nВвод: ");
    rewind(stdin); //Очистка буфера клавиатуры
    scanf("%d", &nKey);

    switch(nKey) 
    {
      case 1:   
				system("cls");
				menu(&pBegin);
      case 2:   
				system("cls");
				FILE* f;
				f=fopen(IFILE,"r");
				if((f = fopen(IFILE, "r")) == NULL)
				{
					 perror("Загрузка из файла");
					 getch();
					 exit(1);
				}
				fscanf(f,"%d",&new_size);
				fclose(f);

				//load_from_file(pBegin);
				break;

      default:  printf("\n\nError! Re-enter, please:\n");
				Sleep(900);
				break;
    }

  } while(nKey<1 || nKey>2);
    */
 menu(pBegin);
 menu(pBegin);  
 Sleep(300);
 menu(pBegin);
menu(pBegin);
  getc(stdin);







  getch();





  system("pause");
	return 0;
}
Dodjik1 вне форума Ответить с цитированием
Старый 21.06.2012, 07:47   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем ты AddItem закомментировал?
Потому и не отображаются поскольку нечего отображать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема в отображении BMP в Делфи FoggySpurs Помощь студентам 2 23.04.2012 02:57
массив из линейных односвязных списков. Паскаль sergo93 Паскаль, Turbo Pascal, PascalABC.NET 3 16.04.2012 21:53
Сортировка линейных списков по ключам( Toria Паскаль, Turbo Pascal, PascalABC.NET 1 28.03.2012 00:44
Проблема при создании списков(динамич. структуры) через отдельную функцию(вне main) Aerial Общие вопросы C/C++ 1 22.09.2010 22:39
Отбор при отображении winson БД в Delphi 1 18.05.2009 17:04