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

Ваш аккаунт

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

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

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

(C++)ошибка в коде

9.8K
07 января 2007 года
FISH.ka
35 / / 07.01.2007
Код:
#include <iostream.h>
#include <string.h>
#include <stdio.h>
using namespace std;

struct Node{    //узел списка
public
    union { double n; char ch; };  //данные
    Node  Next;
    bool Num;  true//число,
    false;//символ

    Node( double a = 0 ) n(a), Next(NULL), Num(true) {};
    Node( char c = 0 ) ch(c), Next(NULL), Num(false) {};
    friend ostream & operator( ostream & out, const Node & n );
};

struct List{  //связанный список
    Node Begin, End; // первый и последний элемент списка
public
    List() Begin(NULL), End(NULL){};
    Node  begin(){ return Begin; }  //начало списка
    Node  end() { return NULL; }  //конец списка
     //добавление числа в конец списка
    void Push_back( double a ){
        if( End )
            End = End-Next = new Node(a);
        else
            Begin = End = new Node(a);
    }
     //добавление символа в начало списка
    void Push_front( char c ){
        Node  n = new Node(c);
        if( Begin ){
            n-Next = Begin;
            Begin = n;
        }
        else Begin = n;
    }
     //удаление данных из списка
    void Erase(){
        for( End = Begin; Begin; Begin = End ){
            End = End-Next;
            delete Begin;
        }
        Begin = End = NULL;
    }
    ~List(){
        Erase();
    }
};
ostream & operator( ostream & out, const Node & n ){
    if( n.Num )  //если узел содержит число
        out  n.n;
    else out  n.ch;  //иначе содержится симол
    return out;
}
  MAIN
int main(){
    List array;
    cout<<"Enter 10 int or char\n";
    double n;
    char c;

     //цикл добавления 10 чисел или символов
    for( int i=0; i<10; i++ ){
        if( cin>>n ){              //если считали число
            array.Push_back( n );  //число в конец списка
        }
        else{                      //если считываем не число
            cin.clear();
            cin>>c;
            array.Push_front( c ); //символ в начало списка
        }
    }
    cout<<"\n\nList out\n";

                                    // Вывод всего что считали
    for( Node  pt = array.begin(); pt; pt = pt-Next )
        cout  pt  n;

    array.Erase();                  // удаление всех элементов

    cin.sync();
    cout<<"\n\nPress enter key to continue";
    cin.get();  
    return 0;
}

помогите начинающей программистке, не пойму че тут за ошибки!!!
15K
07 января 2007 года
Sara
79 / / 04.01.2007
А что за ошибки? Код не компилируется или что-то неправильно работает?
9.8K
07 января 2007 года
FISH.ka
35 / / 07.01.2007
Не, здесь ошибки выписует в коде!
15K
07 января 2007 года
Sara
79 / / 04.01.2007
Так ты скажи конкретно, что за ошибки. Напиши:
1. как программа должна работать;
2. как работает на самом деле.
9.8K
07 января 2007 года
FISH.ka
35 / / 07.01.2007
Это связной список. там разные ошибки, попробуй запустить её у себя в компиляторе
63
07 января 2007 года
Zorkus
2.6K / / 04.11.2006
Скажи какой у тебя компилер, на разных могут быть разные проблемы. Даже с корректным кодом.
15K
07 января 2007 года
Sara
79 / / 04.01.2007
Попробовала запустить в Turbo C++ 3.0 - не компилируется.
Ругается на строчку "using namespace std" (я и сама не понимаю, что она означает :( )
355
07 января 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
первое что бросается в глаза -- после ключевого слова public двоеточие ставить надо. во-вторых не совсем понятный юнион (ну скомпилиться он должен вообще). потом интересные комменты по поводу true и false возле переменной bool Num, потом между заголовком конструктора и списком инициализации тоже двоеточие стоять должно. и Next как я понимаю должно быть указателем на Node -- это и с логической точки зрения провильно будет и от нескольких ошибок компиляции избавит.
а дальше просто смотреть влом
63
07 января 2007 года
Zorkus
2.6K / / 04.11.2006
Цитата: Sara
Попробовала запустить в Turbo C++ 3.0 - не компилируется.
Ругается на строчку "using namespace std" (я и сама не понимаю, что она означает :( )


Это подключение пространства имен std, в котором согласно нынешнему стандарту определена стандартная библиотека С++. Все хидеры без расширения .h размещаются там. Все хидеры с .h - размещаются в глобальном пространстве имен (как правило, устаревшие).

15K
07 января 2007 года
Sara
79 / / 04.01.2007
Хм... Прочитала первый пост еще раз, вдумчиво и внимательно...

Простите, уважаемый автор, а можно поинтересоваться, где вы взяли этот странный кусок кода? Сами написали или в инете нашли? Может быть, в источнике и есть разгадка? ;)

Компилироваться это действительно не может, ни в одном компиляторе :D
SCORP указал далеко не все ошибки. Их там гораздо больше.
9.8K
07 января 2007 года
FISH.ka
35 / / 07.01.2007
Действительно, нашла этот кусок в нете, ну там писали что она работает, мне списки надо сделать а я в них не очень, помогите отредактировать этот код
9.8K
08 января 2007 года
FISH.ka
35 / / 07.01.2007
Сама нашла ошибки. Все работает
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог