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

Считать количество элементов массива в диапазоне [а; b] - C++

Восстановить пароль Регистрация
 
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
22.03.2011, 02:58     Считать количество элементов массива в диапазоне [а; b] #1
функция kol както не так вроде работает, понять не могу,она должна считать количество елементов массива в диапозоне а b , помогите плз
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
79
80
#include <math.h>
#include <iostream.h>
 
int kol(double *a, const int n);
double sum(double *a, const int n);
int yporad(double *a, const int n);
 
int main()
{    
    int i,n;
    float A, B;
    cout<<"Vvedite kolichestvo elementov: "<<endl;
    cin>>n;
    double *a=new double [n];
//  double *M=new double [n];
    cout<<"\nVvedite elementi massiva: "<<endl;
    for(i=0; i<n; i++)
        cin>>a[i];
    cout << "vvedite A and B: ";
    cin >> A >> B;
    cout<<"kol-vo ot A do B: "; 
        cout<< kol(a, n) <<endl;
    cout<< "\n symma posle maximalnogo elementa = ";
        cout<<sum(a,n)<<endl;
    cout<< "\n yporado4eniy massiv: ";
        cout<< yporad(a,n);
    cout<<endl;
 
 
  
        return 0;
}
int kol(double *a, const int n)
{
    int i;
  int k = 0;
  float A, B;
 
  for ( i = 0; i < n; i++ ){
    if ( a[i] >= A && a[i] <= B )
        k++;}
 
  return k;
}
 
double sum(double *a, const int n)
{
    double max=a[0];
    double summa=0;
    int i,k;
    k=0;
    for (i=0; i<n; i++) 
        if (max<a[i]) 
        {
            max=a[i];
            k=i;
        }
    for (i=k+1; i<n; i++)
        summa+=a[i];
    return summa;
}
 
int yporad(double *a, int n)
{
    double q;
    for(int j=0;j<n;j++)
    for(int i=0;i<n-1;i++)
    {
        if (fabs(a[i])<fabs(a[i+1]))
        {
            q=a[i];
            a[i]=a[i+1];
            a[i+1]=q;
        }
    }
    for (int i=0; i<n; i++)
        cout<<a[i]<<" ";
    cout<<endl;
    return 1;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2011, 02:58     Считать количество элементов массива в диапазоне [а; b]
Посмотрите здесь:

Найти количество элементов массива, лежащих в диапазоне от А до В C++
C++ Найти количество элементов массива, лежащих в диапазоне от a до b
Вычислить количество элементов массива, лежащих в диапазоне от А до В C++
C++ Вычислить количество элементов массива, лежащих в диапазоне от А до В
C++ Вычислить количество элементов массива, лежащих в диапазоне от А до B
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
22.03.2011, 11:32     Считать количество элементов массива в диапазоне [а; b] #2
float A, B; в функции main() и float A, B; в функции kol(double *a, const int n) это разные переменные, поэтому функция kol и не будет искать в диапазоне, заданном в main(), что бы это исправить, необходимо переписать функцию kol в виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int kol(double *a, const int n, const float A, const float B)
{
    int i;
    int k = 0;
 
    for ( i = 0; i < n; i++ ){
        if ( a[ i ] >= A && a[ i ] <= B )
    k++;
    }
 
    return k;
}
 
а в main() пишем так:
 
int main()
{    
        .....
        cout<< kol(a, n, A, B) <<endl;
        .....
}
afiskon
 Аватар для afiskon
65 / 53 / 3
Регистрация: 06.09.2010
Сообщений: 254
22.03.2011, 16:19     Считать количество элементов массива в диапазоне [а; b] #3
C++
1
2
3
4
5
  float A, B;
 
  for ( i = 0; i < n; i++ ){
    if ( a[i] >= A && a[i] <= B )
                k++;}
A и B не определены, потому и не работает. Вообще-то компилятор должен в таком случае выдавать предупреждение.
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
22.03.2011, 23:54  [ТС]     Считать количество элементов массива в диапазоне [а; b] #4
vitaska, сделал как ты написал, компилятор выдает ошибку, типа функция kol не может содержать 4 параметра
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
22.03.2011, 23:57     Считать количество элементов массива в диапазоне [а; b] #5
Прототип функции тоже надо исправить.
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
27.03.2011, 20:22  [ТС]     Считать количество элементов массива в диапазоне [а; b] #6
и как тогда?))

Добавлено через 7 минут
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
79
80
81
82
83
84
85
86
#include <math.h>
#include <iostream.h>
 
int kol(double *a, const int n);
double sum(double *a, const int n);
int yporad(double *a, const int n);
 
int main()
{    
        int i,n;
        float A, B;
        cout<<"Vvedite kolichestvo elementov: "<<endl;
        cin>>n;
        double *a=new double [n];
//      double *M=new double [n];
    cout<<"\nVvedite elementi massiva: "<<endl;
        for(i=0; i<n; i++)
               cin>>a[i];
    
         
             kol(a, n);
        cout<< "\n symma posle maximalnogo elementa = ";
                cout<<sum(a,n)<<endl;
        cout<< "\n yporado4eniy massiv: ";
                cout<< yporad(a,n);
        cout<<endl;
 
 
  
                return 0;
}
int kol(double *a, const int n)
{
    float A, B;
    cout << "vvedite A and B: ";
        cin >> A >> B;
 
 
        int i;
  int k = 0;
  
 
  for ( i = 0; i < n; i++ ){
    if ( a[i] >= A && a[i] <= B )
                k++;}
  cout<<"kol-vo ot A do B: "<<k;
 
  return k;
}
 
double sum(double *a, const int n)
{
        double max=a[0];
        double summa=0;
        int i,k;
        k=0;
        for (i=0; i<n; i++)     
                if (max<a[i]) 
                {
                        max=a[i];
                        k=i;
                }
        for (i=k+1; i<n; i++)
                summa+=a[i];
        return summa;
}
 
int yporad(double *a, int n)
{
        double q;
        for(int j=0;j<n;j++)
        for(int i=0;i<n-1;i++)
        {
                if (fabs(a[i])<fabs(a[i+1]))
                {
                        q=a[i];
                        a[i]=a[i+1];
                        a[i+1]=q;
                }
        }
        for (int i=0; i<n; i++)
                cout<<a[i]<<" ";
        cout<<endl;
        return yporad(a,n);
        
}

сделал вот так, всё работает))
тока нолик последний на экран выводит, думаю ничё страшного
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
27.03.2011, 21:33     Считать количество элементов массива в диапазоне [а; b] #7
Цитата Сообщение от Iliabobr Посмотреть сообщение
сделал вот так, всё работает))
Зачем функция сортировки у вас возвращает какое-либо значение, она должна просто отсортировать массив, соответственно ничего не возвращать и иметь тип void.
А вот это / cout<< yporad(a,n); и return yporad(a,n); / вообще бред, как она у вас отработала (бесконечная рекурсия)?
Нужно вот так, саму сортировку не переделывал, ибо не в курсе как вам нужно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void yporad(double *a, const int n);//прототип функции сортировки
...
//реализация сортировки массива
void yporad(double *a, int n)
{
    double q;
    for(int j=0;j<n;j++)
        for(int i=0;i<n-1;i++)
        {
            if (fabs(a[i])<fabs(a[i+1]))
            {
                q=a[i];
                a[i]=a[i+1];
                a[i+1]=q;
            }
        }
        for (int i=0; i<n; i++)
            cout<<a[i]<<" ";
        cout<<endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2011, 23:19     Считать количество элементов массива в диапазоне [а; b]
Еще ссылки по теме:

Вычислить количество элементов массива, лежащих в диапазоне от A до B C++
Вычислить количество элементов массива, лежащих в диапазоне от А до В C++
Найти количество элементов массива, лежащих в заданном диапазоне C++

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

Или воспользуйтесь поиском по форуму:
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
27.03.2011, 23:19  [ТС]     Считать количество элементов массива в диапазоне [а; b] #8
ето просто старая версия проги, у меня щас там написано ретурн 0 ))
но все равно спс большое!
Yandex
Объявления
27.03.2011, 23:19     Считать количество элементов массива в диапазоне [а; b]
Ответ Создать тему
Опции темы

Текущее время: 16:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru