Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> private member declared in class std::basic_ios<_E, при передаче файловой переменной в ф-ю 
V
    Опции темы
KasMP
Дата 24.12.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: нет
Всего: 30



Цитата(mes @  22.12.2008,  01:15 Найти цитируемый пост)
вот длинная арифметика  :

Красиво получилось smile smile  , прямо эстетическое чувство радуется user posted image!
Цитата(mes @  22.12.2008,  01:15 Найти цитируемый пост)
осталось загрузить числа в стек, сложить их и отправить результат в файл. 

Да, у меня все загрузилось smile (и даже работает smile ).

P.S.. Видимо, ты в некоторых местах специально чуть-чуть ошибся, чтобы я поискала smile  smile ...

Добавлено @ 10:33
И я даже все поняла с первого раза smile , кроме двух моментов:
  • зачем вместо unsigned int использовать size_t smile
  • это о чем smile :
    (понимаю, что при попытке вывести пустую структуру надо вывести "lv_empty", но что именно и как - большой вопрос...)
    Код

    std::ostream& operator << (std::ostream& o, const lv_value& lv)
    {
        if (lv.begin) o << lv.begin;
        else o<<"lv_empty";
        return o;
    }


Это сообщение отредактировал(а) KasMP - 24.12.2008, 10:52
PM MAIL   Вверх
mes
Дата 24.12.2008, 12:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KasMP @  24.12.2008,  10:29 Найти цитируемый пост)

Да, у меня все загрузилось smile (и даже работает smile )

Не прочь бы взглянуть на заключительный код .. интересно насколько разобралась с моей частью.  smile 

Цитата(KasMP @  24.12.2008,  10:29 Найти цитируемый пост)
P.S.. Видимо, ты в некоторых местах специально чуть-чуть ошибся, чтобы я поискала smile  smile ..

вполне возможно.. конкретного теста не делал.. но тоже интересно узнать где.  smile 


Цитата(KasMP @  24.12.2008,  10:29 Найти цитируемый пост)
И я даже все поняла с первого раза smile ,

Это радует  smile 

Цитата(KasMP @  24.12.2008,  10:29 Найти цитируемый пост)
зачем вместо unsigned int использовать size_t smile

не знаю ( .. не задумывался.. поставил инстинктивно, так как он по смыслу больше подходит.. это надо спросить кто лучше разбирается )

Цитата(KasMP @  24.12.2008,  10:29 Найти цитируемый пост)
(понимаю, что при попытке вывести пустую структуру надо вывести "lv_empty", но что именно и как - большой вопрос...)

Наше струиктура есть хранилище т.е ее можно расматривать как указатель.. смысл кода такой :
Код

std::ostream& operator << (std::ostream& o, const int* p)
{
    if (p) o << *p;
    else o<<"NULL";
    return o;
}

 сам текст условный.. можно ничего не выводить



--------------------
PM MAIL WWW   Вверх
xvr
Дата 24.12.2008, 19:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(KasMP @ 21.12.2008,  17:20)
Код

int main()
{
            res=new char[len1+1];
            esc=Addition(h1,h2,res);
}

Ломается из за этого
Смотрим функцию Addition 
Код

char *Addition (stack *h1, stack *h2, char *res)
{
    int mental=0, t, len=strlen(res);
         *(res+len-1)=t%10+48;
}
new char[len+1] только отводит память под строку, но НЕ инициализирует ее. Так что где strlen найдет завершающий 0 в этой 'строке' одному Гейтсу известно. Видимо где то очень далеко  smile 
Кстати, нормальные компиляторы конструкцию new char[] трактуют как ошибку:

Код

main()
{
 char* p=new char[];
}

Цитата

>g++ 1.cpp

1.cpp: In function `int main()':
1.cpp:3: error: expected primary-expression before ']' token

VC трактует ее как new char[0], почему то мне кажется, что это не то, что ожидалось  smile 

Это сообщение отредактировал(а) xvr - 24.12.2008, 19:06
PM MAIL   Вверх
mes
Дата 24.12.2008, 20:04 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KasMP @  24.12.2008,  10:29 Найти цитируемый пост)
std::ostream& operator << (std::ostream& o, const lv_value& lv)
{
    if (lv.begin) o << lv.begin;
    else o<<"lv_empty";
    return o;
}

Подумав решил что так будет выглядить удачней :
Код

..
    else o<<"0";
..



--------------------
PM MAIL WWW   Вверх
KasMP
Дата 25.12.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: нет
Всего: 30



Цитата(mes @  24.12.2008,  12:28 Найти цитируемый пост)
вполне возможно.. конкретного теста не делал.. но тоже интересно узнать где. 

Это даже не ошибки, а какие-то опечатки smile :
  • Код
    Ф-я сложения

    ...

    for (int i=0; i<lv1.end-lv1.begin; ++i) str[len-1-i] = *(lv1.end-1-i); // накладываем на буфер первое число
         int mental=0;
         for (int i=0; i<lv2.end-lv2.begin; ++i)
         {     // прибавляем второе :
              int t =  str[len-1-i]-'0' + *(lv1.end-1-i)-'0' + mental;
              str[len-1-i]=(t%10)+'0';
              mental = t/10;
        }
    ...

    Сложил первое число с самим собой (написал "1" вместо "2" в имени структуры в цикле).
  • Еще разряды как-то не с друг с другом складывались (впрочем, может сначала складывались правильно, но просто все разряды были первого числа и результат был неправильный; потом я начала что-то двигать и ... ). Но в итоге все идеально smile !
  • Неважно, где (важно, что len - не константа, известная на этапе компиляции):
    Код

    char str[len+1]; // временный буффер

    Поправила на "char *str = new char[len+1]".

Цитата(mes @  24.12.2008,  12:28 Найти цитируемый пост)
не знаю ( .. не задумывался.. поставил инстинктивно, так как он по смыслу больше подходит.. это надо спросить кто лучше разбирается )

Я поправила на unsigned int, чтобы избежать лишних вопросов (на которые я пока совсем не отвечу)...
Цитата(mes @  24.12.2008,  12:28 Найти цитируемый пост)
смысл кода такой :

Это мне тоже ни о чем не говорит.
Цитата(mes @  24.12.2008,  12:28 Найти цитируемый пост)
сам текст условный.. можно ничего не выводить

Нельзя. Без этой, извиняюсь, фигульки вылетает ошибка, из-за которой была создана тема (опять потоки smile !!)
Цитата(xvr @  24.12.2008,  19:06 Найти цитируемый пост)
new char[len+1] только отводит память под строку, но НЕ инициализирует ее.

 smile Понятно smile . Буду знать, спасибо smile smile .
Цитата(xvr @  24.12.2008,  19:06 Найти цитируемый пост)
почему то мне кажется, что это не то, что ожидалось 

 smile  smile 
Цитата(mes @  24.12.2008,  20:04 Найти цитируемый пост)
Подумав решил что так будет выглядить удачней :

Может и удачней, потому что не читавший этот код не знает, кто такой "lv", а "0" в месте, где ожидается число (пусть и длинное, представленное символами), будет понятен всем.
Цитата(mes @  24.12.2008,  12:28 Найти цитируемый пост)
Не прочь бы взглянуть на заключительный код .. интересно насколько разобралась с моей частью.  

Пожалуйста, держите прикрепленное к вашему творению smile  smile :
Код

// очевидные библиотеки и макроподстановки

int main()
{
    ifstream    f1(path1), f2(path2);
    ofstream    fout(pathout);
    char        *s1=new char[], *s2=new char[];
    lv_value    lv1, lv2, lv;


    lv_create(lv);
    
    while (!f1.eof() && !f2.eof()) {
        // чтение чисел
        f1.getline(s1,MAX,'\n'); f2.getline(s2,MAX,'\n');
        // printf("s1=%s, s2=%s.\n", s1, s2);
        lv_create(lv2,s2);
        lv_create(lv1,s1);
        // printf("lv1=%s.\n", lv1); printf("lv2=%s.\n", lv2);
        
        // подсчет суммы и запись в файл
        lv_add(lv1,lv2,lv);
        printf("lv=%s.\n", lv);
        fout << lv << '\n';

        // удаление структур
        lv_destroy(lv1); lv_destroy(lv2); lv_destroy(lv);

        printf("\n");
    }

    f1.close(); f2.close(); fout.close();

    getchar();
    return(0);
}

Ну и комментарии я написала под себя (под человека, не знающего объекты, конструкторы и т.п.; но в общих чертах я понимаю, что такое объект, его методы, конструктор и пр..).
PM MAIL   Вверх
mes
Дата 25.12.2008, 18:32 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KasMP @  25.12.2008,  17:40 Найти цитируемый пост)
Сложил первое число с самим собой (написал "1" вместо "2" в имени структуры в цикле).

нда.. Вот к чему приводит копипаст ((

Цитата(KasMP @  25.12.2008,  17:40 Найти цитируемый пост)
Неважно, где (важно, что len - не константа, известная на этапе компиляции):

да это не все компиляторы поддерживают 

Цитата(KasMP @  25.12.2008,  17:40 Найти цитируемый пост)

Поправила на "char *str = new char[len+1]".

Не забудь тогда и delete[]  добавить.


Цитата(KasMP @  25.12.2008,  17:40 Найти цитируемый пост)
Нельзя. Без этой, извиняюсь, фигульки вылетает ошибка, 

Не понял о какой ошибке идет речь, но под высказыванием ничего не выводить подразумевалось такое o<<"";
хотя ничего не мешает закомментировать эту строку.

Добавлено через 5 минут и 19 секунд
Цитата(KasMP @  25.12.2008,  17:40 Найти цитируемый пост)
Пожалуйста, держите прикрепленное к вашему творению smile  smile :


Цитата

Реализовать стек на основе динамических списков. С помощью него решить следующую задачу: в двух файлах записаны длинные натуральные числа (количество знаков больше 20). Найти их сумму и выписать ее в третий файл.

Помойму все таки чего то упустили в этом задании.. Где все таки должен быть стек ?? 




--------------------
PM MAIL WWW   Вверх
mes
Дата 25.12.2008, 18:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KasMP @  25.12.2008,  17:40 Найти цитируемый пост)
 lv_destroy(lv);

вынеси его за цикл.

и макросы path1, path2, pathout  замени на строки  smile 
(да и вобще макросов старайся избегать)

Цитата(KasMP @  25.12.2008,  17:40 Найти цитируемый пост)
  *s1=new char[], *s2=new char[];

а тут не забыто "MAX+1" в скобках?

Это сообщение отредактировал(а) mes - 25.12.2008, 18:58


--------------------
PM MAIL WWW   Вверх
KasMP
Дата 25.12.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: нет
Всего: 30



Цитата(mes @  25.12.2008,  18:32 Найти цитируемый пост)
Помойму все таки чего то упустили в этом задании.. Где все таки должен быть стек ?? 

Я думала об этом. Можно натянуть такой ответ:
стек - первым пришел, последним вышел (т.е. уходят положенные сверху элементы);
у нас своеобразный стек из одного элемента (точнее, 2 таких стека, каждый из которых будет содержать по одному элементу); этот элемент сначала загружается, оказывается на вершине, вершина выгружается, потом загружается новый, новый оказывается на вершине, вершина выгружается;
т.е. в принципе определение стека выполняется (по ходу дела здесь и дэк (как правильно пишется?), и др.очереди так же можно притянуть)
Цитата(mes @  25.12.2008,  18:49 Найти цитируемый пост)
вынеси его за цикл.

Да, правильно: у нас сложение начинается с уничтожения структуры-результата, незачем делать это дважды.
Цитата(mes @  25.12.2008,  18:49 Найти цитируемый пост)
(да и вобще макросов старайся избегать)

???
Почему???
Цитата(mes @  25.12.2008,  18:49 Найти цитируемый пост)
а тут не забыто "MAX+1" в скобках?

smile smile

Добавлено через 6 минут и 22 секунды
Цитата(mes @  25.12.2008,  18:32 Найти цитируемый пост)
хотя ничего не мешает закомментировать эту строку.

Вот-вот, в том-то и чудеса, что я ее, так сказать, /* */, и 
Код
1>.\5.cpp(134) : error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'lv_value' (or there is no acceptable conversion)
1>        K:\Visual Studio C++ 2008\VC\include\ostream(653): could be 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(700): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(738): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(785): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(909): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const signed char *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(916): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,signed char)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(923): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const unsigned char *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(930): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,unsigned char)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(170): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(176): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(183): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(190): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(210): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(short)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(243): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(263): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__w64 int)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(288): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__w64 unsigned int)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(308): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(328): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__w64 unsigned long)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(349): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__int64)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(369): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned __int64)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(390): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(float)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(410): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(double)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(430): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long double)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(450): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(const void *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        K:\Visual Studio C++ 2008\VC\include\ostream(470): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_streambuf<_Elem,_Traits> *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        while trying to match the argument list '(std::ofstream, lv_value)'


Добавлено через 10 минут и 50 секунд
Еще после каждого выполнения lv_destroy() (тех, которые в main() ), происходит такое:

user posted image
(номера блоков при перезапуске программы не меняются, внутри одного запуска все разные)

Не вижу причин для выхода за выделенную область.
PM MAIL   Вверх
mes
Дата 25.12.2008, 20:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KasMP @  25.12.2008,  20:26 Найти цитируемый пост)
Вот-вот, в том-то и чудеса, что я ее, так сказать, /* */, и 

a мы про какую строчку говорим то ?? что то подсказывает мне что про разные )
Покажи что и как комментировала.. 


Цитата(KasMP @  25.12.2008,  20:26 Найти цитируемый пост)
у нас своеобразный стек из одного элемента

но в задании сказано реализовать на основе списка.. А в коде ни слова.. и главное не понятно к ккой области его прикручивать )

Добавлено @ 20:45
Цитата(KasMP @  25.12.2008,  20:26 Найти цитируемый пост)
???
Почему???

Чтоб не споткнуться на труднообнаружимых и непонятных ошибках, возникших вследствии использования макросов.
Используй макросы только для управления этапом компиляции и для тех мест, где без них просто не обойтись.


Это сообщение отредактировал(а) mes - 25.12.2008, 20:46


--------------------
PM MAIL WWW   Вверх
KasMP
Дата 25.12.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: нет
Всего: 30



Цитата(mes @  25.12.2008,  20:41 Найти цитируемый пост)
a мы про какую строчку говорим то ?? что то подсказывает мен что про разные )

Я про вот эту:
Код

std::ostream& operator << (std::ostream& o, const lv_value& lv)
{
    if (lv.begin) o << lv.begin;
    else o<<"lv_empty";
    return o;
}
С ней нельзя оставаться:
1) видимо, это уже явный С++;
2) понятно, что я сама такое не напишу...
Цитата(mes @  25.12.2008,  20:41 Найти цитируемый пост)
но в задании сказано реализовать на основе списка.. А в коде ни слова.. и главное не понятно к ккой области его прикручивать )

Поздно уже переделывать smile .

Добавлено через 1 минуту и 17 секунд
Цитата(mes @  25.12.2008,  20:41 Найти цитируемый пост)
Используй макросы только для ...

А если просто определить переменные-константы, то будет чем-то лучше smile ? Или все равно smile?
PM MAIL   Вверх
mes
Дата 25.12.2008, 20:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KasMP @  25.12.2008,  20:45 Найти цитируемый пост)
Поздно уже переделывать smile . 

A когда сдавать то ?
На текущем этапе фактически ничего перелывать не надо.. Только бы вот понять куда этот стек запихать..

Добавлено @ 20:49
Цитата(KasMP @  25.12.2008,  20:45 Найти цитируемый пост)
Я про вот эту:

Т.е ты целиком закомментирова всю функцию ?? тогда писать в файл не будет..

Добавлено @ 20:51
хотя можно вместо операторa << поставить другое название функции и его использовать для вывода - ради того чтоб никто не подумал ))

Это сообщение отредактировал(а) mes - 25.12.2008, 20:55


--------------------
PM MAIL WWW   Вверх
KasMP
Дата 25.12.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: нет
Всего: 30



Цитата(mes @  25.12.2008,  20:48 Найти цитируемый пост)
A когда сдавать то ?

Очень желательно уложиться ... в час. Еще другие зачеты...
Цитата(mes @  25.12.2008,  20:48 Найти цитируемый пост)
На текущем этапе фактически ничего перелывать не надо.. Только бы вот понять куда пихать этот стек пихать..

Возможно, задание предполагает, что мы последовательно прочитаем все числа в 2 списка (элемент списка - структура, содержащая число (вернее, адреса начала и конц строки), закроем файлы и будем последовательно идти по спискам, выводя результаты в файл.
Но ведь очевидно, что это хуже: зачем занимать память всеми числами, когда можно оставить место для одного (для одной пары, точнее)...
Цитата(mes @  25.12.2008,  20:48 Найти цитируемый пост)
Т.е ты целиком закомментирова всю функцию ?? тогда писать в файл не будет.. 

Я уже говорила, как "хорошо" я понимаю ее.
PM MAIL   Вверх
mes
Дата 25.12.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KasMP @  25.12.2008,  20:45 Найти цитируемый пост)
А если просто определить переменные-константы, то будет чем-то лучше smile ? Или все равно smile? 

будет  smile 


--------------------
PM MAIL WWW   Вверх
KasMP
Дата 25.12.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: нет
Всего: 30



Цитата(mes @  25.12.2008,  20:48 Найти цитируемый пост)
хотя можно вместо операторa << поставить другое название функции ...

Может быть и можно, я совсем не понимаю.
Уже только одно начало "std::ostream&" заставляет долго думать...

Добавлено через 2 минуты и 20 секунд
Цитата(mes @  25.12.2008,  20:56 Найти цитируемый пост)
будет  smile  

Цитата(mes @  25.12.2008,  20:41 Найти цитируемый пост)
Чтоб не споткнуться на труднообнаружимых и непонятных ошибках, возникших вследствии использования макросов.

Я думала так: по сути в обоих случаях мы получаем константу, которой присвоено какое-то удобное имя -> шанс ошибиться одинаков smile . Нет smile ?!

Добавлено через 3 минуты и 9 секунд
Я давно себя так плохо не чувствовала. Столько ошибок и непониманий smile ...
PM MAIL   Вверх
mes
Дата 25.12.2008, 21:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KasMP @  25.12.2008,  20:55 Найти цитируемый пост)
Я уже говорила, как "хорошо" я понимаю ее. 

так вопрос надо было коректно поставить, где тебе непонятно, я или другие форумчане обяснили бы )

Код


std::ostream& 
               operator << (std::ostream& o, const lv_value& lv) // перегружаем оператор << для упомянутых в скобках аргументах
                                                              // т.е. для такой ситуации :   osteam<<lv_value
                                                              // чтоб программа знала как поступать когда подадим наш тип на вход потоку
{
    if (lv.begin)   // если наше число не пустое
                      o << lv.begin;  // то выводим его как строку используя оператор << с другой перегрузкой аргументов
                                             //   std::ostream&  operator << (std::ostream& o, const char *)
                                              // т.е ситуация  osteam<<const_char_*

    else o<<"0";      // иначе выводим строку 0
    return o; // возвращаем ссылку на поток , чтоб можно было организовать последовательность,
                 // типа такой о << lv << "\n" << lv1 << "\n"
}

если вдруг опять непонятно скажи..попробую подругому .

Добавлено через 5 минут и 52 секунды
Цитата(KasMP @  25.12.2008,  20:58 Найти цитируемый пост)
Я думала так: по сути в обоих случаях мы получаем константу, которой присвоено какое-то удобное имя -> шанс ошибиться одинаков smile . Нет smile ?!

нет макрос, это просто определение , которое будет подставлено вместо всех употреблений его имени в коде в режиме предкомпиляции .. т.е фактически "удобный" копи-паст.

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



Это сообщение отредактировал(а) mes - 25.12.2008, 21:07


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0818 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.