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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mark12552
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 23
#1

Переписать из массива Y все элементы сумма цифр которых кратна 3-ем в массив Z - C++

29.01.2014, 15:47. Просмотров 482. Ответов 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
#include <iostream>
using namespace std;
bool kratn3 (int t)
{ int i,s;
for (i=s=0; i<t; i++)
{
s=s+(t%10);
t/=10;
}
if (s%3==0) return true;
else return false;
}
int main()
{
    int *Y,i,P,*Z;
    cout<<"P=";
    cin>>P;
    Y=new int [P];
    for (i=0;i<P;i++)
{
    cout<<"Y["<<i<<"]=";
    cin>>Y[i];
}
 
cout<<"Noviy massiv:"<<endl;
for (i=0; i<P; i++)
cout<<"Y["<<i<<"]="<<Y[i]<<endl;
 
Z=new int [P];
h=kratn3 (Y,P,Z);
cout<<"Massiv Z:"<<endl;
for (i=0; i<h; i++)
cout<<"Z["<<i<<"]="<<Z[i]<<endl;
return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2014, 15:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переписать из массива Y все элементы сумма цифр которых кратна 3-ем в массив Z (C++):

Найти все n-значные числа, сумма квадратов цифр которых кратна М - C++
Найти все n-значные числа, сумма квадратов цифр которых кратна М.

Найти все двузначные числа, сумма квадратов цифр которых кратна M - C++
Найт все двузначные числа , сумма квадратов цифр которых кратна M Вот у меня программ есть но она выводит сколько цифр, а мне надо...

Вывести все элементы матрицы, сумма индексов которых кратна 3 или 7, остальные символы заменить пробелами - C++
Дана матрица 10 на 10, заполненная символом *. Вывести все элементы, сумма индексов которых кратна 3 или 7, остальные символы заменить...

одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец массива in c++ - C++
одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец...

Вывести все числа массива, сумма цифр которых меньше 10 - C++
Вывести все числа массива, сумма цифр которых меньше 10 Не могу разобраться как.Помогите)))

(CИ)Из массива целых чисел X(N) удалить элементы, сумма цифр которых меньше 4. - C++
(СИ)Из массива целых чисел X(N) удалить элементы, сумма цифр которых меньше 4.

10
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
29.01.2014, 16:15 #2
Добавлено через 27 секунд
mark12552, какими данными заполняется массив?
0
mark12552
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 23
29.01.2014, 16:22  [ТС] #3
произвольными

Добавлено через 2 минуты
Я немного переделал, но все равно не работает:
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
#include <iostream>
using namespace std;
bool kratn3 (int t)
{ int i,s;
for (i=s=0; i<t; i++)
{
s=s+(t%10);
t/=10;
}
if (s%3==0) return true;
else return false;
}
int main()
{
    int *Y,i,P,*Z;
    cout<<"P=";
    cin>>P;
    Y=new int [P];
    for (i=0;i<P;i++)
{
    cout<<"Y["<<i<<"]=";
    cin>>Y[i];
}
 Z=new int;
h=0;
for (i=0; i<P; i++)
if (kratn3(Y[i]))
{Z[h]=Y[i];
h++;}
cout<<"Massiv Z:"<<endl;
for (i=0; i<h; i++)
cout<<"Z["<<i<<"]="<<Z[i]<<endl;
return 0;
0
egor2116
340 / 371 / 42
Регистрация: 20.01.2013
Сообщений: 1,130
29.01.2014, 16:26 #4
Как то так можно
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
#include <iostream>
 
namespace array
{
  void input(int * arr, size_t SIZE)
  {
   for(size_t i = 0; i < SIZE; ++i)
   {
     std::cout << "Input element : "; std::cin >> arr[i];
   }
  } 
  
  void output(int * arr, const size_t SIZE)
  {
   for(size_t i = 0; i < SIZE; ++i)
   {
     std::cout << arr[i] << " ";
   }
  }
  
  size_t count_if(int * arr, const size_t SIZE, size_t pred)
  {
     size_t count = 0;
     for(size_t i = 0; i < SIZE; ++i)
       if(arr[i] % pred == 0)
          ++count;
     return count;      
  }
  
  void copy_if(int * source, const size_t SIZE, int * dest, size_t pred)
  {
     size_t j = 0;
     for(size_t i = 0; i < SIZE; ++i)
       if(source[i] % pred == 0)
       {
         dest[j] = source[i];
         ++j;
       }
  }
  
  
}
int main()
{
   const size_t SIZE = 10;
   int source[SIZE];
   array::input(source, SIZE);
   
   const size_t destSIZE = array::count_if(source, SIZE, 3);
   int dest[destSIZE];
   array::copy_if(source, SIZE, dest, 3);
  
   array::output(dest, destSIZE);
   
    system("PAUSE");
    return 0;
}
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
29.01.2014, 16:38 #5
еще один вариант
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
 
void SetMas(int, int[]);
int Summ(int);
bool Multi(int);
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(0));
    cout << "Write mas size : ";
    int size;
    cin >> size;
    int* mas = new int[size];
    vector<int> mas2;
    SetMas(size, mas);
    for (int i = 0; i < size; i++)
        if (Multi(Summ(mas[i])))
            mas2.push_back(mas[i]);
    cout <<endl<< "New mas : ";
    for (int i = 0; i < mas2.size(); i++)
        cout << mas2[i] << " ";
    cout << endl;
    system("pause");
    return 0;
}
 
void SetMas(int size, int mas[])
{
    for (int i = 0; i < size; i++)
    {
        mas[i] = rand() % 100 + 1;
        cout << mas[i] << " ";
    }
}
 
int Summ(int k)
{
    int Summ = 0;
    while (k != 0)
    {
        Summ += k % 10;
        k /= 10;
    }
    return Summ;
}
 
bool Multi(int k)
{
    return (k % 3 == 0) ? true : false;
}
0
egor2116
340 / 371 / 42
Регистрация: 20.01.2013
Сообщений: 1,130
29.01.2014, 16:40 #6
еще один вариант
если вы используете векторы то почему не использовать стандартные алгоритмы ?
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
29.01.2014, 16:41 #7
Цитата Сообщение от egor2116 Посмотреть сообщение
если вы используете векторы то почему не использовать стандартные алгоритмы ?
какие именно ?
0
mark12552
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 23
29.01.2014, 16:45  [ТС] #8
Всем спасибо. А в моем варианте вообще ничего переделать ничего нельзя?
0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
29.01.2014, 16:53 #9
Проще надо, вы в дебри ушли: если сумма цифр числа делится без остатка на 3 то и само число делится и наоборот
C++
1
2
3
4
bool kratn3 (int t)
{ 
return (t%3==0);
}
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
29.01.2014, 16:54 #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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
 
using namespace std;
 
bool kratn3(int t)
{
    int  s = 0;
    while (t!=0)
    {
        s += (t % 10);
        t /= 10;
    }
    if (s % 3 == 0) return true;
    else return false;
}
 
int main()
{
    srand(time(0));
    int *Y, i, P, *Z;
    cout << "P=";
    cin >> P;
    Y = new int[P];
    for (i = 0; i < P; i++)
    {
        cout << "Y[" << i << "]=";
        cin >> Y[i];
    }
    Z = new int;
    int h = 0;
    for (i = 0; i < P; i++)
    if (kratn3(Y[i]))
    {
        Z[h] = Y[i];
        h++;
    }
    cout << "Massiv Z:" << endl;
    for (i = 0; i < h; i++)
        cout << "Z[" << i << "]=" << Z[i] << endl;
    cout << endl;
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от mustimur Посмотреть сообщение
Проще надо, вы в дебри ушли: если сумма цифр числа делится без остатка на 3 то и само число делится и наоборот
C++
1
2
3
4
bool kratn3 (int t)
{ 
return (t%3==0);
}
а ведь правда ))
1
mark12552
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 23
29.01.2014, 17:01  [ТС] #11
Fene4ka_, Cпасибо, выручили
0
29.01.2014, 17:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 17:01
Привет! Вот еще темы с ответами:

Переписать элементы массива a в массив в, удвоив все элементы - C++
переписать элементы массива А в массив В, удвоив все элементы, которые меньше первого элемента массива А, остальные переписать без...

Переписать из одного массива в другой все элементы, значения которых больше -1.8 и меньше 2.7 - C++
Сформировать вещественный массив A,элементами которого являются случайные числа из диапазона .Переслать из него в массив A2 все элементы ,...

Указать индексы и напечатать те элементы целочисленного массива X, сумма цифр которых равна заданному числу M - C++
Доброе утро всем)))) Помогите плиз с задачей. Нужно Указать индексы и напечатать те элементы целочисленного массива X, сумма цифр...

Найти все целые числа из промежутка от 300 до 600, у которых сумма делителей кратна 10 (Netbeans) - C++
Ребят, помогите пожалуйста написать программу для данной задачи: Найти все целые числа из промежутка от 300 до 600, у которых сумма...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru