Форум программистов, компьютерный форум CyberForum.ru

Определить максимальный и минимальный элементы среди положительных нечетных элементов целочисленного массива Х - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массивы. Только учусь. Выборка и сортировка http://www.cyberforum.ru/cpp-beginners/thread205693.html
Задание такое. Язык: C Define использовать нельзя!!! С клавиатуры вводятся слова разделенные пробелами. На экран выводятся в порядке убывания все слова, состоящие только из арабских цифр. Данные: N = 5 S = "ade5 543 3sa6 12 5796"
C++ Рекурсия: определить, является ли заданное натуральное число простым Написать функцию определения, является ли заданное натуральное число простым. (рекурсивно) http://www.cyberforum.ru/cpp-beginners/thread205687.html
Создать класс человек C++
Здраствуйте! Прошу вашей помощи Задание: Создать класс Man (человек), с полями: имя, возраст, пол и вес). Определить методы переназначения имени, изменения возраста и изменения веса. Создать производный класс Student, имеющий поля факультет, курс, группа. Определить методы изменения возраста, веса, перехода на следующий курс, перевода в другую группу. Заранее спасибо!:)
C++ На указатели : Поменять местами значения, адресуемые указателями. Указатели передвинуть на третий и четвёртый элементы массива, переставить адресу....
Создать вещественный массив из 20 элементов. Объявить два указателя. Одному присвоить адрес первого элемента массива, другому — второго. Поменять местами значения, адресуемые указателями. Указатели передвинуть на третий и четвёртый элементы массива, переставить адресуемые значения, перейти к следующей паре и т.д.
C++ Вычеслить суммы элементов главных диагоналей матриц http://www.cyberforum.ru/cpp-beginners/thread205670.html
Вычеслить суммы элементов главных диагоналей матриц A(N,N) B(M,M).M и N(<=20)
C++ строки Вычислить сколько в строке самых коротких слов подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9531 / 5524 / 932
Регистрация: 25.07.2009
Сообщений: 10,611
09.12.2010, 02:31
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
 
int * find_first(int * arr, int * next, int (*test_func)(int)){
    return ( arr >= next ) ? NULL : ( test_func(*arr) ) ? arr : find_first(++arr, next, test_func);
}
 
int is_zero(int val){
    return ( ! val );
}
 
int is_positive_odd(int val){
    return ( ( val > 0 ) && ( val & 1 ) );
}
 
int main(void){
    int * arr, * maxptr, * minptr, * foundptr;
    size_t size, i;
    
    srand(time(NULL));
    
    printf("Number of elements: ");
    if ( scanf("%u", &size) != 1 ){
        fprintf(stderr, "Input error!\n");
        exit(1);
    }
    
    if ( ( arr = (int*)malloc(sizeof(int) * size) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    
    printf("Array:\n");
    for ( i = 0; i < size; ++i )
        printf("%3d%c", ( arr[i] = rand() % 21 - 10 ), ( i < size - 1 ) ? ' ' : '\n');
    
    if ( ( minptr = find_first(arr, arr + size, is_positive_odd) ) == NULL ){
        fprintf(stderr, "Search error!\n");
        free(arr);
        exit(1);
    }
    maxptr = minptr;
    for ( foundptr = find_first(minptr + 1, arr + size, is_positive_odd); foundptr; 
        foundptr = find_first(foundptr + 1, arr + size, is_positive_odd) ){
            if ( *foundptr < *minptr )
                minptr = foundptr;
            if ( *foundptr > *maxptr )
                maxptr = foundptr;
    }
    
    printf("Min positive odd: %d\nMax positive odd: %d\n", *minptr, *maxptr);
    
    while ( foundptr = find_first(arr, arr + size, is_zero) ){
        if ( memmove(foundptr, foundptr + 1, sizeof(int) * ( size - (foundptr + 1 - arr)) ) == NULL ){
            perror("memmove");
            free(arr);
            exit(1);
        }
        if ( ( arr = (int*)realloc(arr, sizeof(int) * --size ) ) == NULL ){
            perror("realloc");
            free(arr);
            exit(1);
        }
    }
    printf("Without zero elements:\n");
    for( i = 0; i < size; ++i )
        printf("%3d%c", arr[i], ( i < size - 1 ) ? ' ' : '\n');
    
    free(arr);
    exit(0);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru