Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
1

Найти сумму и число тех элементов массива, которые попадают на заданный отрезок

07.04.2010, 15:25. Просмотров 1467. Ответов 19
Метки нет (Все метки)

Помогите написать программу по теме: одномерные массивы.
Найти сумму и число тех элементов заданного массива X1,X2, … ,Xn, которые попадают на заданный отрезок.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2010, 15:25
Ответы с готовыми решениями:

Найти сумму и число тех элементов заданного массива, которые попадают на заданный отрезок
Помогите с задачей. Программа на С++. Можно как-нибудь по-проще... Все данные должны вводиться с...

Найти сумму и число тех элементов заданного массива X1,X2, … ,Xn, которые попадают на заданный отрезок.
1. чНайти сумму и число тех элементов заданного массива X1,X2, … ,Xn, которые попадают на заданный...

Найти сумму и число тех элементов массива X1, X2,.,Xn, которые попадают на заданный отрезок
нужна программа в Pascal и блок схема. Помогите пожалуйста

Найти сумму и число тех элементов заданного массива, которые попадают на заданный отрезок
Прошу помочь решить задачу по программированию 1)Найти сумму и число тех элементов заданного...

19
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 354
07.04.2010, 15:47 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
#include <iostream>
#include <ctime>
 
int main() {
    setlocale(LC_ALL, "Russian");
    srand(time(0)); // Инициализируем генератор случайных чисел 
    const int n = 10; // Размер массива
    int a, b, arr[n], s = 0, k = 0;
    for (int i = 0; i < n; i++) {   // Заполняем массив случайными числами от 1 до 100
        arr[i] = rand() % 100 + 1;
        std::cout << arr[i] << ' '; // Выводим получившийся элемент массива
    };
    std::cout << std::endl;
    std::cin >> a >> b;
    if (a > b)
        a ^= b ^= a ^= b; // меняем местами переменные
    for (int i = a; i <= b; i++) {
        s += arr[i];
        k++;
    };
 
    std::cout << "Сумма = " << s << " Кол-во элементов = " << k << std::endl;
    std::system("pause");
    return 0;
}
0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.04.2010, 16:24  [ТС] 3
А что за библиотека #include <ctime>?
Эта прог-а на С++? Так сложно написана...((
0
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 354
07.04.2010, 16:52 4
Прекрасная, <ctime> нужна для функции time(), для инициализации генератора случайных чисел. А конкретнее, что вам сложно?
0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
08.04.2010, 12:52  [ТС] 5
Сама прог-а написана сложно. Попроще никак нельзя?) Я всё-таки ОЧЕНЬ начинающий программист) Я вообще не разберусь в даннной прог-е. Некоторые операторы первый раз встречаю...
0
2341 / 497 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
08.04.2010, 14:16 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение


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
#include <iostream>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian"); //включаем поддержку русского языка
    int a, b;
    int arr[]={1,4,5,6,3,8,9};//делаем массив чисел
    cout << "Введите номер элемент, с которого начинается отрезок: "<< endl;
    cin >> a ;
    if(a > sizeof(arr))
   {
        cout << "Введенный номер элемента, больше размера массива! "<< endl;
        cin.getch();
        return 0;
   }
    cout << "Введите номер элемент, на котором заканчивается отрезок: "<< endl;
    cin >> b;
    if(b > sizeof(arr))
   {
        cout << "Введенный номер элемента, больше размера массива! "<< endl;
        cin.getch();
        return 0;
   }
    if (a < b)
   {
        for (int i = a; i <= b; i++)
        {
             s += arr[i];
             k++;
        };
        cout << "Сумма = " << s << " Кол-во элементов = " << k << endl;
    }
    else
    {
          cout << "Номер элемента первого элемента отрезка больше номера последнего!" << endl;
    }
  
    cin.getch();
    return 0;
}
так понятнее?
0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
08.04.2010, 16:08  [ТС] 7
А зачем этот фрагмент
C++
1
2
3
cout << "Введенный номер элемента, больше размера массива! "<< endl;
        cin.getch();
        return 0;
?
0
Эксперт JavaЭксперт С++
8360 / 3581 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
08.04.2010, 16:15 8
Прекрасная, это завершение программы в том случае ,если b больше размерности массива
0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
08.04.2010, 17:02  [ТС] 9
А что значит sizeof ?
0
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 354
08.04.2010, 17:41 10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Прекрасная, в данном случае это размер массива в байтах, так что код не совсем корректен. Вернее тот код вообще не работает.

Patch, ваш код не компилится: не хватает объявлений переменных, у cin нет члена getch, только get и getline. Еще не инициализированы s и k. Размер массива измеряется голым sizeof...

Добавлено через 12 минут
Исправил код Patch:
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
#include <iostream>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian");   // Чтобы в консоли были русские буквы
    int a, b, arr[] = {1,4,5,6,3,8,9,9,41,2};
    int s = 0, k = 0;
 
    cout << "Введите номер элемента, с которого начинается отрезок: "<< endl;
    cin >> a;
    if(a > (sizeof(arr) / sizeof(int) - 1)) // sizeof возвращает размер переменной в байтах. 
    {
        cout << "Введенный номер элемента, больше размера массива! " << endl;
        system("pause"); // Ждем нажатия клавиши
        return 0;
    }
    cout << "Введите номер элемента, которым заканчивается отрезок: "<< endl;
    cin >> b;
    if(b > (sizeof(arr) / sizeof(int) - 1)) // sizeof возвращает размер переменной в байтах. 
    {
        cout << "Введенный номер элемента, больше размера массива! " << endl;
        system("pause"); // Ждем нажатия клавиши
        return 0;
    }
    if (a < b)
    {
        for (int i = a; i <= b; i++)
        {
             s += arr[i];
             k++;
        };
        cout << "Сумма = " << s << " Кол-во элементов = " << k << endl;
    }
    else
    {
        cout << "Номер элемента первого элемента отрезка больше номера последнего!" << endl;
    }
    system("pause"); // Ждем нажатия клавиши
    return 0;
}
1
2341 / 497 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
08.04.2010, 17:57 11
Цитата Сообщение от Demihalf Посмотреть сообщение
Patch, ваш код не компилится

ясное дело.
это была попытка на скорую руку написать что-то понятное автору.
ну, не знает мадемуазель Прекрасная команду system("pause")...

на самом деле, использовать можно getch() или cin.get() а у меня - такой вот гибрид.
0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
09.04.2010, 13:18  [ТС] 12
Так слово "sizeof" вообще обязательно? Можно без него?
0
Эксперт С++
5811 / 3462 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
09.04.2010, 13:39 13
Прекрасная, а чем оно Вас так смущает?
В принципе, в примере Patch'а можно без него обойтись, так как размер массива известен заранее.

Добавлено через 11 минут
А вообще выражение sizeof(arr) даст не число элементов массива, а его размер в байтах. Чтобы узнать число элементов массива, нужно использовать такое выражение:
C++
1
2
sizeof arr / sizeof *arr;
//Размер массива в байтах / размер одного элемента этого массива = число элементов массива
0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
09.04.2010, 13:45  [ТС] 14
Просто sizeof я вообще впервые встречаю, такого мы не проходили))
0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
10.04.2010, 19:18  [ТС] 15
Так можно написать просто arr без sizeof?

Добавлено через 2 минуты
И ещё вопрос))
А зачем в массиве указывать числа (arr[] = {1,4,5,6,3,8,9,9,41,2})? Их же вводят с клавиатуры?
Объясните, пожалуйста))
0
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 354
10.04.2010, 19:24 16
Прекрасная, просто arr без sizeof написать нельзя, можно написать длину массива просто числом.

Числа в инициализации (это так называется) массива можно не указывать, просто можно задать массив несколькими спообами. В моем первом примере он генерировался случайно, здесь инициализуруется программистом, а можно сделать заполнение пользователем в цикле.
0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
10.04.2010, 19:28  [ТС] 17
Ой)) а как исправить последнюю программу, чтобы числа вначале программы не указывались?)
0
Ignat
10.04.2010, 19:40
  #18

Не по теме:


Прекрасная:
Совет на будущее:
Не ленитесь скачайте какую-нибудь книгу по C++, и почитайте лучше,
не возможно знать предмет не проявляя собственной инициативы это не только C++ касается.

0
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
10.04.2010, 19:43  [ТС] 19
Эх... Спасибо за совет, но книг у меня много... Я же учусь только))
0
Эксперт С++
5811 / 3462 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
11.04.2010, 05:24 20
Цитата Сообщение от Прекрасная Посмотреть сообщение
Ой)) а как исправить последнюю программу, чтобы числа вначале программы не указывались?)
C++
1
2
3
4
const int size=10;
int array[size];
for(int i=0; i<size; ++i)
    std::cin >> array[i];
Теперь и sizeof не нужен: размер массива хранится в константе size.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2010, 05:24

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти сумму тех элементов массива, которые попадают в заданный сегмент
задан массив. Содержит t элементов. Найти сумму тех элементов массива, которые попадают в сегмент

Двумерные массивы.Найти сумму и произведение тех элементов, которые попадают в заданный интервал
Дана матрица А=4*6.найти сумму и произведение тех элементов матрицы,значения которых попадают в...

Найти сумму и число тех элементов массива Х, которые удовлетворяют требованию А<=Х<=B
Найти сумму и число тех элементов массива Х, которые удовлетворяют требованию А&lt;=Х&lt;=B P.S...

Найти сумму элементов массива, которые попадают в диапазон от a до b
Найти сумму элементов массива, которые попадают в диапазон от a до b( a и b заданы с клавиатуры) ....


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

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

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