Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
The_Lion_King8
0 / 0 / 1
Регистрация: 30.11.2015
Сообщений: 34
1

Подсчитать количество элементов массива меньших 10

15.06.2016, 18:02. Просмотров 889. Ответов 2
Метки нет (Все метки)

Подсчитать количество элементов массива меньших 10. Максимальный элемент массива уменьшить в два раза. Найти минимальный элемент массива среди положительных элементов. Си
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2016, 18:02
Ответы с готовыми решениями:

Подсчитать в матрице количество элементов, больших a и меньших b
Даны два целых числа a и b.Составить программу, которая в линейной целочисленной матрице, состоящей...

Найти количество элементов массива, меньших S и расположенных в строках с нечетными номерами
Найти количество элементов, небольших S и расположенных в строках с нечетными номерами. Я вроде как...

Подсчитать количество элементов, превышающих среднее арифметическое элементов массива
Создать консольное приложение для решения следующей задачи: Двумерный массив, размером N*N...

Подсчитать количество элементов массива
Динамическая память. Одномерный массив. Массив заполняется произвольным количеством чисел. Как...

Подсчитать количество отрицательных элементов массива
Здравствуйте,киберфорумчане. Нужна помощь(код программы) с таким заданием: Подсчитать ...

2
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
15.06.2016, 19:04 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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 20
int main()
{
    int a[N], i, max, min, n = 0, flag = 0;
    srand(time(0));
    for(i = 0; i < N; ++i){
        printf("%d ", a[i] = rand() % 40 - 10);
        if( i == 0)
            max = a[0];
        if(a[i] > max)
            max = a[i];
        if(a[i] < 10)
            ++n;
        if(!flag && a[i] > 0){
            min = a[i];
            flag = 1;
        }
        if(flag && a[i] > 0 && a[i] < min)
            min = a[i];
    }
    printf("\nThe number of elements in the array of less than 10 is %d\n", n);
    printf("Maximum array element halved is %g\n", (double)max / 2);
    printf("The minimum element of the array among the positive elements is %d\n", min);
    return 0;
}
0
HighPredator
5697 / 2018 / 723
Регистрация: 10.12.2010
Сообщений: 5,794
Записей в блоге: 3
16.06.2016, 10:22 3
Лучший ответ Сообщение было отмечено The_Lion_King8 как решение

Решение

Упоротый Универсальный типо код:
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <stdio.h>
#include <stdlib.h>
 
/*
  Integer comparator / predicate for value less than 10
*/
int IsLessThan10(const void* a)
{
  if (*(int*)a < 10) return 1;
  else return 0;
}
 
/*
  Right-hand side comparator / predicate for greatness (a < b)
  (right argument is max to test against)
*/
int IsRightArgGreater(const void* a, const void* b)
{
  if (*(int*)a < *(int*)b) return 1;
  else return 0;
}
 
/*
  Right-hand side comparator for finding minimum from positive values
  (right argument is minimum to test against)
*/
int IsRightArgLessInPositiveRange(const void* a, const void* b)
{
  int left = *(int*)a;
  int right = *(int*)b;
 
  if ((left > 0) && ((right <= 0) || (left < right))) return 1;
  else return 0;
}
 
/*
  Returns the number of elements in the range [first,last) for which predicate is true.
*/
size_t count_if(const void* first, const void* last, const size_t elementSize,
    int (*predicate)(const void* elem))
{
  size_t count = 0;
 
  while (first != last)
  {
    if (predicate(first)) count++;
 
    first = (char*)first + elementSize;
  }
 
  return count;
}
 
/*
  Returns apointer to the element with the largest value in the range [first,last).
  Value is determines by a comparator function.
*/
void* max_element(const void* first, const void* last, const size_t elementSize,
    int (*comparator)(const void* a, const void* b))
{
  void* largest = (void*)first;
 
  if (first == last) return (void*)first;
 
  first = (char*)first + elementSize;
  while (first != last)
  {
    if (comparator(largest, first)) largest = (void*)first;
    first = (char*)first + elementSize;
  }
 
  return largest;
}
 
/*
  Returns a pointer to the element with the smallest value in the range [first,last).
  Value is determines by a comparator function.
*/
void* min_element(const void* first, const void* last, const size_t elementSize,
    int (*comparator)(const void* a, const void* b))
{
  void* smallest = (void*)first;
 
  if (first == last) return (void*)last;
 
  first = (char*)first + elementSize;
  while (first != last)
  {
    if (comparator(first, smallest)) smallest = (void*)first;
    first = (char*)first + elementSize;
  }
 
  return smallest;
}
 
 
/*
  Test function
*/
void TestIntegers(int a[], const size_t n)
{  
  int* maxPtr = NULL;
  int* minPositivePtr = NULL;
  
  size_t i;
  size_t lessThan10Count = 0;
 
  printf("\n--- Array: ---\n");
  for (i = 0; i < n; i++)
  {
    printf("%3d ", a[i]);
  }
  printf("\n");
 
  lessThan10Count = count_if(a, a + n, sizeof(*a), IsLessThan10);
  printf("Elements less than 10: %lu\n", lessThan10Count);
 
  maxPtr = max_element(a, a + n, sizeof(*a), IsRightArgGreater);
  printf("Max element: %d at index %ld\n", *maxPtr, maxPtr - a);
 
  *maxPtr = (*maxPtr) / 2;
  printf("Array with decreased max:\n");
  for (i = 0; i < n; i++)
  {
    printf("%3d ", a[i]);
  }
  printf("\n");
 
  minPositivePtr = min_element(a, a + n, sizeof(*a), IsRightArgLessInPositiveRange);
 
  if (*minPositivePtr <= 0) printf("There are no positive values in array\n");
  else printf("Min from positives: %d at index %ld\n", *minPositivePtr, minPositivePtr - a);
}
 
int main(void)
{
  int a[] = {-3, -2, -1, 0, 1, 2, 3, 12, 13, 14};
  int b[] = {-1, -2, -3, -4, -5, -6, 44, 55, 66};
 
  TestIntegers(a, sizeof(a) / sizeof(*a));
  TestIntegers(b, sizeof(b) / sizeof(*b));
 
  return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 10:22

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

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

Подсчитать количество элементов массива, равных нулю
. Подсчитать количество элементов массива, равных нулю. Вывести на дисплей полученное значение....


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

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

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