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

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

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

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

25.05.2012, 22:57. Просмотров 478. Ответов 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";
}
помогите исправить задачу, все нужно делать только через подпрограммы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2012, 22:57     задача на массив
Посмотрите здесь:

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

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

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

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

Задача на массив - C++
Даны два массива A и B одинакового размера N. Сформировать новый массив C того же размера, каждый элемент которого равен максимальному из...

Задача на Массив - C++
Задано числа а1,a2,...,a10 и массив Аx. Заменить нулями в массиве А те элементы с парной суммой индексов для которых есть такие, которые...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
25.05.2012, 23:01     задача на массив #2
Цитата Сообщение от Адель1993 Посмотреть сообщение
все нужно делать только через подпрограммы
что в вашем понимании подпрограмма?
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.05.2012, 23:10     задача на массив #3
Цитата Сообщение от antoha398 Посмотреть сообщение
что в вашем понимании подпрограмма?
ну наверно функции!
Адель1993
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 6
25.05.2012, 23:11  [ТС]     задача на массив #4
да функции
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
25.05.2012, 23:31     задача на массив #5
она и так ведь через функции сделана.
Адель1993
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 6
25.05.2012, 23:36  [ТС]     задача на массив #6
=) она не работает, ее нужно отладить, я написал как смог, а отладить не хватает знаний, вот выложил сюда чтобы кто знает помог довести до ума
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";
}
в логику не вдавался, исправил только ошибки, которые не давали компилироваться.
если что-то не так считает спрашивайте конкретно.
Andrey.K
342 / 263 / 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;
}
Адель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, благодарю, тебе чтобы это написать много времени понадобилось?
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
26.05.2012, 02:32     задача на массив #10
10 мин, просто сначала думал твое переделать, но потом мне не поравилось у тебя слишком много лишнего.
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
26.05.2012, 02:45     задача на массив #11
Andrey.K, позволь кину свои 5 копеек.
Если уж так хочется, чтобы все функции знали, что такое n, используй директиву #define. Глобальные переменные стоит использовать только при крайней необходимости.

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 06:33     задача на массив
Еще ссылки по теме:

задача на массив - C++
Array39. Дан массив размера N. Найти количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или...

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

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

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


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

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

Не по теме:

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

#define это для С, и уже не используется почти, и константа здесь нормально сидит.
а транслит просто привычен в С++ для меня, я просто пишу на С# обычно, так там и не надо ничего дополнительного подключать или вызывать и компилятор не надо настраивать на рус.яз. А анг.яз не пишу ибо не очень силен в нем, т.к. учил немец.яз.
Yandex
Объявления
26.05.2012, 06:33     задача на массив
Ответ Создать тему
Опции темы

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