Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане!
Дана задача:
Создайте класс ,напишите метод для преобразования числа типа 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2011, 05:09
Ответы с готовыми решениями:

Обмен опытом или просто диалог с программистом
Hello world! Мне 20 лет. Я уже 2 года работаю C# погромистом. По началу мне нравилась эта работа,...

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

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

Как это они так сделали?
Обнаружил недавно один сайт соверщенно случайно с хорошим ТИЦ. Полез смотреть бэклинки и обнаружил...

17
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
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
191 / 175 / 12
Регистрация: 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
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 16:53  [ТС] 4
Большое спасибо что вы посмотрели эту тему! Но есть маленькая просьба Я ЖЕ ПРОСИЛ РЕАЛИЗОВЫВАТЬ КОД НА С++! Раньше как я слышал в институтах перед изучением С++ изучали С! Но теперь этого не делают так как С++ обошел С по многим параметрам и возможностям(хотя иногда проигрывает по скорости выполнения)! В итоге мне не известно для чего вы перед конструктором пишете explicit!Так же я писал в самом начале что не изучал ещё указатели!Если Вам не трудно пожалуйста напишите программу чисто не С++
без смешивания языков!(Заместо #define const ну и так далие)
ДА К СТАТИ КЛАСС ДОЛЖЕН ХРАНИТЬ ЗНАЧЕНИЕ НЕ ИЗ LONG DOUBLE А ИЗ УЖЕ ПЕРЕВЕДЕНОГО ЗНАЧЕНИЯ В CHAR MAS[]
0
37 / 36 / 4
Регистрация: 08.08.2010
Сообщений: 162
07.01.2011, 17:06 5
Цитата Сообщение от stawerfar Посмотреть сообщение
Я ЖЕ ПРОСИЛ РЕАЛИЗОВЫВАТЬ КОД НА С++!
Это и есть С++

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

Цитата Сообщение от stawerfar Посмотреть сообщение
без смешивания языков!(Заместо #define const ну и так далие)
Дефайн это тоже C++
1
191 / 175 / 12
Регистрация: 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
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
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
150 / 64 / 8
Регистрация: 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
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 18:10  [ТС] 10
Да вы правы используется указатель для того чтобы можно было вывести русский
но это нам дали в институте но пока мы не проходили сами указатели как таковые!Это просто готовый код который я еще не знаю.

Добавлено через 10 минут
Да и ещё один вопрос как например предотвратить выход за приделы допустимых значений переменных!?
Например пользователь вводит число любого типа (double,int long double) а я должен проверить не указал ли пользователь число которое больше диапазона допустимых значений! Если это double то не вышел ли он за приделы 1.7*10^-308 точность 15?Есть ли встроенные функции для этих целей?
0
191 / 175 / 12
Регистрация: 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
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 18:29  [ТС] 12
Вполне возможно!Как и char был унаследован у С. char остался так как например string не работает с Русским языком и это лишь одна из причин по которой продолжают использовать
С++!
0
191 / 175 / 12
Регистрация: 04.09.2010
Сообщений: 656
07.01.2011, 18:35 13
Цитата Сообщение от stawerfar Посмотреть сообщение
Вполне возможно!Как и char был унаследован у С. char остался так как например string не работает с Русским языком и это лишь одна из причин по которой продолжают использовать
С++!
да ты что ? у меня стринг всегда прекрасно работал с русскими буквами.
0
150 / 64 / 8
Регистрация: 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
191 / 175 / 12
Регистрация: 04.09.2010
Сообщений: 656
07.01.2011, 18:53 15
у меня все работает
Миниатюры
Обмен опытом или как бы это сделали бы Вы!!  
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 18:58  [ТС] 16
А вы не могли бы
C++
1
вот так выложить код! плохо видно!
0
191 / 175 / 12
Регистрация: 04.09.2010
Сообщений: 656
07.01.2011, 18:59 17
видимо у вас проблема в настройке форточки как видите, на линуксе все прекрасно работает, даже без перегрузки оператора.

Добавлено через 52 секунды
я просто скопировал ваш код и вырезал из него виндосовскую ересь и на картиночку можно нажать - она увеличится
1
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
07.01.2011, 19:02  [ТС] 18
спасибо буду знать!
0
07.01.2011, 19:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2011, 19:02
Помогаю со студенческими работами здесь

Как такое сделали и насколько это законно
Наткнулся в поиске Яндекс на один сайтик. Если смотреть сам сайт то все вроде бы в норме, а если...

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru