Форум программистов CodeGuru
18 Январь 2018, 16:11:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: программа для работы с двусвязным нециклическим списком. инверсия списка  (Прочитано 12928 раз)
0 Пользователей и 1 Гость смотрят эту тему.
siner
Новичок
*
Офлайн Офлайн

Сообщений: 1


Просмотр профиля
« : 09 Ноябрь 2013, 11:46:48 »

Есть программа для работы с двухсвязным списком. Есть проблемы с функцией инверсии списка. Visual C++ выдает следующую ошибку:
 c:\documents and settings\1\мои документы\visual studio 2010\projects\11\11\11.cpp(175): error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" (или приемлемое преобразование отсутствует)
 Подскажите, пожалуйста, как это исправить.

Код:
#include <iostream>
#include <windows.h>
using namespace std;
 
class Node
{
public:
    int number;
    Node* next;
    Node* last;
};
 
void russia(const char*);
 
void main()
{
    short action = -1;
    Node* head = NULL;
    Node* tail = NULL;
    Node* ptrLast = NULL;
 
    while (1)
    {       
        russia("1. Добавить Элемент\n");
        russia("2. Просмотр Списка\n");
        russia("3. Инверсия списка\n");
        russia("0. Выход\n\n");
        russia("Ваш Выбор: ");
        cin>>action;
 
        if (action == 0)
        {
            system("CLS");
            break;
        }
 
        if (action == 1)
        {
            system("CLS");
            int numb = -1;
            russia("Введите Число: ");
            cin>>numb;
            Node* ptr = new Node;
            ptr->number = numb;
            ptr->next = NULL;
            tail = ptr;
            if (head == NULL)
            {
                head = ptr;
                ptrLast = ptr;
                ptr->last = NULL;
                system("CLS");
                continue;
            }
            ptr->last = ptrLast;
            ptrLast->next = ptr;
            ptrLast = ptr;
            system("CLS");
            continue;
        }
 
        if (action == 2)
        {
            system("CLS");
            Node* ptr = NULL;
            if (head == NULL)
            {
                russia("\t!!! СПИСОК ПУСТ !!!\n\n");
                system("PAUSE");
                system("CLS");
                continue;
            }
            russia("* * * * * СПИСОК: СЛЕВА НАПРАВО * * * * *\n\n");
            ptr = head;
            while (1)
            {
                cout<<ptr->number<<" ";
                if (ptr->next == 0)
                    break;
                ptr = ptr->next;
            }
            cout<<"\n\n";
            system("PAUSE");
            system("CLS");
            continue;
        }
 
        if (action == 3)
        {
            system("CLS");
            Node* ptr = NULL;
           
            if (head == NULL)
            {
                cin >> ptr;
 
                int len = strlen(ptr);
                for (int i=0; i<(len-1)/2; i++)
                {
                     char c = ptr[i];
                     ptr[i] = ptr[len-1-i];
                     ptr[len-1-i] = c;
                }
 
                cout << "Perevernutue simvolu:\n" << ptr << endl;
                cin >> ptr;
                return 0;
            }
            system("PAUSE");
            system("CLS");
            continue;
        }
 
        if (action > 3)
        {
            system("CLS");
            russia("\t!!! НЕВЕРНЫЙ ВЫБОР. ПОВТОРИТЕ ВВОД !!!\n\n");
            system("PAUSE");
            system("CLS");
            continue;
        }
    }
}
 
void russia(const char* rus)
{
    char word[100];
    CharToOemA(rus, word);
    cout<<word;
}
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 09 Ноябрь 2013, 21:38:51 »

Есть проблемы с функцией инверсии списка. Visual C++ выдает следующую ошибку:

Ну да. Там, например, такая штука есть:

Код:
            Node* ptr = NULL;
           
            if (head == NULL)
            {
                cin >> ptr;

Оператор >> действительно не определен для пары типов std::istream и Node*.


Подскажите, пожалуйста, как это исправить.

Исправить это не получится, т.к. это не "проблемы с функцией инверсии списка", а отсутствие кода, выполняющего эту самую инверсию. Надо просто написать нужный код.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!