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

не правельно считает... - C++

Восстановить пароль Регистрация
 
milashka_92
0 / 0 / 0
Регистрация: 03.06.2010
Сообщений: 21
10.06.2010, 10:22     не правельно считает... #1
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
#include <iostream>
#include <ctime>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>
int A, B;
 
int rnd ()
{
    return rand()%101-50; //-50..50
}
 
bool range (int i)
{
     return ((A<i) && (i<B));
}
bool sort (int x, int y)
{
    return (abs(x)>abs(y));
}
 
int main()
{
    const int size=10;
    int MAS[size];
    // fill matrix
    srand(time(NULL));
    std::generate_n (MAS, size, rnd);
    //output matrix
    std::cout << "Start matrix:\n";
    std::copy (MAS, MAS+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    // number elements, range A and B
    std::cout << "Input A and B: ";
    std::cin >> A >> B;
    int count=std::count_if (MAS, MAS+size, range);
    //output count
    std::cout << "Number element: " << count;
    std::cout << std::endl;
    //find sum after max element
    int sum=std::accumulate (MAS+(std::max_element (MAS, MAS+size)-MAS), MAS+size, 0);
    //output sum
    std::cout << "Sum after max element: " << sum;
    std::cout << std::endl;
    // sort matrix
    std::sort (MAS, MAS+size, sort);
    // output finish matrix
    std::copy (MAS, MAS+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    system ("pause");
    return 0;
}
условие:
в одномерном массиве, состоящем из n вещественных элементов, вычислить: количество элементов массива, лежащих в диапазоне от А до В, сумму элементов массива, расположенных после максимального элемента и упорядочить элементы массива по убыванию модулей элементов.

Добавлено через 1 минуту
она считает почему-то не правельно...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
10.06.2010, 11:22     не правельно считает... #2
Узнаю код ((=
Да, он включает в сумму и максимальный элемент.
Вот, изменил:
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
#include <iostream>
#include <ctime>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>
int A, B;
 
int rnd ()
{
    return rand()%101-50; //-50..50
}
 
bool range (int i)
{
     return ((A<i) && (i<B));
}
bool sort (int x, int y)
{
    return (abs(x)>abs(y));
}
 
int main()
{
    const int size=10;
    int MAS[size];
    // fill matrix
    srand(time(NULL));
    std::generate_n (MAS, size, rnd);
    //output matrix
    std::cout << "Start matrix:\n";
    std::copy (MAS, MAS+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    // number elements, range A and B
    std::cout << "Input A and B: ";
    std::cin >> A >> B;
    int count=std::count_if (MAS, MAS+size, range);
    //output count
    std::cout << "Number element: " << count;
    std::cout << std::endl;
    //find sum after max element
    int index_max=std::max_element (MAS, MAS+size)-MAS;
    int sum=std::accumulate (MAS+index_max+1, MAS+size, 0);
    //output sum
    std::cout << "Sum after max element: " << sum;
    std::cout << std::endl;
    // sort matrix
    std::sort (MAS, MAS+size, sort);
    // output finish matrix
    std::copy (MAS, MAS+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    system ("pause");
    return 0;
}
milashka_92
0 / 0 / 0
Регистрация: 03.06.2010
Сообщений: 21
10.06.2010, 12:23  [ТС]     не правельно считает... #3
Цитата Сообщение от neske Посмотреть сообщение
Узнаю код ((=
Да, он включает в сумму и максимальный элемент.
Вот, изменил:
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
#include <iostream>
#include <ctime>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>
int A, B;
 
int rnd ()
{
    return rand()%101-50; //-50..50
}
 
bool range (int i)
{
     return ((A<i) && (i<B));
}
bool sort (int x, int y)
{
    return (abs(x)>abs(y));
}
 
int main()
{
    const int size=10;
    int MAS[size];
    // fill matrix
    srand(time(NULL));
    std::generate_n (MAS, size, rnd);
    //output matrix
    std::cout << "Start matrix:\n";
    std::copy (MAS, MAS+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    // number elements, range A and B
    std::cout << "Input A and B: ";
    std::cin >> A >> B;
    int count=std::count_if (MAS, MAS+size, range);
    //output count
    std::cout << "Number element: " << count;
    std::cout << std::endl;
    //find sum after max element
    int index_max=std::max_element (MAS, MAS+size)-MAS;
    int sum=std::accumulate (MAS+index_max+1, MAS+size, 0);
    //output sum
    std::cout << "Sum after max element: " << sum;
    std::cout << std::endl;
    // sort matrix
    std::sort (MAS, MAS+size, sort);
    // output finish matrix
    std::copy (MAS, MAS+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    system ("pause");
    return 0;
}
все-равно я ввожу 2 числа которые в строке начальной имеются но все равно почти всегда пишит что между ними 0 элементов, а сумма правильно стала считаться
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
10.06.2010, 15:00     не правельно считает... #4
По заданию, мы должны найти кол-во элементов массива, лежащих в диапозоне от А до В.
Все прекрастно работает.

А вы хотите найти кол-во элементов, которое лежит между двумя заданными ячейками. о_0.
Миниатюры
не правельно считает...  
milashka_92
0 / 0 / 0
Регистрация: 03.06.2010
Сообщений: 21
10.06.2010, 15:21  [ТС]     не правельно считает... #5
Цитата Сообщение от neske Посмотреть сообщение
По заданию, мы должны найти кол-во элементов массива, лежащих в диапозоне от А до В.
Все прекрастно работает.

А вы хотите найти кол-во элементов, которое лежит между двумя заданными ячейками. о_0.

спасибо все работает! пардон, не так поняла)

а можете блок-схему к ней набросать?

Добавлено через 11 минут
Цитата Сообщение от neske Посмотреть сообщение
По заданию, мы должны найти кол-во элементов массива, лежащих в диапозоне от А до В.
Все прекрастно работает.

А вы хотите найти кол-во элементов, которое лежит между двумя заданными ячейками. о_0.
а он разве не должен отрицательные считать?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
10.06.2010, 17:28     не правельно считает... #6
Он считает все.

Я на скрине задал промежуток: от 10 до 20.
Какие отрицательные тут?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2010, 20:17     не правельно считает...
Еще ссылки по теме:

C++ как правельно пишется команда инкрементации переменной?
данный код считает количество нечетных элементов в столбце , но он считает не для каждого столбца , как сделать , чтобы считал для каждого?подскажите C++
Подскажите как правельно разрешать данные задачи! C++

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

Или воспользуйтесь поиском по форуму:
milashka_92
0 / 0 / 0
Регистрация: 03.06.2010
Сообщений: 21
10.06.2010, 20:17  [ТС]     не правельно считает... #7
Цитата Сообщение от neske Посмотреть сообщение
Он считает все.

Я на скрине задал промежуток: от 10 до 20.
Какие отрицательные тут?
спасибо огромное!
Yandex
Объявления
10.06.2010, 20:17     не правельно считает...
Ответ Создать тему
Опции темы

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