Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
3 / 3 / 2
Регистрация: 27.01.2010
Сообщений: 17
1

Найти среднее арифметическое тех элементов массива, запись которых начинается с цифры 5

27.01.2010, 08:52. Показов 2246. Ответов 7
Метки нет (Все метки)

добрый день всем!
не могу понять с чего начать (с++):
"В массиве из целых чисел найти среднее арифметическое тех чисел, запись которых начинается с цифры 5."
с масивом все понятно, но как определить первую цифру числа?
только начинаю изучать с++, и очень много непонятного
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2010, 08:52
Ответы с готовыми решениями:

Найти среднее арифметическое тех элементов массива, значения которых не превышают заданную величину А
В массиве x(n) найти среднее арифметическое тех элементов, значения которых не превышают заданную...

Среднее арифметическое тех элементов массива, индексы которых являются степенями двойки
Найдите среднее арифметическое тех элементов массива, индексы которых являются степенями двойки. ...

Вычислить среднее арифметическое тех элементов массива, значения которых не падает в интервал
Дан массив, состоящий из N элементов. Составить программу, которая вычислит среднее арифметическое...

Вычислить среднее арифметическое тех элементов массива значения которых не превышают заданного числа
Сформировать одномерный массив a(10) из случайных чисел, принадлежащих отрезку и вычислить среднее...

7
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 8
27.01.2010, 09:20 2
Может getchar() ?
0
3 / 3 / 2
Регистрация: 27.01.2010
Сообщений: 17
27.01.2010, 09:36  [ТС] 3
а можно поподробнее? и желательно с кодом и коментами
0
Эксперт С++
4717 / 2538 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
27.01.2010, 09:54 4
Цитата Сообщение от ureman Посмотреть сообщение
но как определить первую цифру числа?
Пишем маленькую функцию, в параметры которой передаем число, а она возвращает первую цифру этого числа. Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream> 
using namespace std;
int perv_cifr(int a)
{
    while(a>9)
    {
        a/=10;
    }
    return a;
}
 
int main()
{
    int e=465;
    cout<<perv_cifr(e)<<endl;
    return 0;
}
теперь осталось дело за малым.
1
536 / 352 / 47
Регистрация: 05.04.2009
Сообщений: 730
27.01.2010, 10:30 5
valeriikozlov,
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Пишем маленькую функцию
можно и немаленькую
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <math.h>
 
int main()
{
 
    size_t x = 543210; 
    
    std::cout << (size_t)( x / pow ( 10., (int)log10(x) ) ) << std::endl;
 
    
return EXIT_SUCCESS;
}
0
3 / 3 / 2
Регистрация: 27.01.2010
Сообщений: 17
27.01.2010, 11:42  [ТС] 6
спасибо всем ответившим, особенно valeriikozlov.
буду разбираться дальше. получилось что то типа
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
/*В массиве из целых чисел найти среднее 
арифметическое тех чисел, 
запись которых начинается с цифры 5.*/
 
#include<iostream> 
using namespace std;
int perv_cifr(int b)
{
        while(b>9)
        {
                b/=10;
        }
        return b;
}
 
int main()
{
    int n,i;
    int sumx=0;
    double N=0;
    cout<<"Input razmer massiva n: "; 
    cin >> n;
        
        
       int *arr = new int[n];
            for (i=0; i<n; i++)
        {
             //--------------------------------
            //здесь заполняем массив
            //--------------------------------
 
            cout<<"chislo massiva ";
            cin>>arr[i];
        }
        
         for(int i = 0; i < n; i++)
        //проверка на первую цифру числа ==5      
         if( perv_cifr(arr[i])==5 ) 
        {
            N++;
            sumx+= arr[i]; 
        }
         cout<<"srednee arifm chisel c 5 "<<sumx/N<<endl;
         cout<<"vsego chisel s 5 "<<N<<endl;
        delete [] arr;
        return 0;
}
с удовольствием приму коментарии и улучшения
0
Эксперт С++
7175 / 3234 / 79
Регистрация: 17.06.2009
Сообщений: 14,164
27.01.2010, 18:25 7
C++
1
std::cout << (size_t)( x / pow ( 10., (int)log10(x) ) ) << std::endl;
2mirso: а ты голову на отсечение даешь, что твоя функция правильно считает всегда ?
Все-таки вещественные представлены откругленно, можно и промахнуться чуть-чуть в вещественном,
а ответ будет не тот.

Добавлено через 2 минуты
Ошибка номер раз:
mirso.cpp:14: error: 'EXIT_SUCCESS' was not declared in this scope

Добавлено через 3 минуты
При x=0 или x<0 неправильно считает.
1
536 / 352 / 47
Регистрация: 05.04.2009
Сообщений: 730
27.01.2010, 21:00 8
odip,
Цитата Сообщение от odip Посмотреть сообщение
Все-таки вещественные
Ты прав!
Вместо pow, надо powl.
C++
1
return (size_t)( x / powl ( 10, (size_t)log10l(x) ) );
Такой вариант до ста миллионов проверял. Ни одной ошибки.

Цитата Сообщение от odip Посмотреть сообщение
При x=0 или x<0 неправильно считает.
Отрицательные есесна не считает!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<math.h>
 
//-------------------------------------------------------------------
size_t f1(size_t x)
{
    return (size_t)( x / powl ( 10, (size_t)log10l(x) ) );        
}
//=================================================================== 
int main()
{
    
    std::cout << f1(0)         << std::endl;
    std::cout << f1(1000)      << std::endl;
    std::cout << f1(999999999) << std::endl; 
    std::cout << f1(100000000) << std::endl;    
    std::cout << f1 (UINT_MAX) << std::endl;
 
    return 0;
}//==================================================================
0
1
9
1
4
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2010, 21:00

Дан массив, состоящий из N элементов. Составить программу, которая вычислит среднее арифметическое тех элементов массива, значения которых не падает в
Дан массив, состоящий из N элементов. Составить программу, которая вычислит среднее арифметическое...

Найти среднее арифметическое тех элементов введенной числовой последовательности, номера которых кратны 3
Пришёл из армии в универ и ужаснулся то чего от меня потребовали ,а именно на с++ ...

Найти среднее арифметическое тех элементов матрицы, значения которых не превышают заданную величину А
помогите решить задачу. В массиве X(n,M), найти среднее арифметическое тех элементов, значения...

Удалить из массива тех абонентов, телефон которых начинается с цифры 3
Сформировать массив записей, описывающих следующую таблицу:...


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

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

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