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

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

Войти
Регистрация
Восстановить пароль
 
timurr
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 52
#1

Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 - C++

19.04.2011, 09:37. Просмотров 1002. Ответов 11
Метки нет (Все метки)

задание :

Общее задание - Даны вещественные массивы c[3][4], d[3][4].
В программе предусмотреть функции:
- ввода массивов с клавиатуры;
- расчета (все величина рассчитываются в одной функции)
- вывода исходных массивов и результатов поиска.
Определить количество нулевых элементов, количество элементов в интервале от 5 до 10[/CENTER]

Я написал программу и она работает:

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
#include <iostream>
#include <iomanip>
 
// размеры массива
#define I 3
#define J 4
 
using namespace::std;
 
// прототипы
void inputmas(float [I][J], char);
int raschet(float [I][J], float *, float *);
void printmas(float [I][J], char, float, float);
 
 
int main()
{
    setlocale(LC_ALL, "Russian"); // чтобы выводил русские буквы
    float c[I][J], d[I][J], nullc, nulld, elc, eld;
    inputmas (c,'c');
    inputmas (d,'d');
    raschet (c,&nullc,&elc);
    raschet (d,&nulld,&eld);
    printmas (c,'c', nullc, elc);
    printmas (d,'d', nulld, eld);
}
 
//ввод элементов массива
void inputmas ( float m[I][J], char im )
{
    int i, j;
    cout << "\n Введите элементы массива " << im << "\n";
    for (i = 0; i < I; i++)
        for (j = 0; j < J; j++)
        {
            cout << im << " [" << i << " ][ " << j << " ] = ";
            cin >> m[i][j];
        }
}
 
// подсчет количества
int raschet ( float m[I][J], float *null, float *el )
{
//количество нулевых элементов
    int n = 0, N = 0;
    for ( int i = 0; i < I; ++i )
        for ( int j = 0; j < J; ++j )
            if ( m[i][j] == 0.0 )
                n++;
 
//количество элементов от 5 до 10
    for ( int i = 0; i < I; ++i )
        for ( int j = 0; j < J; ++j )
         {
            float a = m[i][j];
            if ( 5 <= a && a <= 10 )
                N++;
         }
 
    *el = N;
    *null = n;
 
 
}
 
//вывод иходного массива и результата
void printmas( float x[I][J], char immas, float null, float el )
{
    int i,j;
    cout.setf( ios::showpoint | ios::fixed);
    cout << "\n\n Исходный массив " << immas << "\n\n";
    for (i = 0; i < I; i++)
        {
            for(j = 0; j < J; j++)
            {
                 cout.precision(2);// оставляет 2 знака после запятой
                 cout << setw(7) << x[i][j];
            }
            cout << endl;
        }
    cout << "\n\n Количество нулевых элементов = " << null;
    cout << "\n Количество элементов в интервале от 5 до 10 =" << el;
}
Но препод требует обойтись без переменных N и n в функции raschet, я попытался вывелись каракули.
Помогите плииииз )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2011, 09:37     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10
Посмотрите здесь:

C++ Определить количество нулевых элементов на главной диагонали матрицы
Удалить из матрицы те строки, для которых количество ненулевых элементов больше количества нулевых элементов в строке C++
Массив: С помощью рекурсии определить количество нулевых элементов. C++
Определить количество отрицательных элементов, количество элементов в интервале от 1 до 5 C++
Дан массив целых чисел. Определить количество четных элементов и количество элементов, оканчивающихся на цифру 5 C++
Определить количество положительных, отрицательных и нулевых элементов массива. C++
C++ Определить количество положительных, отрицательных и нулевых элементов массива.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
752 / 743 / 41
Регистрация: 06.07.2009
Сообщений: 2,963
Завершенные тесты: 1
19.04.2011, 09:43     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #2

Не по теме:

C
1
2
return (n);
return (N);
Это как вообще должно работать?



Вместо n++ пишешь (*null)++
Вместо N++ пишешь (*el)++
Натыкался на такую штуку, у ++ приоритет больше чем у *
timurr
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 52
19.04.2011, 09:46  [ТС]     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #3
Вместо n++ пишешь (*null)++
Вместо N++ пишешь (*el)++
Натыкался на такую штуку, у ++ приоритет больше чем у *
пробывал выводит хаотичный набор цифр
solar_wind
752 / 743 / 41
Регистрация: 06.07.2009
Сообщений: 2,963
Завершенные тесты: 1
19.04.2011, 09:48     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #4
timurr, обнулить в начале не забыл?
timurr
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 52
19.04.2011, 09:48  [ТС]     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #5
обнулял
solar_wind
752 / 743 / 41
Регистрация: 06.07.2009
Сообщений: 2,963
Завершенные тесты: 1
19.04.2011, 09:56     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #6
timurr, подожди ка, а зачем ты float используешь?
возможно по умолчанию указатель за int принимается
попробуй:
(*(float*)null)++

Добавлено через 1 минуту
просмотрел твою программу и не вижу, зачем тут float.....int бы поставил, логичнее было бы....
timurr
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 52
19.04.2011, 09:58  [ТС]     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #7
просмотрел твою программу и не вижу, зачем тут float.....int бы поставил, логичнее было бы....
просто препод требует

вместо float пробовал ставить int - не помогает
solar_wind
752 / 743 / 41
Регистрация: 06.07.2009
Сообщений: 2,963
Завершенные тесты: 1
19.04.2011, 10:01     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #8
и вообще операция ++ для float точно определена? никогда так не извращался.

Добавлено через 1 минуту
timurr, переделай под int и выстави код. Но с int (*null)++ должен корректно работать, проверено.
timurr
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 52
19.04.2011, 10:11  [ТС]     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #9
timurr, переделай под int и выстави код. Но с int (*null)++ должен корректно работать, проверено.
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
#include <iostream>
#include <iomanip>
 
// размеры массива
#define I 3
#define J 4
 
using namespace::std;
 
// прототипы
void inputmas(int [I][J], char);
int raschet(int [I][J], int*, int *);
void printmas(int [I][J], char, int, int);
 
 
int main()
{
    setlocale(LC_ALL, "Russian"); // чтобы выводил русские буквы
    int c[I][J], d[I][J], nullc, nulld, elc, eld;
    inputmas (c,'c');
    inputmas (d,'d');
    raschet (c,&nullc,&elc);
    raschet (d,&nulld,&eld);
    printmas (c,'c', nullc, elc);
    printmas (d,'d', nulld, eld);
}
 
//ввод элементов массива
void inputmas ( int m[I][J], char im )
{
    int i, j;
    cout << "\n Введите элементы массива " << im << "\n";
    for (i = 0; i < I; i++)
        for (j = 0; j < J; j++)
        {
            cout << im << " [" << i << " ][ " << j << " ] = ";
            cin >> m[i][j];
        }
}
 
// подсчет количества
int raschet ( int m[I][J], int *null, int *el )
{
//количество нулевых элементов
    int n = 0, N = 0;
    for ( int i = 0; i < I; ++i )
        for ( int j = 0; j < J; ++j )
            if ( m[i][j] == 0.0 )
                *null++;
 
//количество элементов от 5 до 10
    for ( int i = 0; i < I; ++i )
        for ( int j = 0; j < J; ++j )
         {
            int a = m[i][j];
            if ( 5 <= a && a <= 10 )
                *el++;
         }
 
 
 
}
 
//вывод иходного массива и результата
void printmas(int x[I][J], char immas, int null,int el )
{
    int i,j;
    cout.setf( ios::showpoint | ios::fixed);
    cout << "\n\n Исходный массив " << immas << "\n\n";
    for (i = 0; i < I; i++)
        {
            for(j = 0; j < J; j++)
            {
                 cout.precision(2);// оставляет 2 знака после запятой
                 cout << setw(7) << x[i][j];
            }
            cout << endl;
        }
    cout << "\n\n Количество нулевых элементов = " << null;
    cout << "\n Количество элементов в интервале от 5 до 10 =" << el;
}
выводит:
http://***********/F/s014.***********/...fe5b6.jpg.html
Svid
5 / 5 / 1
Регистрация: 02.03.2011
Сообщений: 40
19.04.2011, 10:29     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #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
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
#include <iostream>
#include <iomanip>
#define I 3
#define J 4
 
using namespace::std;
 
void inputmas(float [I][J], char);
void raschet(float [I][J], int *, int *);
void printmas(float [I][J], char, int, int); 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    float c[I][J], d[I][J];
    int null, el;
    inputmas (c,'c');
    inputmas (d,'d');
    raschet (c,&null,&el);    
    printmas (c,'c', null, el);
    raschet (d,&null,&el);
    printmas (d,'d', null, el);
}
 
void inputmas ( float m[I][J], char im )
{
    int i, j;
        cout << "\n Введите элементы массива " << im << "\n";
        for (i = 0; i < I; i++)
                for (j = 0; j < J; j++)
                {
                        cout << im << " [" << i << " ][ " << j << " ] = ";
                        cin >> m[i][j];
                }
}
 
void raschet ( float m[I][J], int *null, int *el )
{
*null=0;
*el=0;
        for ( int i = 0; i < I; i++ )
                for ( int j = 0; j < J; j++ )
                {
                        if ( m[i][j] == 0.0 )
                        {*null+=1;}
                        if ( 5 <= m[i][j] && m[i][j] <= 10 )
                            {*el+=1;} 
                }
}
 
void printmas( float x[I][J], char immas, int null, int el )
{
    int i,j;
    cout.setf( ios::showpoint | ios::fixed);
    cout << "\n\n Исходный массив " << immas << "\n\n";
    for (i = 0; i < I; i++)
        {
            for(j = 0; j < J; j++)
            {
                 cout.precision(2);// оставляет 2 знака после запятой
                 cout << setw(7) << x[i][j];
            }
            cout << endl;
        }
    cout << "\n\n Количество нулевых элементов = " << null;
    cout << "\n Количество элементов в интервале от 5 до 10 =" << el;
}
Добавлено через 10 минут
Да, и если все же препод требует сделать null и el floatО_о - то можно сделать float.
timurr
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 52
19.04.2011, 10:32  [ТС]     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #11
Svid, спасибо сработало
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2011, 11:15     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10
Еще ссылки по теме:

C++ Найти произведение ненулевых элементов и количество нулевых элементов
C++ В матрице случайных числе определить количество положительных, отрицательных, нулевых и максимальных элементов
C++ Определить количество положительных, отрицательных и нулевых элементов массива
Найти количество нулевых и количество отрицательных элементов массива C++
C++ Определить количество нулевых элементов в тех строках матрицы, которые не содержат положительных элементов

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

Или воспользуйтесь поиском по форуму:
vitaska
84 / 84 / 2
Регистрация: 04.02.2010
Сообщений: 162
19.04.2011, 11:15     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 #12
Вот так
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
#include <iostream>
#include <iomanip>
 
// размеры массива
const int ROW = 3;
const int COL = 4;
 
using namespace std;
 
// прототипы
void inputmas( float [][ COL ], char );
void raschet( float [][ COL ], int &, int & );
void printmas( float [][ COL ], char, int, int );
 
 
int main()
{
    setlocale( LC_ALL, "Russian" ); // чтобы выводил русские буквы
    float c[ ROW ][ COL ];
    float d[ ROW ][ COL ];
    
    int nullc = 0, nulld = 0, elc = 0, eld = 0;
    inputmas ( c,'c' );
    inputmas ( d,'d' );
    raschet ( c, nullc, elc );
    raschet ( d, nulld, eld );
    printmas ( c, 'c', nullc, elc );
    printmas ( d, 'd', nulld, eld );
}
 
//ввод элементов массива
void inputmas ( float m[][ COL ], char ch )
{
    cout << "\n Введите элементы массива " << ch << "\n";
    for ( int i = 0; i < ROW; i++)
        for ( int j = 0; j < COL; j++)
        {
            cout << ch << " [ " << i << " ][ " << j << " ] = ";
            cin >> m[ i ][ j ];
        }
}
 
// подсчет количества
void raschet ( float m[][ COL ], int & nulls, int & elems_5_10 )
{
    //количество нулевых элементов и количество элементов от 5 до 10
    for ( int i = 0; i < ROW; ++i ){
        for ( int j = 0; j < COL; ++j ){
            if ( m[i][j] == 0.0 )
                nulls++;
            else if ( m[ i ][ j ] >= 5.0 && m[ i ][ j ] <= 10.0 )
                elems_5_10++;
        }
    }
}
 
//вывод иходного массива и результата
void printmas( float x[][ COL ], char immas, int null, int el )
{
    cout.setf( ios::showpoint | ios::fixed );
    cout << "\n\n Исходный массив " << immas << "\n\n";
    for ( int i = 0; i < ROW; i++ ){
        for( int j = 0; j < COL; j++ ){
            cout.precision(2);// оставляет 2 знака после запятой
            cout << setw(7) << x[ i ][ j ];
        }
        cout << endl;
    }
    cout << "\n\n Количество нулевых элементов = " << null;
    cout << "\n Количество элементов в интервале от 5 до 10 = " << el;
    cout << endl << endl;
}
Yandex
Объявления
19.04.2011, 11:15     Определить количество нулевых элементов, количество элементов в интервале от 5 до 10
Ответ Создать тему
Опции темы

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