Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Обучение и начало програмирования на С++

Автор: EZH
Дата сообщения: 07.03.2005 04:17
Dogmatek
1. Особо не важно, пиши cpp
2. Пиши так:

Цитата:
#include <conio.h>
#include <iostream.h>

void main()
{
cout << "Hello, World!\n";
getch();
}

getch() - ждет нажатия клавиши, поэтому программа сразу не завершится.
#include <conio.h> - содержит описание getch()
3. bcc32 helloworld.cpp - путь к bcc32.exe (в каталоге bin C++Builder'а) должен быть прописан в переменной окружения Path операционной системы.
4. С++Builder работает только с проектами, которые содержат один-несколько cpp файлов.
Автор: mihas83
Дата сообщения: 07.03.2005 08:52
Dogmatek

Цитата:
2. если я приписываю к #include <iostream>
я не вижу что за программа получается(программа слишком быстро закрывается).

Это нисколько не связано с #include <iostream>.
А ''решение'' написал EZH.

Цитата:
как компилировать программу из командной строки

А зачем на первых порах ''изощряться''?
Автор: Sensej
Дата сообщения: 07.03.2005 09:41

Цитата:
А зачем на первых порах ''изощряться''?

Дык он же Строструпа читает! А он ему внушает что компилить проги нужно в Линуксоидной консоли...
Автор: Function
Дата сообщения: 07.03.2005 12:25
getch() -это функция.
Возвращает ли эта функция какое-нибудь значение ?
Функции могут возвращать указатель на какой нибудь тип (в том числе и на тип void) и значение какого-нибудь типа (в том числе и на тип void ).
При возвращении функцией указателя на тип void, она возвращает адрес, при возвращении
значения типа void, ничего не возвращается.
Если что-то возвращается, то можно присваивать переменной а=getch();где a-переменная; в этом смысл слова возвращает!
Правильно ли ?
Автор: KADABRA
Дата сообщения: 07.03.2005 12:33
А зачем
Цитата:
#include <conio.h>

и
Цитата:
getch()

Не проще ли
Код: cin.get();
Автор: Dogmatek
Дата сообщения: 07.03.2005 12:49
Спасибо за помощь в этом непонятном языке.
Так это я освоил.
А вот скажите можно ли компилировать программы не обращаясь к #include (вообще исключив из программы). если да, то хотелось бы увидеть ее.
И не могли бы объяснить роль <iostream.h> или это то же, что по Страустрапу <stream.h>?
Автор: KADABRA
Дата сообщения: 07.03.2005 13:03
Dogmatek
Директива #include включает в файл другой файл. Без него работать можно, но прога будет ограничена "внутренним миром" - никаких результатов она выдать не сможет.

Цитата:
iostream.h

библиотека ввода/вывода.
Автор: Stroodder
Дата сообщения: 07.03.2005 13:09
Dogmatek
"iostream.h" - заголовочный файл библиотеки ввода-вывода, проще говоря без нее на экране ничего не появится и реакций на клавиши при работе программы не будет. А компилировать можно (если нужно) в том случае если не используешь функций на которые ссылается этот файл - вообще касается всех заголовочных файлов. Для того чтобы не писать собственные функции и сущ. заголовочные файлы со ссылками на готовые обертки.

Добавлено:
KADABRA
Почти одновременно
Автор: Sensej
Дата сообщения: 07.03.2005 14:09
А еще можно вместо getch(); написать это в конце:
system("PAUSE");


Цитата:
Если что-то возвращается, то можно присваивать переменной а=getch();где a-переменная; в этом смысл слова возвращает!
Правильно ли ?

Да. В этом и есть отличие Функции от ПроцеДуры.
Автор: KADABRA
Дата сообщения: 07.03.2005 16:06
Sensej

Цитата:
system("PAUSE");

Не переносимо.
Автор: wiwiw
Дата сообщения: 07.03.2005 16:40
по-моему в этом топике должна обсуждаться литература для начинающих.
для вопросов по программированию на С++ есть отдельный топик.
Автор: Key_Altos
Дата сообщения: 07.03.2005 16:50
wiwiw
Тема называется "Обучение и начало програмирования на С++", хотя ты в принципе прав... Но тут идут вопросы, относящиеся к самому началу программирования и они будут несколько не к месту в том топике.
Автор: Stroodder
Дата сообщения: 07.03.2005 19:38
А по-моему в топике шапочка должна быть...
Как ее соорудить в теме созданой не мной я лично не знаю, если кто знает (ну модератор на досуге может быть ) так было бы очень хорошо: все ссылочки туда можно закинуть.
Автор: mihas83
Дата сообщения: 07.03.2005 20:56
Stroodder

Цитата:
Как ее соорудить в теме созданой не мной я лично не знаю, если кто знает

Toлько модератор и может.
Кинь ему в ПМ предложение.
Автор: distance
Дата сообщения: 08.03.2005 02:14
http://langs.icf.bofh.ru/c/starterkit.html

Андрей Богатырев. Руководство полного идиота
по программированию (на языке Си)

)) без всякой задней мысли относитеольно названия.

как человек пишет - у-у-у, зачитаешься...

цитата:

x = 15 ;

|
|
| ПОЛОЖИТЬ результат в ящик с именем "ИКС"
| (истребив в нем прежнее значение, если было)

)) явно наблюдается литературный талант
Автор: Stroodder
Дата сообщения: 08.03.2005 06:27
distance
Мдя после такого руководства нормальные термины понимать перестанешь
Автор: Key_Altos
Дата сообщения: 08.03.2005 18:29
distance
ЛОЛ!!
Автор: Dogmatek
Дата сообщения: 08.03.2005 23:12
у меня не отображаются русские буквы в скомпилированных программах, а вместо них кряказяблы
как это решить?
Автор: distance
Дата сообщения: 09.03.2005 01:45
Dogmatek
а у меня дома почему-то происходит подземный стук. как лечить?

ps. для начала было бы неплохо привести больше сведений.
программа юникодовая? строки жестко "зашиты" в программу или приходят извне? в какой кодировке исходник? юзаются потоки или c runtime? console или gui?
в зависимости от вариантов ответов, отца русской демократии спасет setlocale/cout.imbue или CharToOem, mbstowcs и иже с ними.

полезно также заглянуть сюда
Автор: mihas83
Дата сообщения: 09.03.2005 09:01
distance

Цитата:
полезно также заглянуть сюда

Да, для консольных приложений CharToOem всегда помогает...
Автор: Duke Shadow
Дата сообщения: 09.03.2005 11:53
mihas83
CharToOem неудобен тем, что для него нужен буфер. Например, для того чтобы нормально вывести строчку "Ошибка" вместо cout<<"Ошибка"; приходится уже извращаться - крайне неудобно.

distance

Цитата:
setlocale/cout.imbue

А вот отсюда подробнее можно?
Автор: Interceptr
Дата сообщения: 09.03.2005 11:55
люди есть какаянибудь не грамоская инфа чтоб быстро освоить захват данных из форм в с++ от мелкомягких? (мне все говарят что это в хламину сложно);
Автор: mihas83
Дата сообщения: 09.03.2005 12:44
Duke Shadow

Цитата:
CharToOem неудобен тем, что для него нужен буфер

Так Dogmatek не ответил для чего ему нужно решение.
Так что мы можем только ''сотрясать воздух''...
Автор: Stroodder
Дата сообщения: 09.03.2005 13:02
Dogmatek
Ну, самый первый шаг: поставить в свойствах диалогов VC++ русский язык, вместо аглицкого а уж потом в дебри лезть.
Автор: distance
Дата сообщения: 09.03.2005 14:14
Duke Shadow

Цитата:
Цитата:
setlocale/cout.imbue

А вот отсюда подробнее можно?


чтобы из юнокодовой программы правильно выводить русские буквы, нужно позаботится об установке соответствующей локали. Также важна кодировка исходных русскоязычных текстов (обычно это ANSI codepage, оно же cp1251)

а в консоль все сливается в OEM codepage (cp866)

для c++

Код:
#define UNICODE
#define _UNICODE

#include <iostream>

using namespace std;

int wmain()
{
wcout.imbue(locale(".866"));
wcout << L"Привет!" << endl;

return(0);
}
Автор: Interceptr
Дата сообщения: 09.03.2005 19:05
distance
ни черта непонял...=)
можеш примерчик нацарапать? маленький=) если не сложно мне так проще въехать...
Автор: Dogmatek
Дата сообщения: 09.03.2005 19:38
только сейчас добрался до компа...
вобщем стоит у меня Borland C++Builder 6 пишу в кодировке ANSI(1251)

строки жестко "зашиты" в программу или приходят извне? в какой кодировке исходник? юзаются потоки или c runtime? console или gui?
- этого я не знаю
например пишу прогу:

# include <iostream.h>

const int dr = 100;
const int rr = 40;
#define T "Введите количество отработанных дней"
int vr , sverh;
main()
{
puts (T);
cin >>vr;
cout<<"Оплата за норму ";
cout<< (vr-rr)*dr << "$";
cin.get();
cin.get();
}

выводятся кряказяблы

отчасти я решил проблему,
если писать прогу в текстовом редакторе и сохранить в досовской кодировке тогда русские шрифты нормально отображаются
Автор: zorrack
Дата сообщения: 09.03.2005 19:56
Interceptr
1. Пожалуйста, поподробнее опиши следующие моменты:
а) Какая среда программирования?
б) Если Visual C++ - то используется ли MFC
2. Если используешь Visual C++ - юзай Class Wizard (Ctrl+W по умолчанию) на диалоге, в котором нужно провести соответствие. В Class Wizard сможешь привязать новые переменные к контролам.
NOTE: автоматически ничего присваиваться/переприсваиваться не будет.
Для того, чтобы в каком то методе получить доступ к самым последним данным, введенным пользователем необходимо использовать UpdateDate(...) функцию.
Для записи переменных в контролы: UpdateData(FALSE);
Для записи значений из контролов в переменные: UpdateData(TRUE) или просто UpdateData()
3. Если не пользуешь MFC - тогда немного гемморойно:
3.1. Описываешь переменные, в которые будут писаться значения из контролов
3.2. Пишешь функции:

Код:
//interface
void UpdateData(BOOL bSave = TRUE);
//implementation
char* GetControlValue(int nControlID)
{
char* pResult = NULL;
HWND hWnd = ::GetDlgItem(hMainWnd /*dialog wnd handle*/, nControlID);
int iLen = ::GetWindowTextLength(hWnd);
if (iLen > 0)
{
pResult = (char*)malloc(iLen + 1);
::GetWindowText(hWnd, pResult, iLen);
}
return pResult;
}
void UpdateData(BOOL bSave)
{
if (!bSave)
{
//для каждой переменной - для примера IDC_edUserName
char* pRes = GetControlValue(IDC_edUserName);
if (pRes)
{
// скопировать результат pRes в переменную нужного типа с проверкой введенных данных, буфера и т.д.
}
}
else
{
//для каждой переменной провести ::SetWindowText, предварительно сформировав буфер и т.д.
}
}
Автор: Dogmatek
Дата сообщения: 10.03.2005 23:56
не плохой учебник можно взять здесь http://softec.narod.ru/soft/c.rar
сам по этой книге обучаюсь параллельно по Страустрапу
Автор: Duke Shadow
Дата сообщения: 11.03.2005 09:30
distance

Цитата:
а в консоль все сливается в OEM codepage (cp866)

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

Цитата:
setlocale(LC_ALL, "rus_rus.866");

А это точно под виндой работает? LC_ALL - это уже что-то из мира Юникс. Причём, правильнее будет, кажется, "ru_RU.866"?!

Страницы: 12345678910111213141516171819202122

Предыдущая тема: DELPHI. Счетчик ячеек со значенями, значений ячеек


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.