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

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

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

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

В одномерном массиве, состоящем из 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
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
Студворк — интернет-сервис помощи студентам
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
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 1
15.10.2014, 21:34
Емеля, давай, это будет первая ошибка, которую ты самостоятельно исправишь?
Прочти это http://cpp.com.ru/kr_cbook/ch3kr.html#p35
Прочёл? А затем посмотри на свой код и найди отличия.
А вообще, скачай/купи эту книгу и читай сначала
0
 Аватар для emilija
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
15.10.2014, 21:52
Kuzia domovenok, во первых я ОНА а не ОН
во вторых я ничего не понимаю в этих массивах.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 1
15.10.2014, 21:54
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Прочёл?
Прочёл?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
15.10.2014, 21:55
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
emilija, ты не слышал в школе слово "массив"?
Цитата Сообщение от emilija Посмотреть сообщение
Kuzia domovenok, конечно я знаю что это такое
Цитата Сообщение от emilija Посмотреть сообщение
я ничего не понимаю в этих массивах.
Господиисусе
0
 Аватар для emilija
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
15.10.2014, 21:58
Darkrduk, нельзя просто написать тут полностью программу если вы такие умные?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
15.10.2014, 22:04
emilija, лучше напиши условие задания, ибо я так и не понял какую из программ тебе нужно сделать.
0
 Аватар для emilija
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
15.10.2014, 22:10
Darkrduk,
Создать массив с 20 реальными числами.
1)Определить
*сумму негативных элементов.
*умножение элементов, расположенных между более крупными и более мелкими элементами.
2)Рассортировать элементы массива в порядке возрастания.
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
15.10.2014, 23:48
Цитата Сообщение от emilija Посмотреть сообщение
более крупными и более мелкими элементами
0 выглядит более крупнее чем 1

Кто составлял это усовие?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 1
15.10.2014, 23:50
Цитата Сообщение от Darkrduk Посмотреть сообщение
Кто составлял это усовие?
гугл транслейт.
0
 Аватар для emilija
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
15.10.2014, 23:56
Darkrduk, тоже самое задание написано в этой теме изначально между прочим

Добавлено через 53 секунды
1) Сумму отрицательных элементов массива;
2) Произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
16.10.2014, 00:55
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
 Аватар для emilija
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
16.10.2014, 01:12
Darkrduk, так и должно быть? он просит откомпилировать выделив это
Миниатюры
Вычислить сумму отрицательных элементов массива  
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
16.10.2014, 01:17
emilija, у тебя не подключен стандарт С99, поэтому ругается на цикл. Либо включи его, либо пробуй другим компилятором. Я выше указал ссылку с рабочим компилятором, там видно результат.
0
 Аватар для emilija
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
16.10.2014, 01:22
Цитата Сообщение от Darkrduk Посмотреть сообщение
у тебя не подключен стандарт С99
как его включить?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
16.10.2014, 01:26
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
 Аватар для emilija
1 / 1 / 2
Регистрация: 19.12.2013
Сообщений: 117
16.10.2014, 01:30
Darkrduk, большое спасибо за программу.
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
16.10.2014, 02:14
emilija, 15 строку:
C
1
int temp = array[j];
Замени на:
C
1
float temp = array[j];
0
Модератор
Эксперт С++
 Аватар для zss
13789 / 10981 / 6492
Регистрация: 18.12.2011
Сообщений: 29,281
17.10.2014, 12:14
На всякий случай, код приведенный к стандарту Си
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2014, 12:14

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru