Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.07.2008, 16:58   #1
Swool
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 39
По умолчанию Начал осваивать С++, надеюсь на помощ(будет много вопросов)

У меня стоит: Bloodshed Software version 4.9.9.2

Взял в руки книгу 96 года по С++, там написано про константы так:

ЦИТИРУЮ:

Код:
#include <stdio.h>

#define LOWER 0   /* нижняя граница таблицы */
#define UPPER 300 /* верхняя граница */
#define STEP 20   /* размер шага */

/* печать таблицы температур по Фаренгейту и Цельсию */
main()
{
    int fahr;
    for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
        printf(“%3d %6.1f\n”, fahr, (5.0/9.0)*(fahr-32));
}


но у меня выжает ошибку...
вопросы:
1) почему int main(void) работает а просто main() не работает?
2)какая разница между const int CHILDREN=8 и #define CHILDREN "8"???
не то и не другое не работает:*( приведите плз пример которкой программы, чтоб и то и то работало.
3)почему, чтобв ывести на экран надо писать printf("") вместо puts("") , как написано в книге?

покачто это все вопросы, спасибо!

Последний раз редактировалось merax; 16.07.2008 в 12:13.
Swool вне форума
Старый 12.07.2008, 19:09   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

1. потому что у любой функции должен быть тип возвращаемого значения, если ничего не возвращает - то void.
2. нада так писать. #define CHILDREN 8. константа правильна у тя описана.
3. можно писать и puts, предварительно подключив stdio.h, собсна у тя он и подключен
vvviperrr вне форума
Старый 12.07.2008, 21:55   #3
Swool
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 39
По умолчанию

1)ну вот например....



почему не работает?
и в этом примере нет getch(); и return 0;
и можно ПЛЗ поподробней насчет int main(void){
и
main(){

2)также попрошу еще раз тоже, что и в 1-м посте:
"2)какая разница между const int CHILDREN=8 и #define CHILDREN "8"???
не то и не другое не работает:*( приведите плз пример которкой программы, чтоб и то и то работало."


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

Последний раз редактировалось Swool; 12.07.2008 в 21:58.
Swool вне форума
Старый 13.07.2008, 13:40   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

1. Под Borland C++ Builder откомпилилось нормально
2. В виндах считается, что если функция main вернула любое отличное от 0 значение, то программа завершилась ошибкой. То есть в коде обязательно должно быть
Код:
int main()
{
...
return 0;
}
То, что BCB компилит так, как у тебя было, видимо, фича компилятора
3. Когда ты константу объявляешь через const, в памяти реально заводится константа, т.е. именованная ячейка памяти. Когда же ты пишешь
Код:
#define LOWER 0
происходит следующее: перед компиляцией препроцессор просматривает исходный код и все вхождения LOWER заменяет на 0, а никаких констант реально не заводится
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума
Старый 13.07.2008, 15:06   #5
Swool
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
1. Под Borland C++ Builder откомпилилось нормально
2. В виндах считается, что если функция main вернула любое отличное от 0 значение, то программа завершилась ошибкой. То есть в коде обязательно должно быть
Код:
int main()
{
...
return 0;
}
То, что BCB компилит так, как у тебя было, видимо, фича компилятора
3. Когда ты константу объявляешь через const, в памяти реально заводится константа, т.е. именованная ячейка памяти. Когда же ты пишешь
Код:
#define LOWER 0
происходит следующее: перед компиляцией препроцессор просматривает исходный код и все вхождения LOWER заменяет на 0, а никаких констант реально не заводится


я так понял у меня проблема в том, что стоит не та С++?
подскажи плз какую скачать, чтоб константы работали нормально и чтоб всякие cout>> тоже работали, ну и чтоб можно было писать int main(void) и просто main() или просто return(без нолика)

надеюсь на ссылку на скачивание )

И что за ошибка у меня на скриншоте?

П.С. спасибо за ответ.
Swool вне форума
Старый 13.07.2008, 18:14   #6
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
1. Под Borland C++ Builder откомпилилось нормально
Борланд проглотил main() {} ? (т.е. без указания типа возвращаемого значения)

Цитата:
Сообщение от Swool Посмотреть сообщение
я так понял у меня проблема в том, что стоит не та С++?
Судя по скриншоту, у вас IDE Dev-C++, какой компилятор могу только догадываться, но чую, что это gcc из MinGW. Если все правильно, то компилятор у вас нормальный.

И проблема как таковая, не в компиляторе, а в литературе. Возьмите что-нибудь поновее. Лично я учился по книге Герберта Шилдта «C++: базовый курс». В электроном виде ее не встречал.
Еще можно порекомендовать Бьерна Страуструпа «Язык программирования С++», но иногда встречал мнения, что эта книга сложновата для новичков.
filosof_x86 вне форума
Старый 13.07.2008, 20:57   #7
Swool
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 39
По умолчанию

Цитата:
Сообщение от filosof_x86 Посмотреть сообщение
Борланд проглотил main() {} ? (т.е. без указания типа возвращаемого значения)



Судя по скриншоту, у вас IDE Dev-C++, какой компилятор могу только догадываться, но чую, что это gcc из MinGW. Если все правильно, то компилятор у вас нормальный.

И проблема как таковая, не в компиляторе, а в литературе. Возьмите что-нибудь поновее. Лично я учился по книге Герберта Шилдта «C++: базовый курс». В электроном виде ее не встречал.
Еще можно порекомендовать Бьерна Страуструпа «Язык программирования С++», но иногда встречал мнения, что эта книга сложновата для новичков.
ну вот есть у меня еще книга :" С++ за 21 день", но там вообще пишут как-то странно...
для примера:

Код:
#include <iostream.h>
int main()
{
   int x=5;
   int y=7;
   cout<<"\n";
   cout<< x+y <<" "<<x*y;
   cout<<"\n";
   return 0;
}
и оно не работало до тех пор пока мне не подсказали туда добавить

Код:
#include <conio.h>
а в конце

Код:
getch();
когда надо использовать conio, iostream, math, stdio? откуда мне узнать. что писать? и почему я не могу ВСЕГДА писать их в начела программы?

т.е. я не думаю, что автор книги такой умник, что забыл добавить самое элементарное-библиотеки. значит проблема в моем С++

У кого есть версия С++, где можно писать ВСЕМИ способами...т.н.
Код:
cout<<" " , pritnf(" ") , puts(" ")

Последний раз редактировалось merax; 16.07.2008 в 12:15.
Swool вне форума
Старый 14.07.2008, 14:58   #8
Sharaevsky_Vitaly
Пользователь
 
Регистрация: 23.05.2008
Сообщений: 26
По умолчанию

Она работала, просто ты этого не видел...Твоя прога до добавления getch() выполняла весь код и сразу завершалась...а после вставки ф-ции getch() она в конце начала ждать пока ты введешь "Any key to continue..."

Последний раз редактировалось Sharaevsky_Vitaly; 14.07.2008 в 15:08.
Sharaevsky_Vitaly вне форума
Старый 14.07.2008, 15:30   #9
Swool
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 39
По умолчанию

аааа, а я-то думал почему оно "имгает" =))

П.С. а всетаки не дадите ссылочки на нормальную С++?
Swool вне форума
Старый 14.07.2008, 17:10   #10
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от Swool Посмотреть сообщение
ну вот есть у меня еще книга :" С++ за 21 день", но там вообще пишут как-то странно...
Это уже гораздо ближе к С++ (тот, который в первом посте больше Си код, нежели С++), хотя не соответствует последнему стандарту.

Цитата:
Сообщение от Swool Посмотреть сообщение
когда надо использовать conio, iostream, math, stdio?
Это заголовочные файлы. Их нужно подключать, когда хочешь использовать какие-нибудь функции, классы и прочее, объявленное в них.

Цитата:
Сообщение от Swool Посмотреть сообщение
т.е. я не думаю, что автор книги такой умник, что забыл добавить самое элементарное-библиотеки. значит проблема в моем С++
С++ не стоит на одном месте. Принимаются новые стандарты, которым стараются следовать многие компиляторы, хотя, конечно же, эти стандарты меняются не очень и часты. Сейчас последний стандарт от 2003 года, следующий уже на подходе, ожидается в 2009 году.

Так, например, по последнему стандарту, у функция main нужно явно указать тип возвращаемого значения (void или int), у стандартных модулей не указывается расширение, т.е. например <iostream>, <vector> и т.д., а к названию стандартных модулей, которые пришли из Си должны быть приставка «c», например, <cmath>, <clocale> вместо Сишных <math.h>, <locale.h> (хотя вроде и не запрещается использовать и старые Сишные названия). Также надо помнить про пространство имен std, где например находятся cout и cin.

Цитата:
Сообщение от Swool Посмотреть сообщение
У кого есть версия С++, где можно писать ВСЕМИ способами...т.н. cout<<" " , pritnf(" ") , puts(" ")
gcc это и так позволяет. gcc компилятор хороший, но вот IDE конечно же не очень (сугубо на мой взгляд). Попробуйте Microsoft Visual Studio 2008 или 2005 (или прямо Visual C++ 9 или 8 версии). Есть бесплатная Експрес версия, ее можно взять с сайта Microsoft. Можно утянуть с торрента крякнутую более мощную версию. Ссылки не даю специально, чтобы вы начинали приучать себя пользоваться поиском – при программирование часто придется какие-то момента уточнять и поиск в этом деле не заменим.
filosof_x86 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросов много, так что попорядку! Ermiss Общие вопросы Delphi 14 01.11.2007 16:18
Помогите! (много вопросов!) илья too Общие вопросы Delphi 2 20.08.2007 19:58
Здесь будет много вопросов Kashp Общие вопросы Delphi 14 08.08.2007 09:09
Много вопросов по программироанию в Delphi 7(нужна помощь) *Devil* Общие вопросы Delphi 15 22.05.2007 08:18