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

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

Автор: distance
Дата сообщения: 11.03.2005 15:00
Duke Shadow

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


Цитата:
А это точно под виндой работает?

пока работало.


Цитата:
LC_ALL - это уже что-то из мира Юникс

это всего лишь константа, определенная в locale.h


Цитата:
Причём, правильнее будет, кажется, "ru_RU.866"?!

msdn с тобой не согласен.
Автор: Mister_47
Дата сообщения: 12.03.2005 15:26

Цитата:
у меня не отображаются русские буквы в скомпилированных программах, а вместо них кряказяблы
как это решить?

Лично я с этой проблемой расправляюсь так:

#include <iostream.h>
#include <windows.h>


char* rus_str(char* str)
{
static char buf[10][256];
static int idx = 0;
idx++;
if ( idx == 10 )
idx = 0;
CharToOem(str, buf[idx]);
return buf[idx];
}

Далее к каждой строке дописываем rus_str:

cout << rus_str(" Введите произвольную букву: ");

Сейчас я только начал изучать Си++ и в дальнейшем я хотел бы писать (ни один конечно, в команде) компьютерные игры. Какую книгу выбрать? Тут было озвучено много всяких книг, но какую из них выбрать, чтобы достичь моей цели на сколько - нибудь процентов?
Автор: Function
Дата сообщения: 12.03.2005 19:15
Mister_47

Цитата:
Сейчас я только начал изучать Си++ и в дальнейшем я хотел бы писать (ни один конечно, в команде) компьютерные игры. Какую книгу выбрать? Тут было озвучено много всяких книг, но какую из них выбрать, чтобы достичь моей цели на сколько - нибудь процентов?

Шилдт "Полный справочник по С++" (издательство Вильямс).
Если мне кто-то скажет, что кто-то очень хорошо умеет программировать и очень хорошо знает язык С++, то я не поверю, потому что интеллект у любого человека не бесконечен.

Добавлено:
Mister_47
Если врач поставил диагноз дебилизм.Как мне.Не расстраивайся.Почитай книгу Дейтел "Как программировать на С++".Будешь знать язык отлично. (Тут шутка).
Автор: Duke Shadow
Дата сообщения: 13.03.2005 12:02
distance
Спасибо.
Автор: IXaosI
Дата сообщения: 14.03.2005 19:24
Mister_47

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


char* rus_str(char* str)
{
static char buf[10][256];
static int idx = 0;
idx++;
if ( idx == 10 )
idx = 0;
CharToOem(str, buf[idx]);
return buf[idx];
}

Далее к каждой строке дописываем rus_str:

cout << rus_str(" Введите произвольную букву: ");


А по-проще ничего не мона придумать???

Добавлено:
Можна же типа....
#include <iostream.h>
#include <windows.h>

char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
int main()
{
int i;
cout <<Rus("Привет");
cin >>i;
return 0;
}

насчет cin >>i; как сделать, что бы после выполнении программы не закрывался консоль?
Автор: distance
Дата сообщения: 15.03.2005 18:10
IXaosI

Цитата:
А по-проще ничего не мона придумать???

Добавлено:
Можна же типа....
#include <iostream.h>
#include <windows.h>

char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
int main()
{
int i;
cout <<Rus("Привет");
cin >>i;
return 0;
}


а теперь внимание - сюрприз:
угадай, что будет выведено на консоль в твоем варианте?

cout << Rus("Привет") << Rus("Еще раз привет") << endl;



Автор: IXaosI
Дата сообщения: 15.03.2005 19:03

Цитата:
<< Rus("Еще раз привет")

Выдаст символы, это я в книге читал...
Ну дык еще раз потоком воспользуйся...

И я просто спросил, я же почти ничего не знаю в С++...
Автор: smmax2
Дата сообщения: 18.03.2005 03:28
Изучаю Visual Basic 6 из комплекта Visual Studio, написал себе удобную прикладную програмку, основанную на работе с базой данных. Проблема в том что не могу написать код для принтера, который выводил бы на печать весь DBGrid, а не одну ячейку. Изучаю по самоучителю,но там ничего об этом нет, а описаны только выводы отчётов через Data Report, но описаны скудно и непонятно.Можете ли чем нибудь помочь, в MSDN тоже не нашёл ничего подходящего.
Автор: Tartrout
Дата сообщения: 18.03.2005 11:15
smmax2

У дбгрида есть же hwnd. Чем тебе не способ печати?
Автор: dneprcomp
Дата сообщения: 18.03.2005 22:08
Tartrout

Цитата:
У дбгрида есть же hwnd. Чем тебе не способ печати

Ну и чем?
Автор: WWWovan
Дата сообщения: 23.03.2005 15:15
Уважаемые есть где-то Система справок по C++Builder Архангельского (не демо-версия)...а то ищу ищу и ничего...А платить не хо....
Автор: Dogmatek
Дата сообщения: 02.04.2005 12:25
У меня не компилируется программа (т.к. это самый примитив в области программирования решил задать этот вопрос в этой теме) в Borland C++Builder 6:
# include <iostream.h>
main()
{
puts("Добро пожаловать в наш Опросник.\n");
question();
puts("Благодарим за участие.\n");
return(0);
}
question()
{
int move_on;
puts("Скажите название графического \ интерфейса фирмы Microsoft.\n");
puts("Для получения правильного ответа \нажмите Enter.\n");
move_on = getchar();
answer();
return(0);
}
answer()
{
puts("Правильный ответ - Windows.\n");
return(0);


ошибка прописания адреса второй функции question() в main()
Эта функция была написана в учебнике А. Нейбауэр. "Моя первая программа на C/C++".и должна по идее работать, но она как и многие другие не работают.
Автор: OdesitVadim
Дата сообщения: 02.04.2005 12:40
Dogmatek

Цитата:
ошибка прописания адреса
- это компилятор так ругается?
А чтобы работало необходимо скорее всего перенести определение функций question() и answer() выше main(). Иначе откуда компилятор может узнать их. Или другим каким то способом указать компилятору на их наличие. Например прототипы. Запомни С это не Паскаль. Здесь под каждый компилятор есть свои маленькие "особенности". И то что точно работает для одного не объязательно будет работать под другим.
Цитата:
учебнике А. Нейбауэр

он под Билдер россчитан?
Автор: KADABRA
Дата сообщения: 02.04.2005 12:40
Dogmatek
Какя ошибка?

Код:
#include <iostream.h>

int question();
int answer();

main()
{
cout << "Добро пожаловать в наш Опросник.\n";
question();
cout << "Благодарим за участие.\n";
return(0);
}
int question()
{
cout << "Скажите название графического \ интерфейса фирмы Microsoft.\n";
cout << "Для получения правильного ответа \нажмите Enter.\n";

cin.get();
answer();
return(0);
}

int answer()
{
cout << "Правильный ответ - Windows.\n";
return(0);
}
Автор: Dogmatek
Дата сообщения: 02.04.2005 13:20
Спасибо за помощь, а то в литературе не мог найти объяснения этому.
все теперь работает.
А учебник А. Нейбауэр видимо не расчитан под билдер
Автор: KADABRA
Дата сообщения: 02.04.2005 13:23
Dogmatek

Цитата:
А учебник А. Нейбауэр видимо не расчитан под билдер

Это не билдер - это стандарт.
Автор: OdesitVadim
Дата сообщения: 02.04.2005 13:44
KADABRA
не один из известных мне С-языков на 100% не соответствует стандарту ANSI. Это надо всегда учитывать.Dogmatek
так какой вариант работает? Я посчиталЮ что скобку вы случайно не дописали. Тем более билдер ругался бы точно иначе
Автор: KADABRA
Дата сообщения: 02.04.2005 18:38
OdesitVadim
Ты сам путаешься и других путаешь.

Цитата:
не один из известных мне С-языков на 100% не соответствует стандарту ANSI

Стандарт - это и есть специшикация языка, и не соответствовать стандарту не может.

Цитата:
Я посчиталЮ что скобку вы случайно не дописали

И где это я скобку не дописал?
Автор: wiwiw
Дата сообщения: 02.04.2005 19:57
Dogmatek
если будешь использовать puts() то вставь в начало программы строчку

Код:
#include <stdio.h>
Автор: Duke Shadow
Дата сообщения: 03.04.2005 14:10
KADABRA

Цитата:
Стандарт - это и есть специшикация языка, и не соответствовать стандарту не может.

Напрасно на это надеешься
Давно уже доказано, что нет ни одного компилятора с "плюсов" ПОЛНОСТЬЮ соответствующего стандарту. На mozilla.org в секции developers вроде даже документ валялся под названием C++ portability guide или что-то в этом духе, где описывались (правда, с точки зрения кросс-платформенности, а не кросс-компиляторности) "запретные" темы. Сам не читал, но некоторые крайне рекомендуют.
А уж Билдер, чёрти насколько перекроенный под поддержку VCL, писанного на Pascal'е (никогда Борману этого не прощу!) точно не может быть полностью совместимым с ANSI, хотя поговаривают, что при установке режима компиляции ANSI он и неплох и даже бьёт Intel'овский, но всё равно - далеко не 100% соответствия.
Автор: KADABRA
Дата сообщения: 03.04.2005 19:40
Duke Shadow

Цитата:
не один из известных мне С-языков на 100% не соответствует стандарту ANSI.


Цитата:
Стандарт - это и есть специшикация языка, и не соответствовать стандарту не может.


Цитата:
нет ни одного компилятора с "плюсов" ПОЛНОСТЬЮ соответствующего стандарту

Между стандартом и компилятором есть разница
И про компилятор я не написал ни слова.
Автор: Swappp
Дата сообщения: 03.04.2005 20:08
Вот флейм развели из-за отсутствия двух строчек в коде
Есть некоторые правила которых придерживается любой компилятор C++ в частности функцию/класс надо объявлять до ее/его использования...
На счет 100%, естественно найдутся некоторые нюансы.
Автор: vserd
Дата сообщения: 05.04.2005 13:23
Доброго здравия.
Есть код, не мой.
strcpy(szAdd,"\\\"");
strcat(szAdd,szTmp);
strcat(szAdd,"\\\"");
Хотят получить строку вида "Некоторый текст", но получают \"Некоторый текст\". Явно не правильно, но как переписать не знаю :((
Автор: OdesitVadim
Дата сообщения: 05.04.2005 13:32
строка
Цитата:
strcpy(szAdd,"\\\"");
выведет [b]\"[\b]
Автор: vserd
Дата сообщения: 05.04.2005 14:31
OdesitVadim
мне моих знаний С++ хватает чтобы понять это. Но как сделать чтобы было "?
Попробовал """", не прокатило. Вобще-то это часть кода, который формирует командную строку для другого приложения. Если параметр содержит пробелы, его нужно заключать в двойные кавычки. До меня это сделали, но оно работает не правильно. В С++ я очень новичек. Читать код получалется, а вот знаний как сделать не хватает. :(( Не подскажешь где почитать по работе со строками, только без использования cin, читый код и никаких cin/сout? Нормальным, человеческим, языком с примерами.
Автор: OdesitVadim
Дата сообщения: 05.04.2005 14:46
в паскле есть отличная функция chr(), она выдают символ по его номеру. В С должен быть её аналог. ТОгда проблема решается очень просто - просто нужно будет создать константу и выводить её когда надо
Автор: WiseAlex
Дата сообщения: 05.04.2005 15:06
vserd

Цитата:
strcpy(szAdd,"\\\"");

просто заменить на
srrcpy(szAdd,"\"");
т.е. идет замена:
\" на "
и соответственно
\\ на \

Удачи!

OdesitVadim
в С строкадолжна заканчиваться на 0, поэтому константу нужно объявить так:
char my_str[2]={'"',0};
кроме того в С нет разницы между символом и однобайтовым числом.
Автор: Excell
Дата сообщения: 05.04.2005 15:10
OdesitVadim
выдать символ по индексу - очень просто, потому что в С имя массива - это указатель-константа на его начало:

Код:
char *s="Hello"; // *(s+1)='e';
// *(s+i) - i-тый элемент
Автор: Dogmatek
Дата сообщения: 12.04.2005 19:11
Помогите решить проблемму.
как на Borland C++Builder 6 записать корень в 4 степени и какую если нужно подключить библиотеку?
Автор: WiseAlex
Дата сообщения: 12.04.2005 19:23
Dogmatek
стандартная библиотека С - math.h функция pow

Страницы: 12345678910111213141516171819202122

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


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