Вот мой код. Суммарное число выводит слишком большее. С массивом mass еще проблемы есть.. Мне надо что бы он расширялся по мере заполнения)
#include <iostream>
using namespace std;
int main()
{
int K;
//int N;
cout << "Vvedite chislo K: ";
cin >> K;
int numb[100];
for (int a = 0; a <= 100; a++)
{
numb[a] = a;
}
//int *mass = new int[N];
int mass[100];
for (int j = 0; j <= 100; j++)
{
if (numb[j] % K == 0)
{
mass[j] = numb[j];
}
}
int sum = 0;
for (int i = 0; i<10; i++)
{
sum = sum + mass[i];
}
cout << "Summa = " << sum;
system("pause");
}
Другие языки программирования и технологии
Программа не работает как надо (С++). Задача: Вывести сумму всех элементов массива, кратных данному числу К.
Во-первых, не совсем понятно зачем нужен второй массив?
Во-вторых, что значит кратным? Кто тут делимое, а кто делитель?
Исходя из такой неопределённости решаю, что заданное число - делитель, элементы массива делимое, а массив динамический.
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
int main() {
srand(static_cast<unsigned>(time(NULL)));
setlocale(LC_CTYPE, "Russian_Russia.1251");
cout << " Введите размер массива: ";
size_t size;
cin >> size;
if (size) {
unsigned long * v = NULL;
if (v = new(nothrow) unsigned long[size]) {
streamsize w = 4;
for (size_t i = 0; i < size; ++i) {
v[i] = 1 + rand() % 100;
cout << setw(w) << v[i];
}
cout << "\n Введите число: ";
unsigned long num;
cin >> num;
if (num) {
unsigned long long sum = 0;
bool flag = false, exist = false;
for (size_t i = 0; i < size; ++i) {
if (v[i] < num) continue;
if (!flag) flag = true;
if (v[i] % num) continue;
if (!exist) exist = true;
sum += v[i];
}
if (flag) {
if (exist) cout << " Сумма = " << sum;
else cout << " Массив не содержит элементов, кратных заданному числу";
}
else cout << " Все элементы массива меньше заданного числа! ";
}
else cout << "\a Попытка деления на ноль! ";
delete[] v;
v = NULL;
}
else cout << "\a При выделении памяти возникла непредвиденная ошибка! ";
}
else cout << "\a Попытка создать массив нулевой длины! ";
cout << endl;
cin.sync();
cin.get();
return 0;
}
Во-вторых, что значит кратным? Кто тут делимое, а кто делитель?
Исходя из такой неопределённости решаю, что заданное число - делитель, элементы массива делимое, а массив динамический.
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
int main() {
srand(static_cast<unsigned>(time(NULL)));
setlocale(LC_CTYPE, "Russian_Russia.1251");
cout << " Введите размер массива: ";
size_t size;
cin >> size;
if (size) {
unsigned long * v = NULL;
if (v = new(nothrow) unsigned long[size]) {
streamsize w = 4;
for (size_t i = 0; i < size; ++i) {
v[i] = 1 + rand() % 100;
cout << setw(w) << v[i];
}
cout << "\n Введите число: ";
unsigned long num;
cin >> num;
if (num) {
unsigned long long sum = 0;
bool flag = false, exist = false;
for (size_t i = 0; i < size; ++i) {
if (v[i] < num) continue;
if (!flag) flag = true;
if (v[i] % num) continue;
if (!exist) exist = true;
sum += v[i];
}
if (flag) {
if (exist) cout << " Сумма = " << sum;
else cout << " Массив не содержит элементов, кратных заданному числу";
}
else cout << " Все элементы массива меньше заданного числа! ";
}
else cout << "\a Попытка деления на ноль! ";
delete[] v;
v = NULL;
}
else cout << "\a При выделении памяти возникла непредвиденная ошибка! ";
}
else cout << "\a Попытка создать массив нулевой длины! ";
cout << endl;
cin.sync();
cin.get();
return 0;
}
перепиши цикл где происходит проверка на кратность числа К:
int j=0;
for(int i=0; i<100; i++)
{
for(; j<100; j++)
{
if(numb[j]%K==0)
{
mass[i]=numb[j];
break;
}
}
}
вот так должно работать!
int j=0;
for(int i=0; i<100; i++)
{
for(; j<100; j++)
{
if(numb[j]%K==0)
{
mass[i]=numb[j];
break;
}
}
}
вот так должно работать!
Похожие вопросы
- Помогите с массивами! Найти и вывести на экран сумму нечётных элементов массива и количество отрицательных.
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
- С++. Элементы массива задаются с клавиатуры. Подсчитать количество элементов массива, являющихся трехзначным числом.
- задачка PAscal. найти сумму положительных элементов массива, расположенных до минимального элемента этого массива
- Дан массив размера N. Вывести все двузначные элементы массива и их номера. ПОМОГИТЕ pascal ХЕЛП
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Составьте программу, отыскивающую наибольший элемент массива A(N) из числа принадлежащим интервалу {min,(min+max\2))
- Вычислить сумму нечетных элементов в программа С++ .Через статический и динамический массив! Вот я сам написал проверьте
- Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
- Поиск наибольшего отрицательного элемента массива (c++) и его удаление, написал программу, где то косячек =/