Форум программистов, компьютерный форум CyberForum.ru

Меню и список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Здравствуйте! Не могу поместить class в один файл с программой. file.hpp http://www.cyberforum.ru/cpp-beginners/thread41186.html
#include "Cat.hpp" // здесь классы "2)" Cat::Cat(int initialAge) { itsAge = initialAge; } Cat::~Cat() {
C++ Массивы строк Привет всем! Задан массив строк. Как узнать который символ встечаетса найбольшое количество раз в етом массиве? http://www.cyberforum.ru/cpp-beginners/thread41179.html
C++ вывод на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер
Please, help me!!! Вот текст программы, которая выводит на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер только квадратов. Проблема в том, что необходимо исправить код, чтоб фигуры не исчезали за экран (т.е. 640х460) и были компактным набором, т.е. двигались неменяя своего положения относительно друг друга и стукаясь об стенку экрана меняли свое...
Округление дробного числа до целого в большую сторону. C++
Доброго дня. Я новичок в программирование на Visual C++. Проблема такая программа должна считать кол-во месяцев, если числа целые то программа шла дальше, если дробное то (например 3.33333) программа не округляет это число (в большую сторону) до 4. Перелопатил тонны литературы, но пропустил или не нашёл этого, большая просьба написать функцию которая могла бы это делать, или способ какой.
C++ Код из Delphi в C++ http://www.cyberforum.ru/cpp-beginners/thread41137.html
Нужно написать курсовую на C++. Сам я в программировании плохо шарю (не программист). Попросил у народу помощи, помогли. Но решение на Delphi: {$APPTYPE CONSOLE} type byteset=set of byte; var d:array of longint; procedure c; var a,b,i:longint;
C++ массив структур и функции Разработать модель прайс-листов по комплектующим. Каждую единицу оборудования должна описывать соответствующая структура (например, структура, описывающая видеокарты или мониторы), объект которой может входить в прайс-лист. Соответственно, прайс-лист - это массив структур, каждая из которых хранит один из вариантов оборудования и его цену. Написать функции для создания, удаления,... подробнее

Показать сообщение отдельно
uNsLide
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 15

Меню и список - C++

20.06.2009, 12:55. Просмотров 703. Ответов 0
Метки (Все метки)

Здравствуйте форумчане. Помоги пожалуйста в следующем вопросе:

У меня есть 2связный список, написано меню. Но в моменте когда написано make a list и delete custom необходимо чтобы выводились: Введите элемент и номер.

вот сам код:
Код
[CPP]
#ifndef __list_h
#define __list_h
#include <iostream>
#include <list>
using namespace std;

template <class Data> class Node 
{	
public:
    Node<Data> *next;
	Node<Data> *prev;
	Data data;  // данные
	Node(Data adddata = 0, Node* addnext = 0, Node* addprev = 0) 
    {
		data = adddata;
		next = addnext;
		prev = addprev;
	}
	
	Node* getNext() 
    { return next; }	
	Node* getPrev() 
    { return prev; }
	void setNext(Node* node) 
    { next = node; }
	void setPrev(Node* node)
    { prev = node; }
	Data getData() 
    { return data; }
	void setData(Data d) 
    { data = d; }
};

template <class Data> class List 
{
	Node<Data> *begin;
	Node<Data> *end;
public:
	List() 
    {
		begin = NULL;
		end = NULL;
	}
  // Функции. Обьявление	
	~List();
	bool empty();
	void print();
    void delHead();
    void delTail();
    int search(Data);
    int remove(int index);
//---------------------------------------------------------------------------------------------------
//Описание функций
int DelALL()  
{
        Node<Data> *tmp;
	if(begin!=0)
	{
                Node<Data> *tmp = begin;
                while(tmp)
                {       
                          tmp = tmp->next;
                          begin = tmp;
                          delete tmp;
                }
                end = NULL;
    }
}
	
	void addToBegin(Data data) 
    {
		Node<Data> *len = new Node<Data>(data,begin,NULL); 
        //Конструктор (данные, следующий элемент списка, предыдущий элемент)
		if(begin) begin->setPrev(len);
		else end = len;
		begin = len;
	}
	
	void addToEnd(Data data) 
    {
		Node<Data> *len = new Node<Data>(data,NULL,end);
		if(end) end->setNext(len);
		else begin = len;
		end = len;
	}
	
	int addCustom(int num, Data data)
     {
		int znach = 0;
		Node<Data> *next = begin, *prev;
		while (znach < num) 
        {
			if (next == NULL) 
            { break; }
			next = next->getNext();
			znach ++;
		}					
		if(next) prev = next->getPrev();
		Node<Data> *len = new Node<Data>(data,next,prev);
		if(prev)prev->setNext(len);
		else begin = len;
		if(next)next->setPrev(len);
        else end = len;		
	}
void printFromEnd() 
    {
		Node<Data> *tmp = end;
		cout << " * * *" << endl;
		cout << "List from the end: " << endl;
		while (tmp) 
        {
			cout << tmp->getData() << endl;
			tmp = tmp->getPrev();
		}
		cout << " * * *" << endl;
		
	}
	
	int swap(int index1, int index2) 
    {
        Node<Data> *tmp = begin;
		int i = 0;
        while (i<index1) 
        {
            if (!tmp) return 0;
            tmp = tmp->getNext();
            i++;
        }
        if(!tmp) return -1;         
        
        Node<Data> *tmp1 = begin;
	    i = 0;
		
        while (i<index2) 
        {
            if (!tmp1) return 0;
            tmp1 = tmp1->getNext();
            i++;
        }
        if(!tmp1) return -1;   
        
        Data d = tmp->getData();
        tmp->setData(tmp1->getData());
        tmp1->setData(d);
        
        return 0;
    }
	
};
template <class Data> bool List<Data>::empty()
{
         system("cls");
         if( begin == 0 && end == 0) cout << "\nYes.List is Empty." << endl;
         else cout << "\nNo.List isn't Empty." << endl;
}

template <class Data> List<Data>::~List()
{
         system("cls");
         DelALL();
}
template <class Data> void List<Data>::print()
{
         	Node<Data>* tmp = begin;
		cout << " * * *" << endl;
		cout << " List: " << endl;
		while (tmp) 
        {
			cout << (*tmp).getData() << endl;
			tmp = (*tmp).getNext();
		}
		cout << " * * *" << endl;
}


template <class Data> void List<Data>::delHead()
{
         Node<Data> *tmpDelete = NULL;
         if (begin == 0)
         { cout << "\nEmpty List" << endl; 
           system("pause");
            exit(0); }
         
         if(begin->next == 0)
         {
         begin = end = NULL;
         delete begin; }
         
         tmpDelete = begin;
         begin = tmpDelete->next;
         begin->prev = NULL;
         delete tmpDelete;
}
template <class Data> void List<Data>::delTail()
{
         Node<Data> *tmpDelete = NULL;
         Node<Data> *tmpEnd = NULL;
         if (end == 0)
         { cout << "\nEmpty List" << endl;
         system("pause");
           exit(0); }
           
         if(end->prev == 0)
         {
                      begin = end = NULL;
                      delete end;
         }
         tmpDelete = end;
         end = tmpDelete->prev;
         end->next = NULL;
         tmpEnd = end;
         delete tmpDelete;
         system("cls");
} 
template <class Data> int List<Data>::search(Data n)
{
	Node<Data> *tmp = begin;
		int index = 0;
		while (tmp) 
        {
			if (tmp->getData() == n)
				return index;
			tmp = tmp->getNext();
			index++; 
		}
		return -1;
}	
template <class Data> int List<Data>::remove(int index)
{
         int count = 0;
         Node<Data> *next = begin, *prev;
    while (count < index) 
    {
          if (next == NULL) 
          {return -1;}
                  next = next->getNext();
                  count ++;
    }
    if (next == NULL) 
    {return -1;}
    prev = next->getPrev();
    Node<Data> *del = next;
         next = next->getNext();
    prev->setNext(next);
         next->setPrev(prev);
    delete del;
    return 0;
}
#endifх
[/CPP]
[CPP]
#include "kyrs.h"

//---------------------------------------- Menu --------------------------------------------
int Menu();
int GetNumber(int,int);

int main() 
{
	List<int>list;
    bool done = false;
    while(!done) 
    {
                switch(Menu()) 
                {
                               case 1: system("cls"); 
       list.addToBegin(1);
       list.addToEnd(8);
	   list.addCustom(1,7);
	   list.addCustom(1,6);
	   list.addCustom(1,5);
	   list.addCustom(1,4);
	   list.addCustom(1,3);
	   list.addCustom(1,2);
                                   
                                    
       break;
       case 2: system("cls");list.print(); break;
       case 3: system("cls");list.printFromEnd(); break;
       case 4: system("cls");
               cout << "\nsearch(3) = " << list.search(3) << endl; break;
               // 3 - 3-й элемент списка
       case 5: system("cls"); 
               cout << "\nswap(3,5) = " << list.swap(3,5) << endl; 
               system("pause");list.print();break;
       case 6: system("pause");list.~List();break;
       case 7: system("cls");
               cout <<"Del elem №5\n"<<list.remove(5) << endl;list.print();system("pause");
               cout <<"Del elem №4\n" <<list.remove(4) << endl;list.print();system("pause");
               system("cls");
               break;
       case 8: system("pause");list.delTail();system("cls");
               list.print();break;
       case 9: system("pause");list.delHead();
               system("cls");list.print();break;
       case 11: cout << "\n\t\t\tThe End." << endl; exit(0);
       case 10: list.empty();break;
               done = true; break;
                    }
                }
                return 0;
    }
    
    int Menu() {
        cout << "\n============================== Main Menu ===================================\n" << endl;
        cout << "\t1 - Make a list \t\t\t 3 - Print from the back \n" << endl;
        cout << "\t2 - Print the List \t\t\t 4 - Search in the list \n" << endl;
        cout << "\t5 - Swap the elements \t\t\t 6 - Clear the List \n" << endl;
        cout << "\t7 - Delete Custom Element \t\t 8 - Delete Tail\n" << endl;
        cout << "\t9 - Delete Head\t\t\t\t 10 - Is List Empty?\n" << endl;
        cout << "\t\t\t\t11 - End of Work\n" << endl;
        return GetNumber(1,11);
    }
    
 int GetNumber(int min, int max)
 {
     int number=min;
     while(true) 
     {
                 cin >> number;
                 if ((number>=min)&&(number <= max)&&(cin.peek()=='\n')) break;
                 else
                 {
                     cout << "Repeat the number please:" << endl;
                     cin.clear();
                     while (cin.get()!='\n') {};
                 }
     }
     return number;
     system("pause");
}
[/CPP]
У меня это описано, но без этого вывода. Необходимо с ним. Я сам там немного запутался, кошда делал.
Заранее благодарю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru