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

Вычислить сумму отрицательных элементов массива

11.01.2011, 17:54. Показов 4882. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, прошу помочь в написании программы)
Задание:

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) Сумму отрицательных элементов массива;
2) Произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.

Не получается сделать 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
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
84
85
86
87
88
89
90
91
92
93
94
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "string.h"
#include "stdlib.h"
#include "time.h"
 
// Функция генерации случайных чисел в диапазоне от range_min до range_max
int rnd( int range_min, int range_max )
{
    return (double)rand() / (RAND_MAX + 1) * (range_max - range_min) + range_min;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");     
    srand( (unsigned)time(NULL) );
 
    int  i, j, n, maxS, minS;
    double tmp, z, w, max, min, s[100];
 
    //=========================================================================
 
    puts("Введите количество элементов массива:");
    scanf(" %d", &n);
 
    puts("\nМассив s:"); // массив со случайными значениями
    for(i=0; i<n; i++) 
        {
            s[i]=rnd(-5, 5);    // диапазон от –5 до 5
            printf("%lf ", s[i]);
        }
 
    //=========================================================================
 
    puts("\n\nМассив по возрастанию:"); // метод "Пузырька"
    
    for(i = 0; i <= n-1; i++)
    {
        for(j = 0; j <= n-2-i; j++)
        {
            if( s[j]<s[j+1] )
            {
                tmp = s[j];
                s[j] = s[j+1];
                s[j+1] = tmp;   
            }
        }
        printf("%lf ", s[j]);
    }
 
    //=========================================================================
 
    puts("\n\nСумма отрицательных элементов массива:");
    
    for (z=0, i=0; i<n; i++)
        {
            if (s[i]<0) z+=s[i];
        }
    printf("%lf", z);
 
    //=========================================================================
 
    puts("\n\nПроизведение элементов между минимальным и максимальным значениями:");
    //Максимальный элемент массива
    for (max=s[0], i=1; i<n; i++)
        if (s[i]>max)
        {
            max=s[i];
            maxS=i;
        };
    
    //Минимальный элемент массива:
    for (min=s[0], i=1; i<n; i++)
        if (s[i]<min)
        {
            min=s[i];
            minS=i;
        };
 
    for (w=1, i=0; i<n; i++)
        {
            if (i>minS && i<maxS) w*=s[i];
        };
    printf("%lf", w);
 
    //=========================================================================
 
 
 
    printf("\n\nPress any key...");
    getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2011, 17:54
Ответы с готовыми решениями:

Вычислить сумму отрицательных элементов массива
Составить программу, формирующую одномерный массив, со- стоящий из N вещественных элементов....

Вычислить сумму отрицательных элементов массива
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1. Сумму...

Вычислить сумму отрицательных элементов массива
В одномерном массиве,состоящем из n вещественных элементов,вычислить: --Сумму отрицательных...

Вычислить сумму отрицательных элементов массива
Ребят,помогите пожалуйста исправить ошибки,никак не пойму Вот задание: Необходимо в одномерном...

38
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
15.10.2014, 21:31 21
Author24 — интернет-сервис помощи студентам
emilija, Давай я отгадаю какую:
"loop initial declarations are only allowed in C99 mode.
note: use option -std=c99 or -std=gnu99 to compile your code"
Откуда я узнал? Я маг, просто маг...
http://ideone.com/UQn7NX
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
15.10.2014, 21:34 22
Емеля, давай, это будет первая ошибка, которую ты самостоятельно исправишь?
Прочти это http://cpp.com.ru/kr_cbook/ch3kr.html#p35
Прочёл? А затем посмотри на свой код и найди отличия.
А вообще, скачай/купи эту книгу и читай сначала
0
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
15.10.2014, 21:52 23
Kuzia domovenok, во первых я ОНА а не ОН
во вторых я ничего не понимаю в этих массивах.
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
15.10.2014, 21:54 24
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Прочёл?
Прочёл?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
15.10.2014, 21:55 25
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
emilija, ты не слышал в школе слово "массив"?
Цитата Сообщение от emilija Посмотреть сообщение
Kuzia domovenok, конечно я знаю что это такое
Цитата Сообщение от emilija Посмотреть сообщение
я ничего не понимаю в этих массивах.
Господиисусе
0
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
15.10.2014, 21:58 26
Darkrduk, нельзя просто написать тут полностью программу если вы такие умные?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
15.10.2014, 22:04 27
emilija, лучше напиши условие задания, ибо я так и не понял какую из программ тебе нужно сделать.
0
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
15.10.2014, 22:10 28
Darkrduk,
Создать массив с 20 реальными числами.
1)Определить
*сумму негативных элементов.
*умножение элементов, расположенных между более крупными и более мелкими элементами.
2)Рассортировать элементы массива в порядке возрастания.
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
15.10.2014, 23:48 29
Цитата Сообщение от emilija Посмотреть сообщение
более крупными и более мелкими элементами
0 выглядит более крупнее чем 1

Кто составлял это усовие?
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
15.10.2014, 23:50 30
Цитата Сообщение от Darkrduk Посмотреть сообщение
Кто составлял это усовие?
гугл транслейт.
0
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
15.10.2014, 23:56 31
Darkrduk, тоже самое задание написано в этой теме изначально между прочим

Добавлено через 53 секунды
1) Сумму отрицательных элементов массива;
2) Произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
16.10.2014, 00:55 32
emilija, на 20 элементов, хочешь, измени значение с 20 на нужное. Школьная сортировка пузырьком.
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
84
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void bubble(float array[], int size) {
    int last = size - 1;
    
    for ( int i = 0; i < last; i++ ) {
        int limit = last - i;
        
        for ( int j = 0; j < limit; j++ ) {
            int next = j + 1;
            
            if ( array[j] > array[next] ) {
                int temp = array[j];
                
                array[j] = array[next];
                array[next] = temp;
            }
        }
    }
}
 
int main() {
    const int size = 20;
    float array[size];
    float sum = 0;
    float min, max;
    int indexMin = 0;
    int indexMax = 0;
    
    srand(time(NULL));
 
    for ( int i = 0; i < size; i++ ) {
        array[i] = rand() % 20001-10000;
        array[i] /= 100;
        printf("%0.2f ", array[i]);
        if ( array[i] < 0 ) {
            sum += array[i];
        }
    }
    printf("\nsum (elements < 0): %0.2f\n", sum);
    
    min = array[0];
    max = array[0];
    
    for ( int i = 0; i < size; i++ ) {
        if ( min > array[i] ) {
            min = array[i];
            indexMin = i;
        }
        if ( max < array[i] ) {
            max = array[i];
            indexMax = i;
        }
    }
    if ( indexMin > indexMax ) {
        int temp = indexMin;
        
        indexMin = indexMax;
        indexMax = temp;
    }
    
    printf("min=%0.2f max=%0.2f\n", min, max);
    
    if ( indexMax - indexMin > 0 ) {
        double multiple = 1.0;
    
        for ( int i = indexMin+1; i < indexMax; i++ ) {
            multiple *= array[i];
        }
        printf("multiple=%0.2f\n", multiple);
    } else {        
        printf("There aren't multiple elements\n");
    }
    
    bubble(array, size);
    
    for ( int i = 0; i < size; i++ ) {
        printf("%0.2f ", array[i]);
    }
    
    return 0;
}
http://ideone.com/WzG0oo
0
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
16.10.2014, 01:12 33
Darkrduk, так и должно быть? он просит откомпилировать выделив это
Миниатюры
Вычислить сумму отрицательных элементов массива  
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
16.10.2014, 01:17 34
emilija, у тебя не подключен стандарт С99, поэтому ругается на цикл. Либо включи его, либо пробуй другим компилятором. Я выше указал ссылку с рабочим компилятором, там видно результат.
0
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
16.10.2014, 01:22 35
Цитата Сообщение от Darkrduk Посмотреть сообщение
у тебя не подключен стандарт С99
как его включить?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
16.10.2014, 01:26 36
emilija, только заметил, у меня в 66 строке ненужный if, пробуй лучше этот код:
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void bubble(float array[], int size) {
    int last = size - 1;
    
    for ( int i = 0; i < last; i++ ) {
        int limit = last - i;
        
        for ( int j = 0; j < limit; j++ ) {
            int next = j + 1;
            
            if ( array[j] > array[next] ) {
                int temp = array[j];
                
                array[j] = array[next];
                array[next] = temp;
            }
        }
    }
}
 
void randomize(float array[], int size) {
    srand(time(NULL));
    
    for ( int i = 0; i < size; i++ ) {
        array[i] = rand() % 20001-10000;
        array[i] /= 100;
        printf("%0.2f ", array[i]);
    }
    printf("\n");
}
 
void negativeSum(float array[], int size) {
    float sum = 0;
    
    for ( int i = 0; i < size; i++ ) {
        if ( array[i] < 0 ) {
            sum += array[i];
        }
    }
    printf("sum (elements < 0): %0.2f\n", sum);
}
 
void mult(float array[], int indexMin, int indexMax){
    double multiple = 1.0;
 
    for ( int i = indexMin+1; i < indexMax; i++ ) {
        multiple *= array[i];
    }
    
    if ( multiple != 1.0 ) {
        printf("multiple=%0.2f\n", multiple);
    } else {        
        printf("There aren't multiple elements\n");
    }
}
 
void minMax(float array[], int size) {
    float min = array[0];
    float max = array[0];
    int indexMin = 0;
    int indexMax = 0;
    
    for ( int i = 0; i < size; i++ ) {
        if ( min > array[i] ) {
            min = array[i];
            indexMin = i;
        }
        if ( max < array[i] ) {
            max = array[i];
            indexMax = i;
        }
    }
    if ( indexMin > indexMax ) {
        int temp = indexMin;
        
        indexMin = indexMax;
        indexMax = temp;
    }
    printf("min=%0.2f max=%0.2f\n", min, max);
    
    mult(array, indexMin, indexMax);
}
 
int main() {
    const int size = 20;
    float array[size];
    
    randomize(array, size);
    negativeSum(array, size);
    minMax(array, size);
    bubble(array, size);
    
    for ( int i = 0; i < size; i++ ) {
        printf("%0.2f ", array[i]);
    }
    
    return 0;
}
http://ideone.com/qQceuB

Добавлено через 57 секунд
Цитата Сообщение от emilija Посмотреть сообщение
как его включить?
в настройках компилятора или в консоле прописать -std=c99
1
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
16.10.2014, 01:30 37
Darkrduk, большое спасибо за программу.
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
16.10.2014, 02:14 38
emilija, 15 строку:
C
1
int temp = array[j];
Замени на:
C
1
float temp = array[j];
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
17.10.2014, 12:14 39
На всякий случай, код приведенный к стандарту Си
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void bubble(float array[], int size) 
{
    float temp;
    int limit,next,i,j,last = size - 1;
    
    for ( i = 0; i < last; i++ ) {
        limit = last - i;
        
        for ( j = 0; j < limit; j++ ) {
            next = j + 1;
            
            if ( array[j] > array[next] ) {
                temp = array[j];
                
                array[j] = array[next];
                array[next] = temp;
            }
        }
    }
}
 
void randomize(float array[], int size) 
{
    int i;
    srand(time(NULL));
    
    for ( i = 0; i < size; i++ ) {
        array[i] = rand() % 20001-10000;
        array[i] /= 100;
        printf("%0.2f ", array[i]);
    }
    printf("\n");
}
 
void negativeSum(float array[], int size) 
{
    int i;
    float sum = 0;
    
    for ( i = 0; i < size; i++ ) {
        if ( array[i] < 0 ) {
            sum += array[i];
        }
    }
    printf("sum (elements < 0): %0.2f\n", sum);
}
 
void mult(float array[], int indexMin, int indexMax)
{
    int i;
    double multiple = 1.0;
 
    for (i = indexMin+1; i < indexMax; i++ ) {
        multiple *= array[i];
    }
    
    if ( multiple != 1.0 ) {
        printf("multiple=%0.2f\n", multiple);
    } else {        
        printf("There aren't multiple elements\n");
    }
}
 
void minMax(float array[], int size) {
    float min = array[0];
    float max = array[0];
    int indexMin = 0;
    int indexMax = 0;
    int i;
    for (i = 0; i < size; i++ ) {
        if ( min > array[i] ) {
            min = array[i];
            indexMin = i;
        }
        if ( max < array[i] ) {
            max = array[i];
            indexMax = i;
        }
    }
    if ( indexMin > indexMax ) {
        int temp = indexMin;
        
        indexMin = indexMax;
        indexMax = temp;
    }
    printf("min=%0.2f max=%0.2f\n", min, max);
    
    mult(array, indexMin, indexMax);
}
 
int main() {
    const int size = 20;
    float array[size];
    int i;
    randomize(array, size);
    negativeSum(array, size);
    minMax(array, size);
    bubble(array, size);
    
    for (i = 0; i < size; i++ ) {
        printf("%0.2f ", array[i]);
    }
    
    return 0;
}
1
17.10.2014, 12:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2014, 12:14
Помогаю со студенческими работами здесь

Вычислить сумму всех положительных элементов массива и произведение отрицательных элементов
Задание: Ввести с клавиатуры целое число K(от 6 до 15). Ввести с клавиатуры массив K элементов...

Вычислить сумму модулей элементов массива\произведение отрицательных элементов матрицы
1. В одномерном массиве, состоящем из N целых элементов, вычислите сумму модулей элементов...

В одномерном массиве, состоящем из N действительных элементов, вычислить: • сумму отрицательных элементов массива; • про
В одномерном массиве, состоящем из N действительных элементов, вычислить: • сумму отрицательных...

Вычислить сумму отрицательных элементов одномерного массива
Доброго Времени Суток Уважаемые ! Помогите составить код программы на СИ! В одномерном...


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

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