Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 8

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

10.09.2009, 12:02. Показов 3614. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Указать индексы и напечатать элементы целочисленного массива X[10], сумма цыфр которых равна заданному числу M(если такие эллементы есть). Число М программа должна запрашивать в диалоговом режиме. Написать функции
-Заполнение массива числами в диалоговом режиме.
-Вывода одномерного массива.
-Определение, равна ли сумма числа заданному числу M.

P.S.я чайница и заранее благодарю.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2009, 12:02
Ответы с готовыми решениями:

Заполнение массива числами
Здравствуйте, есть набор чисел (3, 3.5, 4 ,4.5, 5) требуется заполнить массив который заполняется случаными образом этими числами....

Заполнение массива тремя числами
Как поставить проверку на ввод чисел? Что бы матрицу NxM можно было заполнить только тремя цифрами (1,0,-1) Как это на Си будет...

Заполнение массива комплексными числами
Почему компилятор выдает ошибку? // ya nachal delaty RGZ!!!!!! #include "stdafx.h" #include "iostream" #include <complex> ...

13
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
10.09.2009, 12:31
Вот код, определяет, можно ли составить число из элементов массива.
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
#include <iostream>
using namespace std;
 
int main ()
{
    setlocale (LC_ALL, ".1251");
    int a [10];
    int i, j, n, m, s;
    bool f = false;
 
    cout << "Введите размерность\n";
    cin >> n;
    cout << "Введите массив\n";
    for (i = 0; i < n; i++)
        cin >> a [i];
    cout << "Введите число\n";
    cin >> m;
    s = 0;
 
    for (i = 0; i < n; i++)
    {
        for (j = i; j < n; j++)
        {
            s += a [j];
            if (s == m)
            {
                f = true;
                break;
            }
        }
        if (f)
            break;
        s = 0;
    }
    if (s != 0)
        cout << s << endl;
    else
        cout << "Из элементов массива нельзя составить число\n";
    return 0;
}
Если нужны индексы, то можно завести ещё один массив для хранения индексов.

Добавлено через 2 минуты
Цитата Сообщение от Ququruza Посмотреть сообщение
-Вывода одномерного массива.
Может быть, ввода?
1
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 8
10.09.2009, 12:34  [ТС]
у меня почему-то написано "вывода"
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
10.09.2009, 12:39
C++
1
2
3
        cout << "\nВведенный массив\n";
        for (i = 0; i < n; i++)
                cout << a [i] << ' ';
Вот вывод. Вставь его между 15 и 16 строками
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.09.2009, 13:41
Цитата Сообщение от qwert Посмотреть сообщение
int a [10];
...
cout << "Введите размерность\n";
cin >> n;
cout << "Введите массив\n";
for (i = 0; i < n; i++)
cin >> a [i];
А если n > 10, размер массива a при вводе a[10], a[11], a[12]... автоматически увеличиваться будет? Да и зачем его размер менять, если задано:
Цитата Сообщение от Ququruza Посмотреть сообщение
Указать индексы и напечатать элементы целочисленного массива X[10]...
0
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 8
10.09.2009, 14:01  [ТС]
Я вас не понимаю) так что получается, решено не верно?:*(
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.09.2009, 14:27
Цитата Сообщение от Ququruza Посмотреть сообщение
Я вас не понимаю) так что получается, решено не верно?:*(
Ну я же спрашивал, а не говорил, что всё плохо
Вот Вам ещё вариант, добавьте только, что там для вывода русских букв в виндовской консоли надо...
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
#include <iostream>
#include <iomanip>
 
/* Указать индексы и напечатать элементы целочисленного массива X[10], сумма цифр которых равна заданному числу M */
 
#define XSIZE 10
 
using namespace std;
 
/* Возвращает сумму цифр числа number */
int digits_summ(int number);
 
int main(){
    int x[XSIZE];
    int m, i;
    
    /* заполнение массива */
    for ( i = 0; i < XSIZE; i++ ) {
        cout << "Введите элемент Х[" << i << "] ";
        cin >> x[i];
    }
    
    cout << "Введите число М ";
    cin >> m;
    
    cout << "Значения элементов массива:" << endl;
    cout << "Индекс " << "Значение" << endl;
    for ( i = 0; i < XSIZE; i++ )
        cout << left << setw(7) << i << x[i] << endl;
    
    cout << "Элементы массива с суммой цифр равной " << m << endl;
    cout << "Индекс " << "Значение" << endl;
    for ( i = 0; i < XSIZE; i++ )
        if ( digits_summ(x[i]) == m )
            cout << left << setw(7) << i << x[i] << endl;
    
    return(0);
}
 
int digits_summ(int number){
    int sum = 0;
    if ( number < 0 )
        number *= -1;
    while ( number ) {
        sum += number % 10;
        number /= 10;
    }
    return(sum);
}
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
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;
}
Миниатюры
Заполнение массива числами в диалоговом режиме  
1
 Аватар для firefox1913
28 / 28 / 6
Регистрация: 01.07.2009
Сообщений: 58
10.09.2009, 14:56
может так пойдет
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
#include <iostream>
 
inline void vivod(int index1,int *mas,int index2)
{
    std::cout<< mas[index2]<<" ";
  for(int i=0; i <= index1; i++)
      std::cout<< mas[i] <<"  ";
  std::cout<<"\n";
}
void find(int *mas, int n,int M)
{
   int summa=0;
    for(int j=0; j < n; j++)
    {
      summa=mas[j];
      for(int i=0; i < n; i++)
      {
        summa+=mas[i];
        if(summa==M){ vivod(i,mas,j); break; }
      }
    }
}
int main()
{
    int m,n,i;
        
    std::cout<<" m := "; std::cin>>m;
    std::cout<<"vvedite n : "; std::cin>>n;
    int *mas=new int[n];
 
    std::cout<<" vedite massiv \n";
 
    for(i=0; i < n; i++)
        std::cin>>mas[i];
 
    find(mas,n,m);
    return 0;
}
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
10.09.2009, 15:31
По просьбам трудящихся выкладываю проект, запускаем файл с расширением dsw, всё откомпилено в VisualStudio 6.0 и 100% работоспособно!!!
Вложения
Тип файла: rar test_158.rar (6.9 Кб, 31 просмотров)
1
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
10.09.2009, 16:39
Цитата Сообщение от easybudda Посмотреть сообщение
А если n > 10, размер массива a при вводе a[10], a[11], a[12]... автоматически увеличиваться будет? Да и зачем его размер менять, если задано:
Думаю, в данном случае проверки на правильность ввода делать не обязательно.

easybudda, твой код не работает вообще. Он не выполняет поставленной задачи. Он только вводит и выводит массив.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.09.2009, 16:50
Цитата Сообщение от qwert Посмотреть сообщение
Думаю, в данном случае проверки на правильность ввода делать не обязательно.

easybudda, твой код не работает вообще. Он не выполняет поставленной задачи. Он только вводит и выводит массив.
Да ну?!


Вы бы задачу внимательнее прочитали!

Не по теме:

Да и на брудершафт я с Вами не пил...

0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
10.09.2009, 17:22
Я понимаю задание так: не те элементы по отдельности, сумма цифр которых равна M, а сумма разных элементов. Например, число: 6
массив: 1 2 3 7 5
1 + 2 + 3 = 6
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
11.09.2009, 14:06
2qwert:
Смотрим условие.
-Определение, равна ли сумма числа заданному числу M.
Раз проверяется сумма цифра КОНКРЕТНОГО числа на равенство M, то все-таки нужно проверять каждое число по отдельности, а не суммировать разные, как ты хочешь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2009, 14:06
Помогаю со студенческими работами здесь

Заполнение массива случайными числами
Подскажите пожалуйста, как заполнить массив случайными числами в div-C++? Программа выдает ошибку=( #include &lt;cstdlib&gt; ...

Заполнение массива рандомными числами
Здравствуйте! Нужно заполнить массив float рандомными числами от 0.3 до 0.9 #define MIN 0.3 #define MAX 0.9 int...

Заполнение массива случайными числами
Доброго времени суток. Перейду сразу к сути: Надо построить массив из 5000 целых случайных чисел и отсортировать его сортировкой Шелла, ...

Заполнение массива случайными числами
напишите функцию для заполнения массива случайными числами

Заполнение массива натуральными числами
Напишите программу, которая заполняет массив первыми N натуральными числами и выводит его. Входные данные Входная строка содержит...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru