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

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

Войти
Регистрация
Восстановить пароль
 
Адель1993
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 6
#1

задача на массив - C++

25.05.2012, 22:57. Просмотров 490. Ответов 11
Метки нет (Все метки)

Дан массив из n целых чисел. Для каждого числа, входящего в массив, найти сумму цифр этого числа. Верно ли утверждение, что максимальное число, входящее в этот массив, также имеет и максимальную сумму цифр?



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
#include <iostream>
using namespace std;
void vvodMAs(int x[], int n);
void  nomMax (int x[], int n, int &k, int &max);
void  cymmachisel (int x[], int n);
void  Maxcymmachisel (int x[], int n, int &f, int &max2);
void  print (int x[],int n, int f, int k);
int main ()
{
     int k,f,max,max2;
     const int n=7;
     int x[n];
     vvodMAs(x,n);
     nomMax (x,n,k,max);
     cymmachisel(x,n);
     Maxcymmachisel (x,n.f,max2);
     print (i,n,f,k);
     retern 0;
   
}
 
void vvodMAs(int x[], int n)
{
    cout <<"massiv"<< n << "chisel:\n";
    for (int i=0; i<n; i++)
    cin>>x[i];
}
 
void  nomMax (int x[], int n, int &k, int &max)
    int k, max = x[0];
    for (int i=1; i<n; i++)
    if (x[i]>max)
    {
    max=x[i];
    i=k;
    }
     /* нашел номер максимального элемента*/
}
 
void  cymmachisel (int x[], int n)
 
{
    int s;
    for ( i=0; i<n; i++)
    s=0;
   while (x[i]>0)
{
    s+=x[i]%10;
    x[i]/=10; /* нахожу сумму цифр каждого элемента массива*/
}
 
}
 
 
void  Maxcymmachisel (int x[], int n, int &f, int &max2)
 
{
    int f, max2 = x[0];
    for ( i=1; i<n; i++)
    if (x[i]>max2)
    {
    max2=x[i];
    i=f;
    } /* из получившегося массива состоящего из сумм цифр кажого числа нахожу номер максимального элемента*/
   
}
void  print (int x[],int n, int f, int k)
{
    for ( i=0; i<n; i++)
    if (a[f]=a[k]) /* элемент под номером f  совпадает с элемнентом под номером k*/
    cout<< "Berno";
    else
    cout << "neBerno";
}
помогите исправить задачу, все нужно делать только через подпрограммы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2012, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос задача на массив (C++):

задача записать в массив отрицательные элементы матрицы в массив и вывести их - C++
задача записать в массив отрицательные элементы матрицы в массив и вывести их #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Задача на массив и указатели.(массив из случайных чисел) - C++
Найти абсолютное значение,которое чаще остальных встречается в массиве. #include&lt;stdio.h&gt; #include&lt;time.h&gt; #include&lt;stdlib.h&gt; ...

Задача на массив - C++
Добрый день! Помогите с решением данного массива: Найти сумму положительных элементов линейного массива целых чисел. Размерность массива...

Задача на массив - C++
Ребят, срочно нужна ваша помощь. В понедельник зачет, а я в этом ничего не шарю, пожалуйста, выручайте. Если можете, напишите как это...

задача на массив - C++
Дан массив A размера N. Вывести его элементы в следующем порядке: A1, A2, AN, AN–1, A3, A4, AN–2, AN–3, … .

Массив Задача - C++
День добрый!! Помогите с задачей. Дан массив размера N. Найти номера двух ближайших по значению элементов из этого массива (то есть...

11
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
25.05.2012, 23:01 #2
Цитата Сообщение от Адель1993 Посмотреть сообщение
все нужно делать только через подпрограммы
что в вашем понимании подпрограмма?
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.05.2012, 23:10 #3
Цитата Сообщение от antoha398 Посмотреть сообщение
что в вашем понимании подпрограмма?
ну наверно функции!
0
Адель1993
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 6
25.05.2012, 23:11  [ТС] #4
да функции
0
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
25.05.2012, 23:31 #5
она и так ведь через функции сделана.
0
Адель1993
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 6
25.05.2012, 23:36  [ТС] #6
=) она не работает, ее нужно отладить, я написал как смог, а отладить не хватает знаний, вот выложил сюда чтобы кто знает помог довести до ума
0
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
25.05.2012, 23:49 #7
Цитата Сообщение от Адель1993 Посмотреть сообщение
я написал как смог, а отладить не хватает знаний
отлаживать то нечего, расставить скобки и убрать лишнее объявление)
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
#include <iostream>
using namespace std;
void vvodMAs(int x[], int n);
void  nomMax (int x[], int n, int &k, int &max);
void  cymmachisel (int x[], int n);
void  Maxcymmachisel (int x[], int n, int &f, int &max2);
void  print (int x[],int n, int f, int k);
int main ()
{
     int k,f,max,max2;
     const int n=7;
     int x[n];
     vvodMAs(x,n);
     nomMax (x,n,k,max);
     cymmachisel(x,n);
     Maxcymmachisel (x,n,f,max2);
cout << n << " " << f << " " <<k ;
     return 0;
   
}
 
void vvodMAs(int x[], int n)
{
    cout <<"massiv"<< n << "chisel:\n";
    for (int i=0; i<n; i++)
    cin>>x[i];
}
 
void  nomMax (int x[], int n, int &k, int &max)
{
    max=x[0];
    for (int i=1; i<n; i++){
    if (x[i]>max)
    {
    max=x[i];
    k=i;
    }
}
     /* нашел номер максимального элемента*/
}
 
void  cymmachisel (int x[], int n)
 
{
    int s;
    for (int i=0; i<n; i++){
    s=0;
   while (x[i]>0)
{
    s+=x[i]%10;
    x[i]/=10; /* нахожу сумму цифр каждого элемента массива*/
}
}
 
}
 
 
void  Maxcymmachisel (int x[], int n, int &f, int &max2)
 
{
    max2 = x[0];
    for (int i=1; i<n; i++){
    if (x[i]>max2)
    {
    max2=x[i];
    f=i;
}
    } /* из получившегося массива состоящего из сумм цифр кажого числа нахожу номер максимального элемента*/
   
}
void  print (int x[],int n, int f, int k)
{
    //for (int i=0; i<n; i++)
    if (x[f]==x[k]) /* элемент под номером f  совпадает с элемнентом под номером k*/
    cout<< "Berno";
    else
    cout << "neBerno";
}
в логику не вдавался, исправил только ошибки, которые не давали компилироваться.
если что-то не так считает спрашивайте конкретно.
1
Andrey.K
343 / 264 / 15
Регистрация: 14.11.2010
Сообщений: 482
25.05.2012, 23:58 #8
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
#include <iostream>
#include <conio.h>
#include <ctime>
#include <stdlib.h>
using namespace std;
const int n=10;
void Vvod(int*mas)
{
    srand((unsigned)time(NULL));
    for(int i=0;i<n;i++)
        mas[i]=rand()%100;
}
void Vivod(int* mas)
{
    for(int i=0;i<n;i++)
        cout<<mas[i]<<" ";
    cout<<endl;
}
void Summa(int* mas,int* bufmas)
{
    int buf[n];
    for(int i=0;i<n;i++)
        buf[i]=mas[i];
    for(int i=0;i<n;i++)
    {
        bufmas[i]=0;
        while(buf[i]>0)
        {
            bufmas[i]+=buf[i]%10;
            buf[i]/=10;
        }
    }
}
void MaxSummaCifr(int* mas,int* bufmas)
{
    int max=mas[0],pos=0,max1=bufmas[0],pos1=0;
    for(int i=0;i<n;i++)
    {
        if(mas[i]>=max)
        {
            max=mas[i];
            pos=i;
        }
        if(bufmas[i]>=max1)
        {
            max1=bufmas[i];
            pos1=i;
        }
    }
    if(max==mas[pos1]) cout<<"Da."<<endl;
    else cout<<"Net."<<endl;
}
int main()
{
    int mas[n];
    int bufmas[n];
    Vvod(mas);
    Vivod(mas);
    cout<<"Summa cifr: "<<endl;
    Summa(mas,bufmas);
    Vivod(bufmas);
    MaxSummaCifr(mas,bufmas);
    getch();
    return 0;
}
1
Адель1993
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 6
26.05.2012, 00:05  [ТС] #9
Функции

void vvodMAs(int x[], int n);

void nomMax (int x[], int n, int &k, int &max);

вполне приемлемы.

Но что ты делаешь дальше? А дальше в методе

void cymmachisel (int x[], int n)

{
int s;
for ( i=0; i<n; i++)
s=0;
while (x[i]>0)
{
s+=x[i]%10;
x[i]/=10; /* нахожу сумму цифр каждого элемента массива*/
}
}

ты просто зануляешь исходный массив x ! Зачем?

это вчера моя задача не прошла проверку =)))

int s, m;
for ( i=0; i<n; i++)

s=0;

m=x[i];
while (m>0)
{

s+=m%10;

m/=10;

}

вот так я решил исправить, правильно будет или нет?

Добавлено через 3 минуты
Andrey.K, благодарю, тебе чтобы это написать много времени понадобилось?
0
Andrey.K
343 / 264 / 15
Регистрация: 14.11.2010
Сообщений: 482
26.05.2012, 02:32 #10
10 мин, просто сначала думал твое переделать, но потом мне не поравилось у тебя слишком много лишнего.
1
MrGluck
Модератор
Эксперт CЭксперт С++
7497 / 4613 / 694
Регистрация: 29.11.2010
Сообщений: 12,626
26.05.2012, 02:45 #11
Andrey.K, позволь кину свои 5 копеек.
Если уж так хочется, чтобы все функции знали, что такое n, используй директиву #define. Глобальные переменные стоит использовать только при крайней необходимости.

Не по теме:

почему транслит?

0
Andrey.K
343 / 264 / 15
Регистрация: 14.11.2010
Сообщений: 482
26.05.2012, 06:33 #12
Цитата Сообщение от MrGluck Посмотреть сообщение
Andrey.K, позволь кину свои 5 копеек.
Если уж так хочется, чтобы все функции знали, что такое n, используй директиву #define. Глобальные переменные стоит использовать только при крайней необходимости.

Не по теме:

почему транслит?

#define это для С, и уже не используется почти, и константа здесь нормально сидит.
а транслит просто привычен в С++ для меня, я просто пишу на С# обычно, так там и не надо ничего дополнительного подключать или вызывать и компилятор не надо настраивать на рус.яз. А анг.яз не пишу ибо не очень силен в нем, т.к. учил немец.яз.
0
26.05.2012, 06:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 06:33
Привет! Вот еще темы с ответами:

Задача на массив - C++
Добрый вечер. В программировании я недавно - так что у меня есть проблемы даже с элементарными вещами. Столкнулся с такой задачей : ...

Массив Задача - C++
День добрый! Помогите с массивом решить задачу Дан массив размера N. Найти номера двух ближайших по значению элементов из этого массива...

Задача на массив - C++
Написать программу, которая проверяет, есть ли во введенном с клавиатуры массиве элементы с одинаковым значением.

задача на Массив - C++
Дан масив Скопировать все его элементы в другой массив такого же размера в обратном порядке расположения элементов


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

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

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