C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

стр.: (3) < 1 [2] 3 >
Нужна помощь (Уравновешанных людей) :), Проблемы с примерами в C++ Builder 6
olegenty
Отправлено: 23.04.2004, 11:44


Ветеран

Группа: Модератор
Сообщений: 2412



CODE

cout.unsetf(ios::dec);


вот это перед
CODE

cout.setf(ios::hex);


добавь, и всё будет, как ты хочешь ))
NEOBIR
Отправлено: 23.04.2004, 12:30


Дежурный стрелочник

Группа: Участник
Сообщений: 31



млин откуда вы все такие умные?
получилось, а в книге про ето даж ни слова. wink.gif

Спасибо.

Отредактировано NEOBIR — 23/04/2004, 13:34
olegenty
Отправлено: 23.04.2004, 13:12


Ветеран

Группа: Модератор
Сообщений: 2412



суть в том, что и без unsetf(ios::dec) должно было быть всё в порядке, насколько мне нашептала память. потому что setf(ios::hex) должно было отменить предыдущий формат. почему этого не произошло — ХЗ (хрен знает), надо инфу читать...
gauldot
Отправлено: 23.04.2004, 13:17


Ученик-кочегар

Группа: Участник
Сообщений: 22



Последний твой код — рабочий.

Результат работы (как и должно быть):
Arg1 =0x4660
Arg2 =0x255
~nArg1 =0x-4661
~nArg2 =0x-256
nArg1&nArg2=0x52
nArg1|nArg2=0x4863
nArg1^nArg2=0x4811

А что в книге другой результат?

P.s. Создание консольного приложения: File->New->ConsoleWizard
Галочки: С++, ConsoleApplication и хватит.
NEOBIR
Отправлено: 23.04.2004, 15:44


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Результат то верный, но он не в 16тиричном виде, в пример задумывался чтоб перевест ив 16тиричную, ив книги как раз так и написано, после добавки все стало ОК, яж написал, видать мож компиляторы разные, книга то писалась не под билдер 6.0.

marconi
Отправлено: 23.04.2004, 17:23


Станционный диспетчер

Группа: Участник
Сообщений: 86



А дальше сам smile.gif
NEOBIR
Отправлено: 25.04.2004, 09:48


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Опять проблема smile.gif

Как сделать чтоб мои примеры отображали русский язык при выводе текста на экран?

Все делаю в билдере 6, в нем русский видно, но когда программа скомпилирована и запущена в ней выводится абра-кадабра вместо кирилицы wink.gif

как сделать чтоб отображался русский?

В меню Project, есть добавка языка, я вроде добавил русский, но всеравно не сработало sad.gif

Отредактировано NEOBIR — 25/04/2004, 10:51
NEOBIR
Отправлено: 25.04.2004, 10:28


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Млин, да что такое, опять не получается, вроде все работает а общую сумму не выводит, говорит 0, хотя должен быть не 0, что не так??? все как в книге сделал???

CODE


#include<conio.h>
#pragma hdrstop
#pragma argsused
#include<stdio.h>
#include<iostream.h>


// sumSequence — суммирует последовательность
// чисел, введенных с клавиатуры, пока
// пользователь не введет отрицательное число
// возвращает сумму введенных чисел

int sumSequence(void)
{

//бесконечный цикл
int accumulator=0;

for(;;)
{

// ввод следкющего числа
int value=0;
cout << "Vvedite sleduyushee chislo: ";
cin >> value;

// если оно отрицательное...
if(value<0)
{
// ...тогда выходим из цикла
break;
}

// иначе добавляем число к переменной accumulator
accumulator=accumulator+value;
}

// возвращяем значение суммы
return accumulator;
}

int main(int argc, char* argv[])
{
cout << "Eta programma summiruet posledovatelnosti\n"
    << "chisel. Kajdaya posledovatelnost\n"
    << "zakanchivaetsya otricatelnim chislom.\n"
    << "Vvod seriy zavershaetsya vvodom \n"
    << "dvuh otricatelnih chisel podryad\n";

// суммируем последовательности чисел...
int accumulatedValue;

do
{
// суммируем последовательности чисел введенных с клавиатуры
cout << "\nVvedite sleduyushuyu posledovatelnost\n";

accumulatedValue=sumSequence();

// вывод общей суммы на экран
cout << "\nObshaya summa ravna "
    << accumulatedValue
    << "\n";

// пока возвращаемая сумма не равна 0
} while (accumulatedValue!=0);
cout << "Programma zavershena\n";

getch();
       return 0;
}



подможите люди !!!
NEOBIR
Отправлено: 25.04.2004, 18:28


Дежурный стрелочник

Группа: Участник
Сообщений: 31



ауууууууууу
куда все пропали????????
Иван
Отправлено: 25.04.2004, 20:56


Машинист паровоза

Группа: Участник
Сообщений: 207



To olegenty спасибо конечно за ссылку (Страуструп), только вот трудновато читать без линков на каждую главу, не весит ли где-то другая версия, у которой "интерфейс дружелюбней, и еще просьба, тот самый Borland C++ 3.11 нельзя ли как то в upload выставить, или ссылочку дайте, где его скачать можно.

To NEOBIR
QUOTE
ауууууууууу
куда все пропали????????

выходные ведь smile.gif

Отредактировано Иван — 25/04/2004, 22:17
Георгий
Отправлено: 25.04.2004, 22:54


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



NEOBIR
QUOTE
ауууууууууу
куда все пропали????????


работает твой код — всё именно так, как написано:
QUOTE
"Eta programma summiruet posledovatelnosti\n"
   << "chisel. Kajdaya posledovatelnost\n"
   << "zakanchivaetsya otricatelnim chislom.\n"
   << "Vvod seriy zavershaetsya vvodom \n"
   << "dvuh otricatelnih chisel podryad\n";

т.е. выполняет суммирование чисел каждой последовательности.
NEOBIR
Отправлено: 26.04.2004, 10:11


Дежурный стрелочник

Группа: Участник
Сообщений: 31



QUOTE (Георгий @ 25/04/2004, 23:56)
NEOBIR
QUOTE
ауууууууууу
куда все пропали????????


работает твой код — всё именно так, как написано:
QUOTE
"Eta programma summiruet posledovatelnosti\n"
<< "chisel. Kajdaya posledovatelnost\n"
<< "zakanchivaetsya otricatelnim chislom.\n"
<< "Vvod seriy zavershaetsya vvodom \n"
<< "dvuh otricatelnih chisel podryad\n";

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

да выполняет, но потом он должен выполнять сложение всех сумм которые получились в результате сложения последовательностей, а вот тут как раз и 0 всегда получается, что не так??
Георгий
Отправлено: 26.04.2004, 10:34


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



попробуй подправить вот так:
CODE

...
// суммируем последовательности чисел...
int accumulatedValue=0;

do
{
// суммируем последовательности чисел введенных с клавиатуры
cout << "\nVvedite sleduyushuyu posledovatelnost\n";

const int local_summ=sumSequence();

accumulatedValue+=local_summ;

// вывод общей суммы на экран
cout << "\nObshaya summa ravna "
   << accumulatedValue
   << "\n";

// пока возвращаемая сумма не равна 0
} while (local_summ!=0);
cout << "Programma zavershena\n";

getch();
      return 0;
}
olegenty
Отправлено: 26.04.2004, 11:20


Ветеран

Группа: Модератор
Сообщений: 2412



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

CODE

bool CharToOem(
   LPCTSTR lpszSrc, // pointer to string to translate  
   LPSTR lpszDst  // pointer to translated string
);
- для перевода в OEM-ю кодировку для консоли (суть 1251 в 866)

и
CODE

bool OemToChar(
   LPCSTR lpszSrc, // pointer to string to translate
   LPTSTR lpszDst  // pointer to buffer for translated string  
);
- для перевода считанной в процессе выполнения инфы из OEM обратно в ANSI.

это системные функции Windows API
NEOBIR
Отправлено: 26.04.2004, 11:27


Дежурный стрелочник

Группа: Участник
Сообщений: 31



так компилято ругается на эту строку:
CODE

} while (local_summ!=0);


говорит:
[C++ Error] Unit1.cpp(68): E2451 Undefined symbol 'local_summ'

вроде все правильно написано, что ему не нравится?
NEOBIR
Отправлено: 26.04.2004, 11:36


Дежурный стрелочник

Группа: Участник
Сообщений: 31



QUOTE (olegenty @ 26/04/2004, 12:22)
а для корректного отображения отечественной кодировки пользуйся следующими функциями:

CODE

bool CharToOem(
LPCTSTR lpszSrc, // pointer to string to translate
LPSTR lpszDst // pointer to translated string
);
- для перевода в OEM-ю кодировку для консоли (суть 1251 в 866)

и
CODE

bool OemToChar(
LPCSTR lpszSrc, // pointer to string to translate
LPTSTR lpszDst // pointer to buffer for translated string
);
- для перевода считанной в процессе выполнения инфы из OEM обратно в ANSI.

это системные функции Windows API

блин все хорошо, вот тока куда вставить этот блок??? будь добр на моем примере покажи куда вставить???
вот пример, я написал по-русски первое сообщение:

CODE


#include<conio.h>
#pragma hdrstop
#pragma argsused
#include<stdio.h>
#include<iostream.h>


// sumSequence — суммирует последовательность
// чисел, введенных с клавиатуры, пока
// пользователь не введет отрицательное число
// возвращает сумму введенных чисел

int sumSequence(void)
{

//бесконечный цикл
int accumulator=0;

for(;;)
{

// ввод следкющего числа
int value=0;
cout << "Vvedite sleduyushee chislo: ";
cin >> value;

// если оно отрицательное...
if(value<0)
{
// ...тогда выходим из цикла
break;
}

// иначе добавляем число к переменной accumulator
accumulator=accumulator+value;
}

// возвращяем значение суммы
return accumulator;
}

int main(int argc, char* argv[])
{
cout << "Эта программа суммирует последовательности\n"
   << "чисел. Каждая последовательность\n"
   << "заканчивается отрицательным числом.\n"
   << "Ввод серий заканчивается вводом\n"
   << "двух отрицательных чисел подряд\n";

// суммируем последовательности чисел...
int accumulatedValue;

do
{
// суммируем последовательности чисел введенных с клавиатуры
cout << "\nVvedite sleduyushuyu posledovatelnost\n";

accumulatedValue=sumSequence();

// вывод общей суммы на экран
cout << "\nObshaya summa ravna "
   << accumulatedValue
   << "\n";

// пока возвращаемая сумма не равна 0
} while (accumulatedValue!=0);
cout << "Programma zavershena\n";

getch();
      return 0;
}
olegenty
Отправлено: 26.04.2004, 14:22


Ветеран

Группа: Модератор
Сообщений: 2412



Вот тебе пример для работы с русскими буквами в окне. Для него в новом проекте установи флажок VCL — я там использую функцию ShowMessage и класс AnsiString.

CODE

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
   char *szMsg = "Введите что-нибудь на русском языке:";
   if (CharToOem(szMsg, szMsg)) // если преобразование удалось
   {
       cout << szMsg << endl; // вывести приглашение ввода
       cin >> szMsg; // ввести строку на русском языке, хотя язык не важен
       if (OemToChar(szMsg, szMsg)) // если преобразование удалось
       {
           ShowMessage(AnsiString(szMsg)); // показать считанную информацию
                                           // в виде сообщения Windows
       }
   }



   getch();
   return 0;
}
//---------------------------------------------------------------------------
NEOBIR
Отправлено: 27.04.2004, 06:11


Дежурный стрелочник

Группа: Участник
Сообщений: 31



да, спасибо за пример,
но ты так и не ответил ка кмне сделать, именно в моём примере! чтобы сообщения выводились на русском а не абракадаброй??? чтоб читать можно было??? Куда что добавить?
olegenty
Отправлено: 27.04.2004, 09:10


Ветеран

Группа: Модератор
Сообщений: 2412



отлажу — положу. есть ма-а-а-а-а-ленький трабл. смешной, уржался я с него, но сначала придумаю, как избавиться. прикольно натыкаться на траблы в азах... (ой давно это было... и суть трабла понятна, но времени нет, я на работе...)
NEOBIR
Отправлено: 27.04.2004, 09:25


Дежурный стрелочник

Группа: Участник
Сообщений: 31



ок biggrin.gif
жду smile.gif

азы млин какие-то замудренные, если с опытом народ, мается то как мнеж научится ??? wink.gif

Отредактировано NEOBIR — 27/04/2004, 10:28
olegenty
Отправлено: 27.04.2004, 09:30


Ветеран

Группа: Модератор
Сообщений: 2412



не, там трабла из другой области. пример-то твой на 3.11 без проблем работал бы.
NEOBIR
Отправлено: 27.04.2004, 12:13


Дежурный стрелочник

Группа: Участник
Сообщений: 31



блин ну вылож ты 3,11 а то я тут как д-к со ступой в билдере дро***сь с книжкой писаной под ГНУ smile.gif в осла или на фтп я качну, или мож ссылку знаешь где качнуть???

ты помница писал что у тебя на винте болтается??
olegenty
Отправлено: 27.04.2004, 13:34


Ветеран

Группа: Модератор
Сообщений: 2412



да меня раком, пардон, трахнут, за такой исходящий траффик, вот в чём беда...
NEOBIR
Отправлено: 27.04.2004, 14:22


Дежурный стрелочник

Группа: Участник
Сообщений: 31



что много весит?
olegenty
Отправлено: 27.04.2004, 14:25


Ветеран

Группа: Модератор
Сообщений: 2412



установочник в архиве — 20М
Valdemar
Отправлено: 27.04.2004, 15:23


Мастер участка

Группа: Участник
Сообщений: 433



Могу выслать на e-mail Borland C++ 3.1. В архиве 2,1Мб. Только не знаю полный он или чего-то не хватает, но вроде работает.
NEOBIR
Отправлено: 27.04.2004, 15:31


Дежурный стрелочник

Группа: Участник
Сообщений: 31



ок, спасиб, давай на neobir@mail.ru, попробуем его
Valdemar
Отправлено: 28.04.2004, 08:04


Мастер участка

Группа: Участник
Сообщений: 433



Отправил
NEOBIR
Отправлено: 28.04.2004, 19:49


Дежурный стрелочник

Группа: Участник
Сообщений: 31



спасибо получил !

Посоветуйте толковую книгу по С++ (не билдеру итд) чтоб с азов и понятно было, с самого начала, с чего начать ???
А то прям маюсь wink.gif

olegenty
Отправлено: 29.04.2004, 06:47


Ветеран

Группа: Модератор
Сообщений: 2412



Бъерн Страуструп, "Введение в язык программирования С++" (или как-то так называется). Второе или более поздние издания.
стр.: (3) < 1 [2] 3 >
Вернуться в Вопросы программирования в C++Builder