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

Произведение всех отрицательных чисел,убрать ошибки

03.10.2015, 14:06. Показов 366. Ответов 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 <stdio.h>
#include <conio.h>
#include <locale.h>
 int main(){
 
    int N, i, k=0;
    float A[N],mid=1;
    setlocale(LC_ALL,"Russian");
    printf("\Программа произведения отрицательных чисел");
    printf("\nВведите длину массива=");
    scanf("%d", &N);
    printf("\Введите элементы массива=");
    for (i=0;i<N;i++){
            scanf("%f", &A[i]);
        }
    for (i=0;i<N;i++){  
        if (A[i]<=0){
                mid=mid*A[i];
                k++;
 
        }
    }
    if(k==0){
        printf("В массиве нет отрицательных чисел");
    }else{
        printf("Произведение отрицательных чисел=%.1f",mid);
    }
    
    getchar();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2015, 14:06
Ответы с готовыми решениями:

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

Массив: Вычислить сумму всех отрицательных чисел, их количество и сумму всех положительных чисел
Ввести одномерный массив из n элементов. Вычислить сумму всех отрицательных чисел, их количество и...

Найти произведение всех отрицательных элементов, что находятся в файле
Есть прога, не важно какая. Как можно найти произведение всех отрицательных елементов, что...

Найти произведение всех чисел, среднее арифметическое положительных чисел, квадрат суммы отрицательных чисел
Ввести z значений в переменную t. Найти произведение всех чисел, среднее арифметическое...

9
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
03.10.2015, 16:17 2
ssapers, а она компилируется? Сомневаюсь. Массивы так не описывают (N должна в этом случае быть константой).
0
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
03.10.2015, 16:38 3
Цитата Сообщение от Catstail Посмотреть сообщение
а она компилируется?
Да. Ибо пока N не инициализирован, значение этой области памяти может быть любым
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
03.10.2015, 16:52 4
Цитата Сообщение от Fonduee Посмотреть сообщение
значение этой области памяти может быть любым
- а размер?
0
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
03.10.2015, 17:08 5
Цитата Сообщение от Catstail Посмотреть сообщение
- а размер?
Как уже сказал, при декларации переменной выделяется область, что в ней стоит до инициализации есть UB и зависит уже от используемого компилятора. Значение может быть 0, может и 523113409475275873578874385. Это и будет размер массива. Компилятор максимум возмутится варнингом, но скомпилирует программу.
0
1 / 1 / 1
Регистрация: 18.09.2015
Сообщений: 26
03.10.2015, 17:12 6
Используй функции malloc, calloc, free. Или введи ограничение на максимальную длину массива.

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 <stdio.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
 
 int main(){
 
    int N, i, k = 0;
    float *A, mid = 1;
 
    setlocale(LC_ALL,"Russian");
 
    printf("\Программа произведения отрицательных чисел");
    printf("\nВведите длину массива = ");
    scanf("%d", &N);
 
    A = (float *)calloc(N, sizeof(float));
 
    printf("\Введите элементы массива = ");
 
    for (i = 0; i < N; i++)
        scanf("%f", &A[i]);
 
    for (i = 0; i < N; i++)
    {  
        if (A[i] <= 0)
        {
            mid *= A[i];
            k++;
        }
    }
 
    if(!k)
        printf("В массиве нет отрицательных чисел");
    else
        printf("Произведение отрицательных чисел = %.1f",mid);
    
    getchar();
    free(A);
}
0
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 13
03.10.2015, 18:19  [ТС] 7
Пользователь сам должен вводить длину массива и его значения.Но мне сказали,что нельзя так объявлять массив,как это сделал я,ведь она приводит к краху.Как объявить массив,чтобы это не вело к краху?
0
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
03.10.2015, 18:48 8
ssapers, Объявляй массив после ввода пользователем его размера.
0
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 13
03.10.2015, 19:57  [ТС] 9
Так?
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 <stdio.h>
#include <conio.h>
#include <locale.h>
 int main(){
 
    int N, i, k=0;
    setlocale(LC_ALL,"Russian");
    printf("\Программа произведения отрицательных чисел");
    printf("\nВведите длину массива=");
    scanf("%d", &N);
    float A[N],mid=1;
    printf("\Введите элементы массива=");
    for (i=0;i<N;i++){
            scanf("%f", &A[i]);
        }
    for (i=0;i<N;i++){  
        if (A[i]<=0){
                mid=mid*A[i];
                k++;
 
        }
    }
    if(k==0){
        printf("В массиве нет отрицательных чисел");
    }else{
        printf("Произведение отрицательных чисел=%.1f",mid);
    }
    
    getchar();
}
0
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
03.10.2015, 22:19 10
Цитата Сообщение от ssapers Посмотреть сообщение
Так?
Да. В таких вопросах можно и самому проверить, работает или нет.
0
03.10.2015, 22:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2015, 22:19
Помогаю со студенческими работами здесь

Найти произведение всех положительных чисел массива, и количество отрицательных чисел
Помогите, пожалуйста, с заданием по с++. Найти произведение всех положительных чисел массива {a...

Количество чисел, меньших заданного Х, и произведение всех отрицательных чисел, стоящих на нечетных местах.
Подсчитать количество чисел, меньших заданного Х, и произведение всех отрицательных чисел, стоящих...

Дано 5 чисел, вычислить произведение всех отрицательных чисел
Здравствуйте,совсем не могу сообразить с заданием. Жду помощи.

Подсчитать количество чисел, меньших заданного Х, и произведение всех отрицательных чисел, стоящих на нечетных местах
Подсчитать количество чисел, меньших заданного Х, и произведение всех отрицательных чисел, стоящих...


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

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