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

Cумма отрицательных элементов массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Absidian
 Аватар для Absidian
2 / 2 / 1
Регистрация: 07.01.2011
Сообщений: 19
10.02.2011, 18:41     Cумма отрицательных элементов массива #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
55
56
57
/*Дан массив из N элементов (вещественные числа). Вы-
числить: 1) сумму отрицательных элементов массива; 2) произ-
ведение элементов массива, расположенных между макси-
мальным и минимальным элементами. Упорядочить элементы
по возрастанию.*/
 
#include <iostream>
#include <Windows.h>
using namespace std;
int main ()
{
    int n=10;
    int i,j,x1,x2;
    float b,max=0, min=0,y1,y2;
    char str[256];
    float massiv[11];
    float SummaMinus, PrzElem;
    for (i=1;i<=n;i++)// ввод массива
    {
        AnsiToOem ("Введите элемент массива №",str);
        cout<<str<<i<<" ";
        cin>>massiv[i];
        cout<<endl;
    }
 
    for (i=1;i<=10;i++) // поиск мин и макс элемента х1 и х2 это номера позиций максим и миним в массиве
    {
        for (j=1;j<=10; j++)
        {
            if (massiv[j]>max) {max = massiv[j];x1=i;}
            if (massiv[j]<min) {min = massiv[j];x2=i;}
        }
    }
    y1 = massiv[x2+1];
    y2 = massiv[x1-1];
    PrzElem = y1*y2; //вычисление произведения между элементами
    cout<<" PROIZVEDENIE = "<<PrzElem<<endl;
 
    for (i=1; i<=n; i++) // сортировка массива по возрастанию
    {
        for (j=1;j<=n;j++)
        {
            if (massiv[j]>massiv[j+1])
            { b=massiv[j+1]; massiv[j+1]=massiv[j]; massiv[j]=b;}
        }
    }
 
    for (i=1;i<=10;i++) // вывод массива 
    {
        AnsiToOem (" Элемент №",str);
        cout<<str<<i<<endl;
    }
    system( "pause > nul" );
    
 
    return 0;
}
Вроде все правильно, а когда запускаешь вылетает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2011, 18:41     Cумма отрицательных элементов массива
Посмотрите здесь:

Cумма элементов массива с нечетными номерами C++
Cумма элементов между членами массива C++
Удалить первый из отрицательных элементов и минимальный из положительных элементов массива C++
Функция должна вычислять разницы между суммой положительных элементов массива и суммой модулей отрицательных элементов массива C++
Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.02.2011, 19:47     Cумма отрицательных элементов массива #2
Absidian, массивы нумеруются с 0
Vandris
 Аватар для Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 90
10.02.2011, 20:01     Cумма отрицательных элементов массива #3
немного прокомментировал вашу программу...

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
/*Дан массив из N элементов (вещественные числа). Вы-
числить: 1) сумму отрицательных элементов массива; 2) произ-
ведение элементов массива, расположенных между макси-
мальным и минимальным элементами. Упорядочить элементы
по возрастанию.*/
 
#include <iostream>
#include <Windows.h>
using namespace std;
int main ()
{
    int n=10;
    int i,j,x1,x2;
    float b,max=0, min=0,y1,y2;
    char str[256];
    float massiv[11];
    /*Такие переменные лучше инициализировать сразу*/
    float SummaMinus, PrzElem;
    /*В С/С++ массив начинается с 0-го индекса*/
    for (i=1; i<=n; i++) // ввод массива
    {
        AnsiToOem ("Введите элемент массива №",str);
        cout<<str<<i<<" ";
        cin>>massiv[i];
        cout<<endl;
    }
 
    for (i=1; i<=10; i++) // поиск мин и макс элемента х1 и х2 это номера позиций максим и миним в массиве
    {
        /* Зачем здесь вложенный цикл? И без него отработает хорошо */
        for (j=1; j<=10; j++)
        {
            if (massiv[j]>max)
            {
                max = massiv[j];
                x1=i;
            }
            if (massiv[j]<min)
            {
                min = massiv[j];
                x2=i;
            }
        }
    }
    y1 = massiv[x2+1];
    y2 = massiv[x1-1];
    /*Тут вычисляется не произведение _между_ элементами, а просто произведение 2х элементов, а именно
    следующего за минимальным и того, что перед максимальным*/
    PrzElem = y1*y2; //вычисление произведения между элементами
    cout<<" PROIZVEDENIE = "<<PrzElem<<endl;
 
    for (i=1; i<=n; i++) // сортировка массива по возрастанию
    {
        for (j=1; j<=n; j++)
        {
            if (massiv[j]>massiv[j+1])
            {
                b=massiv[j+1];
                massiv[j+1]=massiv[j];
                massiv[j]=b;
            }
        }
    }
    /* Не проверял, но по моему тут просто выведется 1 2 3 4 5 6 7 8 9 10*/
    for (i=1; i<=10; i++) // вывод массива
    {
        AnsiToOem (" Элемент №",str);
        cout<<str<<i<<endl;
    }
    /* И еще, сумму отрицательных элементов программа не считает*/
    system( "pause > nul" );
    return 0;
}
P.S. Если сразу нужен рабочий код, то это задание на форуме уже решали очень много раз, ищите
Absidian
 Аватар для Absidian
2 / 2 / 1
Регистрация: 07.01.2011
Сообщений: 19
11.02.2011, 16:48  [ТС]     Cумма отрицательных элементов массива #4
Рабочий код не нужен, это я сам себе голову ломаю на досуге. Разбираюсь дальше.
Absidian
 Аватар для Absidian
2 / 2 / 1
Регистрация: 07.01.2011
Сообщений: 19
27.02.2011, 08:56  [ТС]     Cумма отрицательных элементов массива #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
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
/*Дан массив из N элементов (вещественные числа). Вычислить: 
1) сумму отрицательных элементов массива; 
2) произведение элементов массива, расположенных между максимальным
и минимальным элементами. Упорядочить элементыпо возрастанию.*/
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <math.h>
using namespace std;
int main ()
{
    setlocale (LC_ALL, "rus");
    const int n = 10;
    int i,x1,x2,j;
    float arr_0[n+1];
    float Umn=1,SumMinus=0, max,min,b;
    
    cout<<"Absidianix!!! rules"<<endl;
    
    for (i=1;i<=n;i++)
    {   cout<<"Введите эл. № "<<i<<" ";; cin>>arr_0[i]; cout<<endl; } //ввод массива
 
    for (i=1;i<=n;i++) //сумма отрицательный элементов массива
    {
        if (arr_0[i]<0) SumMinus+=arr_0[i];
    }
    max=arr_0[1];
    min=arr_0[1];
    for (i=1;i<=n;i++) //поиск минимального и максимального элемента массива
    {
        if (arr_0[i]<min) {min=arr_0[i]; x1=i;}
        if (arr_0[i]>max) {max=arr_0[i]; x2=i;}
    }
    cout<<"Минимальный элемент равен "<<min<<" "<<"Его номер №"<<x1<<endl;
    cout<<"Максимальный элемент равен "<<max<<" "<<"Его номер №"<<x2<<endl;
    for (i=(x1+1);i<x2;i++)
    {
        Umn*=arr_0[i];
        cout<<"№"<<i<<" "<<arr_0[i]<<endl; //умножаемые элементы (для отладки)
    }
    cout<<"Произведение элементов массива равно "<<Umn<<endl;
    
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=n;j++)
        { 
            if (arr_0[j]>arr_0[j+1])
            { b=arr_0[j+1]; arr_0[j+1]=arr_0[j]; arr_0[j]=b;}
        }
        cout<<arr_0[i]<<endl;
    }
    
 
    
    system ("pause");
    return 0;
 
}
посмотрите. Когда минимальный элемент стоит первым то прога начинает тупить, что тут не так
Yandex
Объявления
27.02.2011, 08:56     Cумма отрицательных элементов массива
Ответ Создать тему
Опции темы

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