Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
#1

Обмен опытом или как бы это сделали бы Вы!! - C++

07.01.2011, 05:09. Просмотров 897. Ответов 17
Метки нет (Все метки)

Здравствуйте уважаемые форумчане!
Дана задача:
Создайте класс ,напишите метод для преобразования числа типа long double денежную строку представляющее это число.Для начала Вам нужно проверить , что значение long double не очень большое. Мы предполагаем что Вы не будите пытаться преобразовать число , больше чем 9 999 999 999 999 990.00 !Затем преобразуем long double в строку (без знака $ и запятых), хранящуюся в памяти , используя объект ostrstream . Получившаяся строка должна быть помещена в буфер, называющийся допустим ustring.
Затем Вам нужно создать другую строку , начинающуюся с $, далее копируем цифру за цифрой из строки ustring , начиная с лева и вставляя запятые сначала сразу после первой далее каждые три цифры!Так же вам надо подавлять нули в начале строки.Например Вы должны вывести $1,123,43.67, а не
$0 000 000 112 343.67. Напишите функцию main() для тестирования методов класса путем многократного ввода пользователем чисел типа long double и вывода результата в виде денежной строки!
/////////////////////////////////////////////////////////////////////////////////////////////////
Я её сделал но на мой взгляд не очень красиво!Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include<iostream>
#include<math.h>
#include<stdio.h>
#include<cstring>
#include<iomanip>
using namespace std;
 
//************************************************************************************************************************
#include<windows.h>                             
ostream & operator<<(ostream & out,char*s)
{
    char buf[512],*p=buf;                                   // Г·ГІГ® ГЎГ» áûë ГђГіГ±Г±ГЄГЁГ© ÿçûê Г*Г* âûõîäå cout
    CharToOem(s,buf);
    while(*p)
        out<<*p++;
    return out;
}
//************************************************************************************************************************
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class money
{
    private:
        enum{ONE=10,TWU=30};// Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ*
        char mas[ONE][TWU];// Г¬Г*Г±ГЁГў î÷åðåäè
        int first;//ïåðâûé Гў î÷åðåäè
        int back;// ïîñëåäГ*ГЁГ© Гў î÷åðåäè
        void Que(char mes[]);// ïîñòГ*ГўГЁГІГј Гў î÷åðåäü
        void Qit(char mes[]);// âûâåñòè ГЁГ§ î÷åðåäè
    public:
        money():first(0),back(0)//ГЄГ®Г*ñòðóêòîð 
        {}
        void Trans(long double number);// ïåðåâîä Г·ГЁГ±Г«Г* Гў Г¬Г*Г±Г±ГЁГў
        void Result();// ïðåîáðГ*çîâГ*Г*ГЁГҐ ñòðîêè ГЄ âèäó 9,123,444.55
        void Display(char mas[])const;//âûâîä ñòðîêè Г*Г* ГЅГЄГ°Г*Г*
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
// *******************************************ГЋГЇГЁГ±Г*Г*ГЁГҐ ìåòîäîâ ГЄГ«Г*Г±Г±Г****************************************************//
void money::Que(char mes[])
{   
    
     if(back<ONE&&back>=0)
    {   
        
        strcpy(mas[back++],mes);// Г±ГІГ*ГўГЁГ¬ Г¬Г*Г±ГЁГў Гў î÷åðåäü
        
    }
    else 
    {
        cout<<" Г‚Г*ГЁГ¬Г*Г*ГЁГҐ î÷åðåäü ïîëГ*Г* Г·ГІГ® ГЎГ» ïðîäîëæèòü Г±ГІГ*ГўГЁГІГј Гў î÷åðåäü ñäåëГ*éòå âûâîä!"<<endl;
    }
}
///////////////////////////////////////////
void money::Qit(char mes[])
{   
    if(back>=0)
    {   
        if(back!=0)
        {
        
            strcpy(mes,mas[first]);
        
            for(int j=0;j<back-1;j++)//äâèãГ*ГҐГ¬ î÷åðäü
            {
                for(int f=0;f<TWU-1;f++)
                {
                    mas[j][f]=mas[j+1][f];
                }
                mas[j][f]='\0';
            }
 
            back--;//óìåГ*ГјГёГ*ГҐГ¬ ÷èñëî ïîñëåäГ*ГҐГЈГ® Гў î÷åðåäè
        }
        else
        {cout<<"\tÎ÷åðåäü ГЇГіГ±ГІГ* ïîñòГ*ГўГІГҐ Гў î÷åðåäü!"<<endl;}
    }
    
    
}
/////////////////////////////////////////////////////////////////
void money::Trans(long double number)
{   char ser[TWU];
    SystemCresh:
    if(number>9999999999999990.00)// ïðîâåðêГ* äèГ*ïîçîГ*Г* Г§Г*Г*Г·ГҐГ*ГЁГї
    {
        cout<<"\tÂâåäåГ*Г*îå Г‚Г*ìè ÷èñëî î÷åГ*Гј áîëüøîå  ГЏГ®ГЇГ°Г®ГЎГіГ©ГІГҐ ГўГўГҐГ±ГІГЁ ГҐГ№ГҐГ°Г*Г§ :";
        cin>> number;//ðóãГ*åìñÿ Г*Г* î÷åГ*Гј áîëüøîå ÷èñëî
        goto SystemCresh;//èäåì ГЄ òî÷êå SystemCresh 
    }
    else if(number>0)
    {   
    _snprintf(ser,TWU-1,"%f",number);//ïåðåâîäèì long double Гў char ser[]
    Que(ser);// ïîìåùГ*ГҐГ¬ Г§Г*Г*Г·ГҐГ*ГЁГҐ _mas Гў ГЎГіГґГҐГ°
 
    }
    else
    {cout<<"\tÂâåäåГ*Г*îå Г‚Г*ìè ÷èñëî ìåГ*ГјГёГҐ Г*óëÿ  ГЏГ®ГЇГ°Г®ГЎГіГ©ГІГҐ ГўГўГҐГ±ГІГЁ ГҐГ№ГҐГ°Г*Г§ :";
        cin>> number;//ðóãГ*åìñÿ Г*Г*  Г·ГЁГ±Г«Г® <0
        goto SystemCresh;//èäåì ГЄ òî÷êå SystemCresh 
    }
}
//////////////////////////////////////////////////////////////////
void money::Display(char mas[])const
{
        cout<<"\tÐåçóëüòГ*ГІ : "<<mas<<endl;
    
}
/////////////////////////////////////////////////////////////////////////
void money::Result()
{   int x,z;
    char _mas[TWU]="$";// ГЁГ*èöèГ*ëèçèðóåì ïåðâûé ñèìâîë Г§Г*Г*Г·ГҐГ*ГЁГҐГ¬ $
    char nuw[TWU];// Г*îâûé Г¬Г*Г±Г±ГЁГў
    Qit(nuw);//âîçâðГ*Г№Г*ГҐГ¬ Г§Г*Г*Г·ГҐГ*ГЁГҐ ГЁГ§ î÷åðåäè(ГЎГіГґГҐГ°Г*)
    x=strlen(nuw);//âîçâðГ*Г№Г*ГҐГ¬ êîëè÷åñòâî ñèìâîëîâ
    for(int i=0, j=1;i<x;i++,j++)//ïðåîáðГ*çîâûâГ*ГҐГ¬ ñòðîêó ГЄ âèäó ГЇГ® óñëîâèþ Г§Г*Г¤Г*Г·ГЁ
    {   
        if(nuw[i]=='.')
        {z=5;}
        if(z!=5)
        {   _mas[j]=nuw[i];
            
            if(j==1&&nuw[i+1]!='.')
            {strcat(_mas,",");j++;}//ïðè âûïîëГ*ГҐГ*ГЁГЁ óñëîâèÿ ïðèêëåèâГ*ГҐГ¬ Г§Г*ГЇГїГІГіГѕ ГЅГІГ® äëÿ Г*ГҐ Г±ГІГ*Г*Г¤Г*ðòГ*îé Г§Г*ïÿòîé $1, 
            else if((j-1)%4==0&&nuw[i+1]!='.')//ïðè âûïîëГ*ГҐГ*ГЁГЁ óñëîâèÿ ïðèêëåèâГ*ГҐГ¬ Г§Г*ГЇГїГІГіГѕ ГЅГІГ® äëÿ ГўГ±ГҐГµ îñòГ*ëüГ*ûé Г§Г*ïÿòûõ $1,323,343,123.50
            {strcat(_mas,",");j++;}
        }
        else if(z==5&&nuw[i]!='0')
        {
            _mas[j]=nuw[i]; 
        }
    }
    _mas[j]='\0';//ïðîïèñûâГ*ГҐГ¬ Г*óëåâîé ñèìâîë
    Display(_mas);//âûâîä Г*Г* ГЅГЄГ°Г*Г*
    
}
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
 
//************************************************ÏðîâåðêГ* ГЄГ«Г*Г±Г±Г* Гў Main*************************************************//
int main()
{   money x;
    char ch=' ';
    int temp=0;
 long double  number;
 
    
    do
    {
        cout<<"\tÂâåäèòå ÷èñëî : ";
        cin>>number;
        x.Trans(number);
        temp++;
        cout<<"\tГ—ГІГ® ГЎГ» Г§Г*ГЄГ®Г*ГјГ·ГЁГІГј ââîä Г*Г*æìèòå --> n :";
        cin>>ch;
 
    }while(ch!='n');
    for(int i=0;i<temp;i++)
    {
        x.Result();
    }
    
 
        system("pause");    
    return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////
Как бы это сделали бы Вы!ТОЛЬКО БОЛЬШАЯ ПРОСЬБА я ещё только учусь и для решения этой задачи я пришёл только лишь со знаниями о классах, массивах,функциях.Указатели, потоки, перегрузки и тд еще не изучал!
Если можно пишите тоже по простому!Да кстати код полностью рабочий, писал на оболочке С++ 6.0
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2011, 05:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обмен опытом или как бы это сделали бы Вы!! (C++):

Обмен опытом и сотрудничество - C++
Здравствуйте, программисты, веб-мастера, дизайнеры. Рад буду пообщаться, обменяться опытом, и принять участие в совместных проектах. ...

Обмен опытом по программированию на С++ - C++
А никто не знает сайты, направленные на обмен опытом между программистами, как здесь: ...

Проверка скорости кода. Обмен опытом - C++
Вводные данные: - C++ стандарта 11 - gcc Работаю над ускорением кода для работы со строками. К примеру, сравниваю между собой...

Как найти работу новичку программисту, или набраться опытом? - C++
Здравствуйте! Хочу найти работу C++ программиста, удаленно или в офисе, но везде требуют опыта, знание английского языка на уровне чтения...

Как бы вы сделали обмен между потоками для СОМ порта - Delphi WinAPI
Добрый день Всем. Собственно сам вопрос как лучше сделать синхронизацию/обмен между потоками одного приложения. Знаю что можно через...

Как это сделали? - C#
Добрый день, уважаемые! У меня такой вопрос: есть программа написанная на Билдере, (прилагается) меня интересует как в ней работает...

17
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
07.01.2011, 13:34 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Класс еще хранит некую очередь из лонг-даблов?

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

Если абстрагироваться от указанных технологий, я бы реализовал задачу совсем по-другому.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <cmath>
#include <cstddef>
#include <cstdio>
#include <string>
 
using std::string;
 
class Money {
 public:
  Money() : value_(0.0) {}
  explicit Money(long double value) : value_(value) {}
 
  // безусловно, не самая лучшая реализация, на скору руку
  string ToFormattedString(const string &thousands_separator,
                  const int &decimals) const {
    if (value_ < 0.000001)
      return string("0.00");
    string result = "";
 
    long int temporary_value = value_ * pow(10., decimals);
 
    for (int i = 0; i < decimals; ++i) {
      result = static_cast<char>((temporary_value % 10) + '0') + result;
      temporary_value /= 10;
    }
    result = '.' + result;
 
    size_t counter = 0;
    while (temporary_value > 0) {
      result = static_cast<char>((temporary_value % 10) + '0') + result;
      temporary_value /= 10;
      ++counter;
      if ((counter % 3 == 0) && (temporary_value > 0))
        result = thousands_separator + result;
    }
    return result;
  }
 
  long double GetValue() const { return value_; }
  void SetValue(long double const &new_value) { value_ = new_value; }
 private:
  long double value_;
};
 
int main(int argc, char *argv[]) {
  // пример
  Money a(1100.11);
  printf("%s", a.ToFormattedString(",", 2).c_str());
 
  int key;
  scanf("%d", &key);
}
3
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
07.01.2011, 15:42 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
 
#define MAXNUM 9999999999900.00
#define NUM 2 // число цифр после запятой
 
void error(std::string err_msg)
{
  std::cerr << err_msg << std::endl;
}
 
class Money
{
public:
  Money():value(0){}
  Money(double v);
  void print() const;
  std::string to_string() const;
  bool set(const double& v);
private:
  bool valid(const double& v) const;
  double value;
};
 
Money::Money(double v)
{
  if(!set(v)) 
    {
      error("Ошибка инициализации.");
      value=0;
    }
}
 
bool Money::valid(const double& v) const
{
  if(v>MAXNUM) return false;
  return true;
}
 
bool Money::set(const double& v)
{
  if(valid(v)) value = round(v*pow(10,NUM))/pow(10,NUM);
  else return false;
  return true;
}
 
void Money::print() const
{
  std::cout << "$ " << to_string()<<std::endl;
}
 
 
std::string Money::to_string() const
{
  double tmp=value*pow(10,NUM);//избавляемся от дробной части
  std::string str;
  str+=char(fmod(tmp,10) + '0');
  while(int(tmp/=10)) 
    {
      if(str.length()==NUM)str+='.';
      else if( str.length()>=NUM+3 && !((str.length()-NUM)%4) ) str+=',';
      str+=char(fmod(tmp,10) + '0');
    }
  std::reverse(str.begin(),str.end());
  return str;
}
 
int main()
{
  Money m(12345678910.1155);
  m.print();
}
1
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 16:53  [ТС] #4
Большое спасибо что вы посмотрели эту тему! Но есть маленькая просьба Я ЖЕ ПРОСИЛ РЕАЛИЗОВЫВАТЬ КОД НА С++! Раньше как я слышал в институтах перед изучением С++ изучали С! Но теперь этого не делают так как С++ обошел С по многим параметрам и возможностям(хотя иногда проигрывает по скорости выполнения)! В итоге мне не известно для чего вы перед конструктором пишете explicit!Так же я писал в самом начале что не изучал ещё указатели!Если Вам не трудно пожалуйста напишите программу чисто не С++
без смешивания языков!(Заместо #define const ну и так далие)
ДА К СТАТИ КЛАСС ДОЛЖЕН ХРАНИТЬ ЗНАЧЕНИЕ НЕ ИЗ LONG DOUBLE А ИЗ УЖЕ ПЕРЕВЕДЕНОГО ЗНАЧЕНИЯ В CHAR MAS[]
0
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
07.01.2011, 17:06 #5
Цитата Сообщение от stawerfar Посмотреть сообщение
Я ЖЕ ПРОСИЛ РЕАЛИЗОВЫВАТЬ КОД НА С++!
Это и есть С++

Цитата Сообщение от stawerfar Посмотреть сообщение
В итоге мне не известно для чего вы перед конструктором пишете explicit!
excplict гарантирует неиспользование конструктора в качестве оператора приведения типа.
Это чисто C++ная фишка.

Цитата Сообщение от stawerfar Посмотреть сообщение
без смешивания языков!(Заместо #define const ну и так далие)
Дефайн это тоже C++
1
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
07.01.2011, 17:17 #6
без смешивания языков!(Заместо #define const ну и так далие)
чем вам не нравится define? Директивы препроцессора используются как в си, так и в си++, и это инструкция для компилятора, от языка в она не зависит.
Препроцессорные директивы в C/C++ (#include, #define и прочее)
C++
1
2
#define MAXNUM 9999999999900.00
#define NUM 2 // число цифр после запятой
Можете заменить их на
C++
1
2
const int NUM=2;
const double MAXNUM=9999999999900.00;
Добавлено через 6 минут
ДА К СТАТИ КЛАСС ДОЛЖЕН ХРАНИТЬ ЗНАЧЕНИЕ НЕ ИЗ LONG DOUBLE А ИЗ УЖЕ ПЕРЕВЕДЕНОГО ЗНАЧЕНИЯ В CHAR MAS[]
Текущий вариант по мне рациональней. текстовое представление необходимо только пользователю, а любая арифметическая операция, намного проще описывается именно в данном представлении.
И как вы собираетесь использовать динамический массив без указателей? Или хотите сразу создать длиной в 24 символа ?
1
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
07.01.2011, 17:52 #7
Цитата Сообщение от stawerfar Посмотреть сообщение
Я ЖЕ ПРОСИЛ РЕАЛИЗОВЫВАТЬ КОД НА С++!
Я писал для С++ стандарта 99 года. ) На чистом С классов нет совсем.

Цитата Сообщение от stawerfar Посмотреть сообщение
В итоге мне не известно для чего вы перед конструктором пишете explicit!
Это указание компилятору не использовать такой конструктор для конвертации типов.

Цитата Сообщение от stawerfar Посмотреть сообщение
Если Вам не трудно пожалуйста напишите программу чисто не С++
без смешивания языков!
Без смешивания языков никак. Создатель языка С++ сам определяет свое детище как "лучший С" (better C). Большая часть языка C++ есть и в С.

Цитата Сообщение от stawerfar Посмотреть сообщение
ДА К СТАТИ КЛАСС ДОЛЖЕН ХРАНИТЬ ЗНАЧЕНИЕ НЕ ИЗ LONG DOUBLE А ИЗ УЖЕ ПЕРЕВЕДЕНОГО ЗНАЧЕНИЯ В CHAR MAS[]
Да, я думал о варианте кэширования переменной в виде посимвольного представления числа, но решил, что подобный выпендреж вам будет не понятен. ) И да, там бы я тоже использовал динамическое выделение памяти.
Вообще, если не брать С++ модуль strings, без указателей и динамической памяти в такой программе обойтись довольно сложно.

Кстати, в вашем коде указатели используются.
Цитата Сообщение от stawerfar Посмотреть сообщение
ostream & operator<<(ostream & out,char*s)
{
char buf[512],*p=buf; // что бы был Русский язык на выходе cout
CharToOem(s,buf);
while(*p)
out<<*p++;
return out;
}

Не по теме:

Что за звездочки в цитате кода?!

1
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 17:54  [ТС] #8
Дефайн это тоже C++[/QUOTE] Ну не знаю допустим Лафоре пишет
константы можно определять с помошью директивы процессора #difine , не смотря на то что такой способ не рекомендуется употреблять в С++ . Деректива #difine не делает различий между числами и символьными строками.Такая конструкция долгое время была популярна в языке С . Однако отсутствие типа у подобных переменных может привести к некорректной работе программы , и по этому даже в С был предложен способ, использующий слово const.
0
vx5
07.01.2011, 17:56
  #9

Не по теме:

Цитата Сообщение от lemegeton Посмотреть сообщение

Не по теме:

Что за звездочки в цитате кода?!

там еще и перегрузка оператора

0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 18:10  [ТС] #10
Да вы правы используется указатель для того чтобы можно было вывести русский
но это нам дали в институте но пока мы не проходили сами указатели как таковые!Это просто готовый код который я еще не знаю.

Добавлено через 10 минут
Да и ещё один вопрос как например предотвратить выход за приделы допустимых значений переменных!?
Например пользователь вводит число любого типа (double,int long double) а я должен проверить не указал ли пользователь число которое больше диапазона допустимых значений! Если это double то не вышел ли он за приделы 1.7*10^-308 точность 15?Есть ли встроенные функции для этих целей?
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
07.01.2011, 18:19 #11
Цитата Сообщение от stawerfar Посмотреть сообщение
Ну не знаю допустим Лафоре пишет
константы можно определять с помошью директивы процессора #difine , не смотря на то что такой способ не рекомендуется употреблять в С++ . Деректива #difine не делает различий между числами и символьными строками.Такая конструкция долгое время была популярна в языке С . Однако отсутствие типа у подобных переменных может привести к некорректной работе программы , и по этому даже в С был предложен способ, использующий слово const.
по мне единственное неудобство, которое может быть от дефайна в больших программах связано с отладкой.
C++
1
2
3
4
5
#define N 12345
/*
*/
int x;
if(x=N); //опа,очепятка
В такой программе компилятор тебе укажет что ошибка в некоторой инструкции x=12345, а у тебя в коде там вроде как N стоит, может сбить с толку. Компилятор подменяет все N указанным значением и компьютер видит программу уже иначе
Определяя переменную вы определяете ей ячейку в памяти, а здесь вы даете инструкцию компилятору. Это разные вещи и каждый из этих способов имеет право на существование
З.Ы: Хотя в С++ глобальные константы, кажется, реализуются тоже без выделения памяти.

Добавлено через 4 минуты
и если уж пошло про смесь языков, то это скорее у вас:
C++
1
2
strcpy(mas[back++],mes);
strlen(nuw);
это функции работы с с-шными строками, в плюсах используют класс string.
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 18:29  [ТС] #12
Вполне возможно!Как и char был унаследован у С. char остался так как например string не работает с Русским языком и это лишь одна из причин по которой продолжают использовать
С++!
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
07.01.2011, 18:35 #13
Цитата Сообщение от stawerfar Посмотреть сообщение
Вполне возможно!Как и char был унаследован у С. char остался так как например string не работает с Русским языком и это лишь одна из причин по которой продолжают использовать
С++!
да ты что ? у меня стринг всегда прекрасно работал с русскими буквами.
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 18:45  [ТС] #14
это смотря какие методы класса string вы использовали. Вот например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
#include<string>
using namespace std;
 
 
#include<windows.h>
ostream & operator<<(ostream & out,char*s)
{
    char buf[512],*p=buf;
    CharToOem(s,buf);
    while(*p)
        out<<*p++;
    return out;
}
 
int main()
{       //ââåäåГ*ûå ñëîâГ* Г*ГҐ îòîáðГ*Г¦Г*ГѕГІГ±Гї Г*Г* ðóñêîì
            string s1="Ïðèâåò";
            cout <<s1<<endl;
    // Г* ГІГ*ГЄ Г¤Г*
            char mas[]="Ïðèâåò";
            cout<<mas<<endl;
 
        system("pause");
    return 0;
}
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
07.01.2011, 18:53 #15
у меня все работает
0
Миниатюры
Обмен опытом или как бы это сделали бы Вы!!  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2011, 18:53
Привет! Вот еще темы с ответами:

Каждую секунду по 1-3 пользователю - как они это сделали? - PHP
Всем привет. Каждую секунду по 1-3 пользователю, как сделать типа такого? Можно код. Спасибо http://mdk.is/

А как это вот так сделали ? (ресурс подчиненный XAML, скриншот) - C#
Собственно вот : Ресурс подчиненный XAML, как это делается, подскажите пожалуйста

Обмен опытом об iptables - Ubuntu Linux
Поделитесь своим опытом создания правил iptables. Например в каком порядке создавать правила и т д

Обмен опытом: свойство Enabled - Visual Basic .NET
Приветствую. Хотел бы обменяться опытом. Так вот. Представьте себе стандартную форму с большим количеством полей и тулбаром. Понятно,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
07.01.2011, 18:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru