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

Аналог AnsiString в Qt - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Очистить строку при каждом выполнении пункта меню http://www.cyberforum.ru/cpp-beginners/thread279669.html
Вот фрагмент из программы, подскажите кто может, как можно очистить строку b при каждом выполнении 2-го пункта меню, а то не правильно работает. void main() { spisok spp=NULL, q=NULL, sp=NULL, p=NULL; char a,b; int i=0,f=1,n=99; while (n!=0) {
C++ Определить время выполнения программы Как узнать сколько выполняется программа на С++.Т.е. что бы со всеми результатами,скажем в конце, выводилось еще и ее время выполнения, можно ли так сделать, какие есть функции? http://www.cyberforum.ru/cpp-beginners/thread279667.html
C++ Как создать интерфейс для программы?
Здравствуйте. Подскажите, Как создать графический интерфейс. К примеру написал прогу(исходник), тот же конвертер валют или калькулятор написан в консоле, как теперь "оформить" в графический интерфейс ? Исходники сделаны в С++
C++ Процедура
Найти все коэффициенты разложения (x+y)n , т.е. Cn^k , где k= 0, ..., n. Вычисление Cn^k оформите в виде подпрограммы. Подскажите как это выполнить на C++
C++ Функции http://www.cyberforum.ru/cpp-beginners/thread279648.html
Даны натуральные числа a, b, c. Определить функцию bin (x), переводящую число х из десятичной системы счисления в двоичную. Найти двоичное представление эти чисел.Как организовать на С++
C++ как посчитать? Как посчитать кол-во способов добраться до n-ой лестницы с максимальным шагом k (1<=k<=n) подробнее

Показать сообщение отдельно
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
20.04.2011, 02:04  [ТС]     Аналог AnsiString в Qt
А вот тут не подскажешь?)
вот я описала класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class BigInt {
 
  int Size;             // Size - текущая длина (истинная длинна числа)
  int SizeMax;        // SizeMax - максимальная длина
  int *Coef;           // Массив коэффициентов (массив где храним наши четырехзнаяные числа)
  int Znak;            // Знак числа, либо 1(положительное число), либо -1(отрицательное)
 
public:
  BigInt();                       //Объявление вида BigInt A, конструктор по умолчанию
  BigInt(char *A);        //Объявление вида BigInt А("1234567")
  BigInt(const BigInt &A);        //Конструктор копирования
  ~BigInt();                      //Деструктор
 
  BigInt& operator=(const BigInt &A);   // Оператор присваивания
 
private:
  void Add(const BigInt &A, const BigInt &B, BigInt &C);     //СЛОЖЕНИЕ
  
  int DivRes(int dig, int size);
 
};
вот написала функции для сложения чисел:
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
void BigInt::Add(const BigInt &A, const BigInt &B, BigInt &C){    // СЛОЖЕНИЕ
    int i;
    long int slag;    //временная переменная
 
    //до выполнения переноса возможно slag > BASE
    const int *a = A.Coef, *b = B.Coef;
    int *c = C.Coef, carry = 0;   //carry - в этой переменной храним значение для переноса в страший разряд
 
    if (A.Znak*B.Znak > 0){   //Т.е. числа А и В имеют одинкаовые знаки, либо оба +, либо оба -,
       C.Znak = A.Znak;          //тогда и С будет такого же знака
 
       //нужно, чтобы B.Size <= A.Size
       if (A.Size < B.Size){
        Add(B,A,C);
           return;
       }       //вот теперь получили B.Size <= A.Size
 
       // Складываем два чилса
       for (i = 0; i<B.Size; i++){
           slag = a[i] + b[i] + carry;
           if (slag >= BASE){   //переполнение, перенсети единиицу
               c[i] = slag - BASE;
               carry = 1;
           } else {
              c[i] = slag;
              carry = 0;
           }
       }
 
       //меньшее число закончилось
       for (; i < A.Size; i++){
           slag = a[i] + carry;
           if (slag >= BASE){
               c[i] = slag - BASE;
               carry = 1;
           } else {
               c[i] = slag;
               carry = 0;
           }
       }
 
       //если carry не нулевое, т.е. остался перенос - добавить его в дополнитеьный разряд
       if (carry){
           C.Size = A.Size + 1;
           c[i] = carry;
       } else C.Size = A.Size;
   } else {
       if (A.Znak > 0) {
           B.Znak = 1;
           Sub(A,B,C);
       } else {
           A.Znak = 1;
           Sub(B,A,C);
       }
   }
 
};
выдает ошибку http://www.imagepost.ru/images/2/ye/2ye_1.JPG

не нравится ему A.Znak и B.Znak

мне нужно в параметрах ф-ии указать переменную знак??или как?

Добавлено через 4 минуты
Цитата Сообщение от rangerx Посмотреть сообщение
Это не ошибка, а предупреждение о сравнении знакового и беззнакового числа.
for (size_t i = 1; i < strlen(A); i++)

Добавлено через 3 минуты

зачем это сравнение с -1?
ой, все поняла просто я другую функцию сначала вставляла туда, она возвращала значение -1, если подстрока не входит в строку
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru