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

Присвоение свойств элементу данного класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Абстрактный тип данных http://www.cyberforum.ru/cpp-beginners/thread822447.html
1) Добавьте к АТД «стек» функцию top, что получает элемент из верхушки стека, не удаляя его, и реализуйте ее аналогично функции pop. В отличие от pop, она не переносит верхушку стека в следующий элемент и не освобождает память.
C++ Прочитать русские буквы в массив char с помощью cin Какую нужно добавить библиотеку, или еще что-то? просто setlocale(LC_ALL, "Russian"); не помогает. http://www.cyberforum.ru/cpp-beginners/thread822427.html
Структура или класс C++
Подскажите, пожалуйста, своими словами, что такое структура и что такое класс. В чем отличие и как их использовать? У меня есть двумерный массив, проходя по которому надо будет присваивать метки элементам массива. Т.е. смотрю текущее значение массива и сравниваю с соседами слева и справа, если значения совпадают то всем трем ячейкам надо присвоить одну метку. Полагаю, что здесь нужна структура...
C++ system()
#include "stdafx.h" #include <iostream> #include <fstream> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv) { string s1;//адрес сервера
C++ перегрузка оператора= (задание на собеседовании) http://www.cyberforum.ru/cpp-beginners/thread822414.html
Задание выглядело следующим образом: Перегрузка оператора присваивания Пусть есть класс class Boo : public SuperBoo { Foo* fFoo1; Foo* fFoo2; // ... } Где Foo - мономорфный класс, а класс Boo владеет указателями fFoo1, fFoo2. Задача: перегрузить оператор присваивания для класса Boo.
C++ Qt и тому подобное Добрый день, нужна помощь. Собираюсь написать самую обычную программу, без сложной графики или еще чего либо. Просто кнопочно-списочный интерфейс. Собираюсь писать на С++, и ищу кроссплатформенную интерфейс библиотеку, по типу Qt. Скажите пожалуйста, для такой задачи что лучше использовать? Если подходит Qt, то можете ли вы скинуть учебник по Qt для С++? ( Желательно, в котором описывается... подробнее

Показать сообщение отдельно
MatMatRix
1 / 1 / 0
Регистрация: 13.03.2013
Сообщений: 24

Присвоение свойств элементу данного класса - C++

29.03.2013, 21:19. Просмотров 250. Ответов 0
Метки (Все метки)

Очередное задание с большими числами, которое у меня почему-то ну никак не получается. Целый день с ним промучилась, но опять-таки ничего не смогла понять. Задание у меня такое: дано число, от которого нужно взять факториал. У меня при всём при том, что факториал сам берётся (умножение, вычитание - всё идёт как надо), прога в любом случае выводит ноль. Может, кто-то сможет понять, в чём дело?

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
#include <iostream>
#include <string>
#include <math.h>
 
using namespace std;
 
class Very{
        public:
        Very(string s){ //Создание класса.
            int i;
 
            Len=s.length();
            for(i=0;i<Len;i++){
            numb[i]=s[Len-1-i]-'0';
            };
            for(int k=i;k<=999;k++){numb[k]=0;}
        };
        ~Very(void){}; //Деструктор.
        void ToStroke(void){
 
            for(int i=Len-1;i>=0;i--){
                cout<<numb[i];
                }
            cout<<""<<endl;
        };
        void OnePlusOne(Very a,Very b){ //Сложение.
            int q;
 
            Len=0;
            if(a.Len<=b.Len){q=b.Len;}
            else{q=a.Len;}
            for(int u=0;u<(q+1);u++){
                numb[u]=a.numb[u]+b.numb[u];
                Len++;
            }
            plusplus();
            Lengly();
        };
        void OneMinusOne(Very c,Very d){ //Вычитание.
            int s;
 
            for(s=0;s<(c.Len-1);s++){
                if(c.numb[s]<d.numb[s]){
                    if(c.numb[s]==-1){
                        c.numb[s]=9;
                        c.numb[s+1]=c.numb[s+1]-1;
                    }
                    else{
                        c.numb[s]=c.numb[s]+10;
                        c.numb[s+1]=c.numb[s+1]-1;
                    }
                }
                numb[s]=c.numb[s]-d.numb[s];
            }
            numb[s]=c.numb[s]-d.numb[s];
            
            Lengly();
        };
        int Elsy(Very a, Very b){ //Сравнение.
            int l,i;
 
            i=0;
            if(a.Len>=b.Len){l=a.Len;}
            else{l=b.Len;}
            for(int k=(l-1);k>=0;k--){
                if(a.numb[k]>b.numb[k]){i=1; break;}
                else if(a.numb[k]<b.numb[k]){i=-1; break;}
            }
            if(i==0){return 0;}
            else if(i==1){return 1;}
            else{return -1;}
        };
        void OneSubtractOne(Very e,Very f){ //Умножение одного на другое.
            int i,j,k;
            
            for(j=0;j<f.Len;j++){
                Very eaf("0");
                for(i=0;i<e.Len;i++){
                    eaf.numb[i+j]=e.numb[i]*f.numb[j];
                }
                k=i+j;
                for(i=0;i<=k;i++){
                    numb[i]=numb[i]+eaf.numb[i];
                }
                Lengly();
                plusplus();
                Lengly();
                eaf.~Very();
            }
            Lengly();
        };
        void Factorial(Very res,Very l){ //Взятие факториала.
 
            Very nu("0");
            Very uno("1");
            Very f("0");
            if(res.Elsy(l,nu)==0){res=uno;} //Факториал нуля равен единице.
            else if(res.Elsy(l,uno)==0){res=uno;} //Факториал единицы равен единице.
            else{
                res=l;
                while(l.Elsy(l,uno)==1){
                res.Lengly();
                l.OneMinusOne(l,uno);
                f.OneSubtractOne(res,l);
                res=f;
                f.Null();
                cout<<endl;
                }
            }
        };
        void Null(){ //Обнуление большого числа.
 
            for(int k=Len-1;k>=0;k--){
                numb[k]=0;
            }
        };
    private:
        int Len;
        int numb[1000];
        void Lengly(void){ //Определение длины строки.
            int l;
 
            for(l=999;l>=0;l--){
            if(numb[l]!=0){
                Len=l+1;
                break;
                }
            }
        };
        void plusplus(void){ //Функция, которая при сложении чисел распределяет их по разрядам, приводя число к нормальному виду.
            int i;
        
            for(i=0;i<Len;i++){
                numb[i+1]=numb[i+1]+numb[i]/10;
                numb[i]=numb[i]%10;
            }       
        };
};
 
int main(){
    string n;
 
    cin>>n;
    Very N1(n);
    Very N3("0");
    N3.Factorial(N3,N1);
    N3.ToStroke();
 
    return system("pause");
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru