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

Заполнение массива числами в диалоговом режиме - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Непонятки с функциями http://www.cyberforum.ru/cpp-beginners/thread50304.html
Добрый день. Я новичек в программировании и вот вопрос: Хочу написать функцию, например: void __fastcall Tform1::FormPaint(TObject*Sender) { Grafik(); }
C++ Перевести число в систему римского счёта Приветствую тебя, О форум программистов и сисадминов! В этом деле я почти полный профан.. но работать надо и я прошу Вашей поддержки и помощи: есть задачка - "перевести заданное целое число в систему римского счёта".. Т.е. я просмотрел Ваши коды, но не совсем понимаю, как научить распознавать тысячи, сотни и т.д. Буду очень признатлен, если решение снизойдёт!! http://www.cyberforum.ru/cpp-beginners/thread50289.html
C++ GIF-анимация
Здравствуйте, программисты. Недавно поставил С++ 2007, в котором у компоненты TImage есть поддержка GIF.Поддержка есть, но фактически появляется лишь статическая картинка вместо анимации. Подскажите, что нужно сделать, чтобы анимация заработала.
Электронный органайзер C++
Написать программу, реализующую электронный органайзер. Реализовать возможности добавления, удаления, редактирования и хранения данных. Предусмотреть обработку всех возможных ошибок.
C++ Генерация чисел Хэмминга http://www.cyberforum.ru/cpp-beginners/thread50233.html
Задание 2.24. Генерация чисел Хэмминга Числами Хэмминга называются натуральные числа, которые среди своих делителей имеют только степени чисел 2, 3 и 5. Первые 10 упорядоченных по возрастанию чисел Хэмминга образует последовательность 1, 2, 3, 4, 5, 6, 8, 9, 10 и 12. Первому числу этого ряда соответствуют нулевые степени всех сомножителей. Составить программу, которая генерирует первые 1000...
C++ что такое матрица? Уважаемые,объясните мне,что такое матрица?:)....я толком не понимаю,читаю посты про матрицу,и как то стесняюсь,что не знаю такого...Объясните буду благодарен подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
10.09.2009, 14:35
Вот то как я реализовал, думаю как раз по заданию,
Если делать массив статическим, то можно не поключать
windows.h, а массив прописать как int mass[10] вместо
int * mass = (int *)malloc(sizeof(int));
+ убрать строчки

Вот они :
C++
1
2
3
4
5
6
7
8
9
10
int * mass = (int *)malloc(sizeof(int));
 
//Увеличиваям блок памяти для массива как раз под число элементов
mass = (int *)realloc((void *)mass,nElements*sizeof(int));
 
//Уменьшаем блок памяти до 1-го элемента
//  mass = (int *)realloc((void *)mass,sizeof(int));
 
    //Если выходим из программы то чистим память
//  free((void *)mass);
Всё будет и в этом случае работать
Если массив будет статический , т.е. int mass[10], то помним
что число єлемнтов nElements должно быть <= 10!!!


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
#include <windows.h>  //Прототипы malloc и free
#include <iostream.h> 
//>Для отображения русского текста
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
//<
#include <math.h>    //Подключаем математические функции
 
//Размерность массива может быть любой
//и в программе нужно использовать динамический массив
//выделяем память под массив, 
int * mass = (int *)malloc(sizeof(int));
//в дальнейшем размер массива можно будет изменять 
//функцией realloc
 
//int mass[10]; //на случай статического массива
 
 
//Функция для ввода элементов массива
void input(int nElements, int * mass);
//Функция для вывода элементов массива
void output(int nElements, int * mass);
//Функция возвращает сумму составляющих цифр числа digit
int getsum(int digit);
 
void main()
{
    cout<<"Введите кол-во элементов в массиве\r\n";
    int nElements;cin>>nElements;
    //Увеличиваям блок памяти для массива как раз под число элементов
    mass = (int *)realloc((void *)mass,nElements*sizeof(int));
 
    //Вводим массив
    input(nElements, mass);
    //Выводим массив
//  output(nElements, mass);
 
    cout<<"Введите число M\r\n";
    int M;cin>>M;
 
    cout<<"Элементы с сумой составляющих цифр равной "<<M<<"\r\n";
    for(int i = 0; i < nElements; i++)
    {
        if(getsum(mass[i]) == M)
            cout<<"mass["<<i<<"] = "<<mass[i]<<"\r\n";
    }
 
    //Уменьшаем блок памяти до 1-го элемента
    mass = (int *)realloc((void *)mass,sizeof(int));
    cout<<"Нажмите 1 чтобы произвести новый ввод массива\r\n";
    cin>>M;
    if(M == 1)
        main();
    //Если выходим из программы то чистим память
    free((void *)mass);
}
 
void input(int nElements, int * mass)
{
    cout<<"\tВведите элементы массива\r\n";
    for (int i = 0; i < nElements; i++)
    {
        cout<<"mass["<<i<<"] = ";
        cin>>mass[i];
    }
}
 
void output(int nElements, int * mass)
{
    cout<<"\tЭлементы массива\r\n";
    for (int i = 0; i < nElements; i++)
        cout<<"mass["<<i<<"] = "<<mass[i]<<"\r\n";
}
 
int getsum(int digit)
{
    //Работаем только с положительныыми числами
    //если исходное число было отрицательным 
    //то умножим его на -1
    if(digit < 0)
        digit *= -1;
 
    int sum = 0;
    if(-1 < digit && digit < 9)
        sum += digit;
    else
    {
        int iPOW = 1;
        div_t iBUF;
        do
        {
            //Функция div(a,b)
            //возвращает целую (qoute) и дробную (rem) часть от деления
            //числа a на число b
            iBUF = div(digit,pow(10,iPOW));
            sum += (iBUF.rem)/pow(10,iPOW - 1);
            iPOW++; 
            digit -= sum;
        }
        while(0 < digit);
    }
    return sum;
}
void output(int nElements, int * mass)
{
    cout<<"\tЭлементы массива\r\n";
    for (int i = 0; i < nElements; i++)
        cout<<"mass["<<i<<"] = "<<mass[i]<<"\r\n";
}
 
int getsum(int digit)
{
    //Работаем только с положительныыми числами
    //если исходное число было отрицательным 
    //то умножим его на -1
    if(digit < 0)
        digit *= -1;
 
    int sum = 0;
    if(-1 < digit && digit < 9)
        sum += digit;
    else
    {
        int iPOW = 1;
        div_t iBUF;
        do
        {
            //Функция div(a,b)
            //возвращает целую (qoute) и дробную (rem) часть от деления
            //числа a на число b
            iBUF = div(digit,pow(10,iPOW));
            sum += (iBUF.rem)/pow(10,iPOW - 1);
            iPOW++; 
            digit -= sum;
        }
        while(0 < digit);
    }
    return sum;
}
Миниатюры
Заполнение массива числами в диалоговом режиме  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru