Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
#1

Найти количество элементов массива вне заданного интервала - C (СИ)

22.10.2014, 19:43. Просмотров 1022. Ответов 27
Метки нет (Все метки)

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
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
#include <locale.h>
 
#define B 5
 
int main()
{
     setlocale(LC_CTYPE,"Russian");
{
 
 
    float A[B];
    int i;
    int max;
    int maxIn=0;
 
    printf("Введем элементы массива\n");
    for(int i=0;i<5;i++)
    {
        printf("[%i]=",i);
        scanf("%d",&A[i]);
    }
    int count = 0;//переменная счетчика
    int x,y;
    printf ("Укажите интервал\n");
    printf ("a=",x,"\n");
scanf("%d",&x);
printf ("b=",y,"\n");
scanf("%d",&y);
float   a=A[x],b=A[y];//отрезок a,b
for(int i=0;i<5;i++)
{
     if (A[i] < a || A[i] > b)count++;//сам подсчет
 
}
 
printf("Kоличество элементов вне интервала: %d\n",count);
 
 
    for(int i=0;i<B;i++)
    {
    if ( i == 0 )
    max = A[0];
 
    if ( max <= A[i] )
 
     max = A[i];
     maxIn = i;
 
     }
     printf("Максимальный элемент: max=%d\n", A[maxIn]);
 
{
    for ( int i = maxIn+1; i < B; i++ )
    {
        sum += A[i];
    }
printf("sum=%f\n", sum);
}
return 0;
 
 
}
в этом коде необходимо было 1)найти количество элементов массива вне интервала
2)найти максимальный элемент и посчитать сумму элементов после него

как ни странно 1 задание будет работать если закоментировать все кроме него
ощущение логической ошибки появляется при выполнении 2 задания
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2014, 19:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти количество элементов массива вне заданного интервала (C (СИ)):

Сформировать вектор и найти сумму его элементов из заданного интервала
Помогите пожалуйста доделать задание! я сделала только первое (((((( Буду...

Найти количество элементов массива, кратных 4, и не больших заданного числа
Помогите написать программу на Си Найти количество элементов массива О...

Вычислить количество элементов массива, лежащих вне диапазона
В одномерном массиве, состоящем из N вещественных элементов, вычислить: 1)...

Вывести количество уникальных элементов заданного массива
Задано массив положительных целых чисел. Вывести количество уникальных...

Найти значение из заданного интервала, отсутствующее в массиве
Здравствуйте! Использование массивов в стиле языка C (нельзя использовать...

Подсчитать количество элементов массива, больших заданного значения (double)
Подсчитать количество элементов массива, больших заданного значения(double).

27
Move_Ahead
4 / 4 / 6
Регистрация: 21.10.2014
Сообщений: 22
22.10.2014, 19:54 #2
48 - 51 строки
C++
1
2
3
4
if ( max <= A[i] ) {
     max = A[i];
     maxIn = i; 
}
Используйте правильно фигурные скобки
0
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 20:00  [ТС] #3
ну скобки поставил sum определил все равно
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
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
#include <locale.h>
 
#define B 5
 
int main()
{
     setlocale(LC_CTYPE,"Russian");
{
 
 
    float A[B];
    int i;
    int max;
    int maxIn=0;
    int sum;
 
    printf("Введем элементы массива\n");
    for(int i=0;i<5;i++)
    {
        printf("[%i]=",i);
        scanf("%d",&A[i]);
    }
    int count = 0;//переменная счетчика
    int x,y;
    printf ("Укажите интервал\n");
    printf ("a=",x,"\n");
scanf("%d",&x);
printf ("b=",y,"\n");
scanf("%d",&y);
float   a=A[x],b=A[y];//отрезок a,b
for(int i=0;i<5;i++)
{
     if (A[i] < a || A[i] > b)count++;//сам подсчет
 
}
 
printf("Kоличество элементов вне интервала: %d\n",count);
 
 
    for(int i=0;i<B;i++)
    {
    if ( i == 0 )
    max = A[0];
 
    if ( max <= A[i] ){
 
     max = A[i];
     maxIn = i;}
 
    }
     printf("Максимальный элемент: max=%d\n", A[maxIn]);
 
{
    for ( int i = maxIn+1; i < B; i++ )
    {
        sum += A[i];
    }
printf("sum=%f\n", sum);
}
return 0;
}
новый лист
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 20:14 #4
Лучший ответ Сообщение было отмечено mital25 как решение

Решение

mital25, в вашем коде конечно черт ногу сломит

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
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
#include <locale.h>
 
#define B 5
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
 
 
 
        int A[B];
        int i;
        int max;
        int maxIn = 0;
        int sum=0;
        int count = 0;//переменная счетчика
        int x, y;
 
        printf("Введем элементы массива\n");
        for (int i = 0; i<5; i++)
        {
            printf("[%i]=", i);
            scanf("%i", &A[i]);
        }
        
        printf("Укажите интервал\n");
        printf("a=\n");
        scanf("%i", &x);
        printf("b=\n");
        scanf("%i", &y);
        for (i = 0; i<B; i++)
        {
            if (A[i] < x || A[i] > y)
                count++;//сам подсчет
 
        }
 
        printf("Kоличество элементов вне интервала: %i\n", count);
 
        max = A[0];
        for ( i = 0; i<B; i++)
        {
                
 
            if (max <= A[i]){
 
                max = A[i];
                maxIn = i;
            }
 
        }
        printf("Максимальный элемент: max=A[%i]=%i\n",maxIn, A[maxIn]);
 
        {
            for (i = maxIn + 1; i < B; i++)
            {
                sum += A[i];
            }
            printf("sum=%i\n", sum);
        }
        return 0;
    }
1
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 20:59  [ТС] #5
я только учусь)))

Добавлено через 20 минут
возникла одна маленькая проблема счетчик считает с ошибкой

Добавлено через 9 минут
Лююююди помогите я ни как не пойму почему счетчик постоянно ошибается
!!!
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 21:09 #6
mital25,то есть?
0
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 21:16  [ТС] #7
Цитата Сообщение от kiff20072008 Посмотреть сообщение
то есть?
программа запуская счетчик ошибается в подсчете у нее постоянно выходит ответ 2 либо 1

Добавлено через 24 секунды
хотя их там как минимум 3
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 21:17 #8
mital25, что вы вводите ?
0
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 21:25  [ТС] #9
сейчас продемонстрирую

Добавлено через 27 секунд
Цитата Сообщение от kiff20072008 Посмотреть сообщение
что вы вводите ?
сейчас продемонстрирую
0
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 21:29  [ТС] #10
Цитата Сообщение от kiff20072008 Посмотреть сообщение
что вы вводите ?
вот посмотрите картинку
0
Миниатюры
Найти количество элементов массива вне заданного интервала  
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 21:32 #11
mital25, так в чем проблема?
вне диапазона 0-1 только число 5
все верно
1
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 21:43  [ТС] #12
Цитата Сообщение от kiff20072008 Посмотреть сообщение
так в чем проблема?
вне диапазона 0-1 только число 5
все верно
вы меня не поняли там должно указаться колличество элементов вне диапазона
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 21:46 #13
mital25, ну так вы ввели 0-1
вне этого диапазона только элемент под номером 1

или вам что надо?
обьясняйтесь яснее
1
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 21:54  [ТС] #14
Цитата Сообщение от kiff20072008 Посмотреть сообщение
или вам что надо?
мне необходимо колличесто элементов т.е общее колличество элементов которые не вошли в интервал
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 22:11 #15
mital25, что за интервал?
вот вы вводите числа 0 1
в этот интервал не должны попадать элементы массива?

или вы руководствуетесь логикой что вы ввели 0-1 и элементы номер 2 3 4 5 не вошли в этот интервал?
1
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 22:19  [ТС] #16
ну в общем в задании под интервалом таится понятие отрезка [a,b] где а и b номера ячеек массива в которых и лежат элементы т .е нужно руководствоваться именно этой
Цитата Сообщение от kiff20072008 Посмотреть сообщение
номер 2 3 4 5 не вошли в этот интервал?
логикой))))

Добавлено через 44 секунды
я вас наверно уже изрядно достал
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 22:31 #17
mital25, ну странное задание очень
в чем тогда проблема вычесть из a b и это вычесть из колчества ячеек
если вы ввели 0 1
значит 5 - 1 = 4
0
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 22:35  [ТС] #18
Цитата Сообщение от kiff20072008 Посмотреть сообщение
ну странное задание очень
давайте я вам скину точное предложение как в задании..
и кстати если оставить только жто задание в программе она как ни странно считает правильно

Добавлено через 50 секунд
1) количество элементов массива, лежащих вне диапазона [ a, b];
2) сумму элементов массива, расположенных после максимального элемента по
модулю;
Цитата Сообщение от mital25 Посмотреть сообщение
странное задание
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
22.10.2014, 22:37 #19
mital25,ну так мой вариант правильный
я вывожу количество тех элементов которые не лежат в данном диапазоне
если ввести 0 1 как вы
то только элемент в котором лежит 5 не будет лежать в этом диапазоне
вы неправильно поняли задание
0
mital25
6 / 6 / 1
Регистрация: 11.10.2013
Сообщений: 86
22.10.2014, 22:45  [ТС] #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
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
#include <locale.h>
 
#define B 5
 
int main()
{
    setlocale(LC_CTYPE,"Russian");
    float A[B];
    int i;
    printf("Введем элементы массива\n");
    for(int i=0;i<5;i++)
    {
        printf("[%i]=",i);
        scanf("%d",&A[i]);
    }
    int count = 0;//переменная счетчика
    int x,y;
    printf ("Укажите интервал\n");
    printf ("a=",x,"\n");
scanf("%d",&x);
printf ("b=",y,"\n");
scanf("%d",&y);
float   a=A[x],b=A[y];//отрезок a,b
for(int i=0;i<5;i++)
        if (A[i] < a || A[i] > b)count++;//сам подсчет
printf("Kоличество элементов: %d\n",count);
 
 
    getchar();
return 0;
 
 
}
Добавлено через 1 минуту
Цитата Сообщение от kiff20072008 Посмотреть сообщение
если ввести 0 1
когда я ввожу 0 и 1 я подразумеваю номер ячейки)
0
22.10.2014, 22:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2014, 22:45
Привет! Вот еще темы с решениями:

Найти количество элементов, больших заданного числа
Нужно решение задачи на СИ: найти количество элементов. больших заданного...

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru