Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.11.2020
Сообщений: 86
1

Выход за границу массива

08.12.2020, 19:55. Показов 1236. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните пожалуйста где я вышел за границу массива
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
#include<iostream>
#include <clocale>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian");
    int arr[7];
    for (int i = 0; i < 7; i++)
        cin >> arr[7];
 
    float sum;
    sum = 0;
    for (float i = 0; i < 7; i++)
    {
        sum += arr[7];
    }
    float delenie;
    delenie = sum / 7;
    float geom = 0;
    for (float i = 0; i < 7; i++)
    {
        geom *= arr[7];
 
    }
    float geom1 = sqrt(geom);
    cout << "Сумма архива равна" << sum << endl << "Среднее арифметическое массива равно " << delenie << endl;
    cout << "Среднее геометрическое массива равно" << geom1 << endl;
    cin.get();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2020, 19:55
Ответы с готовыми решениями:

Произведение матриц, выход за границу массива
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; ...

Ошибка деструктора - В конструкторе происходит выход за границу массива
Доброго времени. #include &lt;iostream.h&gt; #include &lt;math.h&gt; class OKTAVE { public:...

Выход за границу int
Допустим у нас есть переменная, которая своими вычислениями вышла за границу int. Обычно при...

Выход за границу выделенной памяти
Какие операции (кроме записи) за пределами выделенной памяти приводят к UB?

9
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
08.12.2020, 20:15 2
Лучший ответ Сообщение было отмечено Dimaaasik как решение

Решение

Dimaaasik,

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
#include<iostream>
#include <clocale>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int arr[7];
    for (int i = 0; i < 7; i++)
        //cin >> arr[7];  // Вот здесь косяк!!!!!
        cin >> arr[i];
 
    float sum;
    sum = 0;
 
    for (float i = 0; i < 7; i++)
    {
        sum += arr[7];
    }
 
    float delenie;
    delenie = sum / 7;
    float geom = 0;
 
    for (float i = 0; i < 7; i++)
    {
        geom *= arr[7];
 
    }
 
    float geom1 = sqrt(geom);
 
    cout << "Сумма архива равна" << sum << endl << "Среднее арифметическое массива равно " << delenie << endl;
    cout << "Среднее геометрическое массива равно" << geom1 << endl;
 
    system("pause");
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 17.11.2020
Сообщений: 86
08.12.2020, 20:27  [ТС] 3
Спасибо ^^
На такой элементарщине запоролся(
0
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
08.12.2020, 20:30 4
Dimaaasik, в остальных циклах не забудь тоже изменить на arr[i]
1
0 / 0 / 0
Регистрация: 17.11.2020
Сообщений: 86
08.12.2020, 20:39  [ТС] 5
Вот так?
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
#include<iostream>
#include <clocale>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian");
    int arr[7];
    for (int i = 0; i < 7; i++)
        cin >> arr[6];
 
    float sum;
    sum = 0;
    for (float i = 0; i < 7; i++)
    {
        sum += arr[6];
    }
    float delenie;
    delenie = sum / 7;
    float geom = 0;
    for (float i = 0; i < 7; i++)
    {
        geom *= arr[6];
 
    }
    float geom1 = sqrt(geom);
    cout << "Сумма архива равна" << sum << endl << "Среднее арифметическое массива равно " << delenie << endl;
    cout << "Среднее геометрическое массива равно " << geom1 << endl;
    cin.get();
    return 0;
}
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,740
08.12.2020, 22:18 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
41
42
43
44
#include<iostream>
#include <clocale>
#include <cmath>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int arr[7];
    for (int i = 0; i < 7; i++)
        //cin >> arr[7];  // Вот здесь косяк!!!!!
        cin >> arr[i];
 
    float sum;
    sum = 0;
 
    for (int i = 0; i < 7; i++)// Вот здесь косяк  был!!!!!
    {
        //sum += arr[7];//// Вот здесь косяк !!!!
        sum += arr[i];
    }
 
   // float delenie;
   // delenie = sum / 7;
    //float geom = 0;//// Вот здесь косяк!!!!! Смысла нет умножать на 0 будет 0
    float geom = 1.0;
 
    for (int i = 0; i < 7; i++) // Вот здесь косяк  был!!!!!
    {
       // geom *= arr[7];//// Вот здесь косяк!!!!!
        geom *= arr[i];
    }
 
    //float geom1 = sqrt(geom);
 
    cout << "Сумма архива равна" << sum << endl << "Среднее арифметическое массива равно " << sum / 7 << endl;
    cout << "Среднее геометрическое массива равно" <<  sqrt(geom) << endl;
 
    system("pause");
    
    return 0;
}
Добавлено через 11 минут
Итог:
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 <clocale>
#include <cmath>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    float sum = 0.0 , geom = 1.0;
    int arr[7];
    for (int i = 0; i < 7; i++)
    {
        cin >> arr[i];
        sum += arr[i];
        geom *= arr[i];
    }  
 
    cout << "Сумма архива равна" << sum << endl << "Среднее арифметическое массива равно " << sum / 7 << endl;
    cout << "Среднее геометрическое массива равно" <<  sqrt(geom) << endl;
 
    system("pause");
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 17.11.2020
Сообщений: 86
08.12.2020, 23:12  [ТС] 7
Спасибо , понял в чём была ошибка )

P.s. по поводу медвежьей услуги не переживайте т.к. я в любом случае продолжу изучать с++
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.12.2020, 01:38 8
Цитата Сообщение от marat_miaki Посмотреть сообщение
cout << "Среднее геометрическое массива равно" <<  sqrt(geom) << endl;
это верно только для двух чисел. степень корня для среднего геометрического определяется количеством чисел. кроме того нужна проверка что все числа положительные.
1
0 / 0 / 0
Регистрация: 17.11.2020
Сообщений: 86
09.12.2020, 02:34  [ТС] 9
Дельное замечание , но этот код писался для колледжа поэтому оставлю как есть ^^
Да и в условии не было написано , что нужно проверять числа ))
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.12.2020, 03:20 10
Цитата Сообщение от Dimaaasik Посмотреть сообщение
этот код писался для колледжа поэтому оставлю как есть
это уже как считаете нужным. главное чтобы Вы понимали что код написан неправильно. для нахождения среднего геометрического семи чисел нужно извлекать не квадратный корень, а корень седьмой степени.
0
09.12.2020, 03:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2020, 03:20
Помогаю со студенческими работами здесь

Ошибка "Выход за границу вектора"
Помогите пожалуйста, не пойму в чем дело, вывод массива по лекции сделал а на нем ошибка выход за...

Как не выйти за границу массива
Здравствуйте, написал код, но я выхожу за границу массива, как можно это исправить? #include...

Как не выходить за границу массива
Здравствуйте, наисал код, но мне нужно чтобы он не выходил за границы массива, как это исправить?...

Выход за границу массива
Не могу понять почему выходит за границы индекса массива. using System; namespace...

Выход за границу массива
на строке if (A == num) выдает ошибку и пишет выход за границу массива. В чем ошибка? ...

Выход за границу массива
Допустим имеем list1 = сравниваю условия в цикле for num in list1: if list1 == list1 ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru