Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу списов
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
maklein maklein вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.03.2012
По умолчанию списов - 30.03.2012, 14:47

У меня такое заданиеЖ Класс  однонаправленный список list. Дополнительно перегрузить следующие операторы:
+  добавить элемент в конец (list+item);
--  удалить элемент из конца (типа list--);
!=  проверка на неравенство.

cpp Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <set>
//#include <iomanip.h>
 struct shop
 {
  int number;
  char adress[40];
  char type[20];
  shop *next;
  int add();
  void del();
  void search();
  void output();
  void outall();
 };
 shop *listHead=new(shop);  //zaglavnoe zveno
 shop *last=listHead;          //poslednee zveno
 shop *list.next=NULL;
 shop *current;                 //tekushee zveno
 int key;
 
 int shop::add()
 {
    do
  {
   last=new(shop);
   last=(*last).next;
   std::cout<<"number:";
   std::cin>>(*last).number;
   std::cout<<"adress:";
   gets((*last).adress);
   std::cout<<"type:";
   gets((*last).type);
   std::cout<<"\n";
   (*last).next=NULL;
   std::cout<<"to add more, press \'a\'";
 
 
  }
  while (1==1);
 
 
 
 }
 void shop::search()
 {
  key=0;
  int flag=0;
  current=listHead;
  if((*current).next==NULL)
   std::cout<<"List is empty\n";
  else
  {
   std::cout<<"Enter a key number:";
   std::cin>>key;
   while((*current).next!=NULL)
   {
     if((*current).number==key)
      {(*current).output();
      flag=1;
      }
   }
   if(flag==0)
    std::cout<<"Shop not found\n";
  }
 }
 void shop::del()
 {
  shop *previous;
  key=0;
  std::cout<<"Enter a key number:";
  std::cin>>key;
  current=(*listHead).next;
  while(current!=NULL)
  {
   if((*(*current).next).number==key)
    {
     previous=current;
     current=(*current).next;
     (*previous).next=(*current).next;
     delete(current);
    }
   current=(*current).next;
  }
 }
 void shop::output()
 {
  std::cout<<"\nnumber:"<<number;
  std::cout<<"\ntype:"<<type;
  std::cout<<"\nadress:"<<adress;
 }
 void shop::outall()
 {
  if((*listHead).next==NULL)
    std::cout<<"List is empty";
  else
  {
   std::cout<<"??????????????????????????????????????????\n"; // ???????? ? borland c++ ??? DOS, ??? ????? ??? ???????? ??????? =)
   std::cout<<"?number?    type    ?       adress       ?\n";
   std::cout<<"??????????????????????????????????????????\n";
  current=(*listHead).next;
  while(current!=NULL)
  {
   std::cout<<"?"/*<<inter.set(6)*/<<(*current).number<<"?"/*setw(12)*/<<(*current).type;
   std::cout<<"?"<<(*current).adress<<"?\n";
   std::cout<<"??????????????????????????????????????????\n";
   current=(*current).next;
  }
  }
 }
 int main()
{shop obj;
system("cls");
while(1==1)
{
system("cls");
std::cout<<"    1. Add a new element"<<'\n';
std::cout<<"    2. Delete element"<<'\n';
std::cout<<"    3. Search"<<'\n';
std::cout<<"    4. Print all"<<'\n';
std::cout<<"    q. Exit"<<'\n';
switch(getch())
  {
 case '1': obj.add(); break;
 case '2': obj.del(); break;
 case '3': obj.search(); break;
 case '4': obj.output(); break;
 case 'q': return 0;
 system("pause");
  }
 }
}
пытался сделать но что - то не получается ((((

Последний раз редактировалось Влад; 30.03.2012 в 15:52
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов