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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите найти ошибку 
:(
    Опции темы
Zarg
  Дата 17.4.2007, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Изучаю C++ по книге Самоучитель С++ Г.Шилд
застрял на классах, пиреписываю с книжки вот такой код

Код

#include <iostream>

using namespace std;
#define SIZE 10
class stack{
        char stck[SIZE];
        int tos;
public:
        void init ();
        void push (char ch);
        char pop ();
};

void stack::init ()
{
tos=0;
}

void stack::push (char ch)
{
if (tos==SIZE){
        cout << "Ctek polon";
        return;
}
char stack::pop ()
{
if (tos==0) {
        cout << "Stek pust";
        return 0;
        }
        tos--;
        return stck [tos];
}

int main ()
{
stack s1, s2;

int i;
s1.init ();
s2.init ();

s1.push ('a');
s2.push ('x');
s1.push ('b');
s2.push ('y');
s1.push ('c');
s2.push ('z');

for (i=0;i<3;i++) cout << "Simvol iz s1:" << s1.pop() << "\n";
for (i=0;i<3;i++) cout << "Simvol iz s2:" << s2.pop() << "\n";

return 0;
}



Компилирую во FreeBSD компилятором c++:

#c++ prog.c

в ответ получаю:
prog.c: In member function `void stack::push(char)':
prog.c:25: error: expected primary-expression before "char"
prog.c:25: error: expected `;' before "char"
prog.c:35: error: expected primary-expression before "int"
prog.c:35: error: expected `;' before "int"
prog.c:54: error: expected `}' at end of input

Подскажите новичку, что не нравится компилятору?
PM MAIL   Вверх
Daevaorn
Дата 17.4.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Zarg @  17.4.2007,  19:14 Найти цитируемый пост)
void stack::push (char ch){if (tos==SIZE){        cout << "Ctek polon";        return;}

не хватает }. О чем компилятор косвенно и говорит. Смотри внимательно
PM MAIL WWW   Вверх
betal
Дата 19.4.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Daevaorn @  17.4.2007,  18:18 Найти цитируемый пост)
не хватает }. О чем компилятор косвенно и говорит. Смотри внимательно 
 smile 

--------------------
101100010100001101100001110100101111011легкие деньги
PM WWW ICQ   Вверх
SerpentVV
Дата 20.4.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 27.11.2006
Где: Астрахань

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



Цитата(Zarg @ 17.4.2007,  18:14)
Изучаю C++ по книге Самоучитель С++ Г.Шилд
застрял на классах, пиреписываю с книжки вот такой код

Код


void stack::push (char ch)
{
if (tos==SIZE){
        cout << "Ctek polon";
        return;
}



Подскажите новичку, что не нравится компилятору?

Не знаю, как компилятору, а мне не нравится, что нет ветки else ...
Как ты в стек-то кладешь передаваемый символ?

и не хватает закрывающей скобки
PM MAIL   Вверх
pmy
Дата 21.4.2007, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <iostream>
using namespace std;

#define SIZE 10

class stack
{
        char stck[SIZE];
        int tos;
public:
        void init();
        void push(char ch);
        char pop();
};

void stack::init()
{
    tos=0;
}

void stack::push(char ch)
{
    if (tos==SIZE)
        cout << "Ctek polon";
    else
    {
        stck[tos]=ch;
        tos++;
    }
        
}

char stack::pop()
{
    if (tos==0)
    {
        cout << "Stek pust";
        return 0;
    }
    else
    {
        tos--;
        return stck[tos];
    }
}

int main ()
{
    stack s1, s2;

    int i;
    s1.init();
    s2.init();

    s1.push ('a');
    s2.push ('x');
    s1.push ('b');
    s2.push ('y');
    s1.push ('c');
    s2.push ('z');

    for (i=0; i<3; i++) 
        cout << "Simvol iz s1:" << s1.pop() << "\n";
    for (i=0;i<3;i++) 
        cout << "Simvol iz s2:" << s2.pop() << "\n";

return 0;
}


Это сообщение отредактировал(а) pmy - 21.4.2007, 03:00
PM MAIL   Вверх
dzin
Дата 21.4.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тоже только начал изучать по Шилду.Возник вопрос почти сразу :пишу код по книге(тема:глобальные переменные)инициализирую переменную перед инт майн , а компилятор ругается типа undeclared.Подскажите что не так делаю .Имхо полный ламsmile  

Это сообщение отредактировал(а) dzin - 21.4.2007, 09:56
PM MAIL   Вверх
Anikmar
Дата 21.4.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 9
Всего: 59



Цитата(dzin @  21.4.2007,  09:46 Найти цитируемый пост)
Подскажите что не так делаю 

Запросто. Покажите как вы делаете и мы подскажем что не так!
PM MAIL ICQ   Вверх
Armenia
Дата 21.4.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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




Код

#include <iostream>

using namespace std;
int i=8;
int main()
{
int i=7;
cout<<"Global(i)="<<::i<<" "<<"Local(i)="<<i<<endl;
    return 0;
}

вот  пример.
работает на сто.

Это сообщение отредактировал(а) Armenia - 21.4.2007, 10:58
PM   Вверх
Anikmar
Дата 21.4.2007, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 9
Всего: 59



Цитата(Armenia @  21.4.2007,  10:51 Найти цитируемый пост)
вот  пример.
работает на сто. 


Только неправильно.  smile 
У вас глобальная переменная перекрывается локальной.
PM MAIL ICQ   Вверх
Armenia
Дата 21.4.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Anikmar @ 21.4.2007,  10:53)
Цитата(Armenia @  21.4.2007,  10:51 Найти цитируемый пост)
вот  пример.
работает на сто. 


Только неправильно.  smile 
У вас глобальная переменная перекрывается локальной.

значит я вопрос не понял. smile
а что надо делать?
PM   Вверх
Anikmar
Дата 21.4.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 9
Всего: 59



Цитата(Armenia @  21.4.2007,  11:00 Найти цитируемый пост)
значит я вопрос не понял. 
а что надо делать? 


Я сам не знаю что делать. Показать где ошибка в объявлении глобальной переменной. Жду кода от dzin.
PM MAIL ICQ   Вверх
dzin
Дата 21.4.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



#include<iostream>
int global;
void func1();
void func2();
int main(void)
{
global=100;
func1();
return 0;
}
void func1(void)
{
int temp;
temp=global;
func2();
printf("global is %d",global);
}
void func2(void)
{
int global;
for(global=0;global<10;global++)
putchar('.');
}
PM MAIL   Вверх
JackYF
Дата 21.4.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



dzin, пользуйся тегами выделения кода [code=cpp],пожалуйста. Кнопка Код сверху...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
dzin
Дата 21.4.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сорри ,но в данный момент пишу с мобильного(мини опера)
PM MAIL   Вверх
Armenia
Дата 21.4.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



dzin 
все  работает (Visual Studio.NET)
вот результат "..........global is 100"
может с компилятором у вас проблемы smile
PM   Вверх
dzin
Дата 21.4.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Armenia @ 21.4.2007,  12:00)
dzin 
все  работает (Visual Studio.NET)
вот результат "..........global is 100"
может с компилятором у вас проблемы smile

Спасиб ,значит в компиляторе трабл.Будем скатьsmile
PM MAIL   Вверх
Anikmar
Дата 21.4.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 9
Всего: 59



Цитата(dzin @  21.4.2007,  12:05 Найти цитируемый пост)
Спасиб ,значит в компиляторе трабл.Будем скать 

А какой компилятор? И как конкретно ругается?
Цитата(dzin @  21.4.2007,  11:36 Найти цитируемый пост)

void func2(void)
{
int global; 
for(global=0;global<10;global++)
putchar('.');

Это специально перекрытие сделано локальной - глобальной?
PM MAIL ICQ   Вверх
dzin
Дата 21.4.2007, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Anikmar @ 21.4.2007,  12:58)
Цитата(dzin @  21.4.2007,  12:05 Найти цитируемый пост)
Спасиб ,значит в компиляторе трабл.Будем скать 

А какой компилятор? И как конкретно ругается?
Цитата(dzin @  21.4.2007,  11:36 Найти цитируемый пост)

void func2(void)
{
int global; 
for(global=0;global<10;global++)
putchar('.');

Это специально перекрытие сделано локальной - глобальной?

Платформа code::bloks(точно не помню GUI ...),да переменных две глоб и лок .
P.S. Спасиб за ответыsmile
PM MAIL   Вверх
dizzy1984
Дата 21.4.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 25



Цитата

Только неправильно.   
У вас глобальная переменная перекрывается локальной.

конечно, перекрывается, а что в этом плохого, ведь к глобальной всегда можно обратиться через :: ?
PM MAIL   Вверх
Xenon
Дата 21.4.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 11
Всего: 50



Anikmar, а чего в этом страшного? В перекрытии? Я понимаю, что с идеологиской точки зрения так лучше не делать, но это должно работать smile


--------------------
user posted image  
PM MAIL   Вверх
Anikmar
Дата 21.4.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 9
Всего: 59



Цитата(Xenon @  21.4.2007,  14:13 Найти цитируемый пост)
Anikmar, а чего в этом страшного? В перекрытии? Я понимаю, что с идеологиской точки зрения так лучше не делать, но это должно работать  

Да нет, конечно все правильно. 
Я имел в виду неправильно с точки зрения ответа на вопрос в этой теме.
Был задан вопрос:
Цитата(dzin @  21.4.2007,  09:46 Найти цитируемый пост)
Тоже только начал изучать по Шилду.Возник вопрос почти сразу :пишу код по книге(тема:глобальные переменные)инициализирую переменную перед инт майн , а компилятор ругается типа undeclared.Подскажите что не так делаю .Имхо полный лам  


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

А перекрывать - тут ничего страшного нет, конечно, но лично я один раз минут 40 искал у себя ошибку, когда глобальную переменную перекрыл.  smile 

PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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