Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
mark12552
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 23
#1

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

29.01.2014, 15:47. Просмотров 1004. Ответов 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
Ответы с готовыми решениями:

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

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

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

Дана матрица m. Построить массив с, элементы которого равны элементам матрицы m, сумма индексов которых кратна 3
Создал двумерную матрицу через указатели но не получается использовать ее еще...

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

10
GuGo1991
269 / 263 / 146
Регистрация: 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
571 / 375 / 215
Регистрация: 20.01.2013
Сообщений: 1,135
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_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
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
571 / 375 / 215
Регистрация: 20.01.2013
Сообщений: 1,135
29.01.2014, 16:40 #6
еще один вариант
если вы используете векторы то почему не использовать стандартные алгоритмы ?
0
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
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 / 72
Регистрация: 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_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
29.01.2014, 16:54 #10
Лучший ответ Сообщение было отмечено mark12552 как решение

Решение

твой переделанный
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

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

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

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


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

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

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