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

Функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Цикл... http://www.cyberforum.ru/cpp-beginners/thread76225.html
Задания такие: 1. Определить количество удвоенных нечетных чисел среди данных 150 целых чисел. 2. Перевести число из десятичной системы счисления в восьмеричную. плохо понел тему циклов видимо, а зачёт нужен( Borland C++
C++ передача массива в функциях есть 3 функции void gamebegin(int Mas) { Mas=100; } void DrawDiagram(HWND hWnd, HDC hdc,int Mas) { \\тут код http://www.cyberforum.ru/cpp-beginners/thread76221.html
Получить новое натуральное число, заменив все четные цифры исходного числом К C++
Все доброго времени суток. Кому не тяжело посмотрите мою задачу. Тема: Замена цифр в числе. Основные требования к курсовой: Операторы цикла в языке С++. Разработка программы в среде С++ для решения задачи: Дано натуральное число N которое вводиться с клавиатуры. Получить новое натурально число, заменив все четные цифры исходного числом К( К- вводиться с клавиатуры) Массив не заводить....
C++ Проверка процесса
Мне нужен исходный код проверяющий работоспособность процесса , не как обычно из диспечера задач по имени а по пути фаила запуска например /us/rs.exe /uy/rs.exe нужно что бы программа отслеживала процесс по его пути и как бы давала значение 1 в переменную для последущего использования void main()
C++ Массив перестановка. http://www.cyberforum.ru/cpp-beginners/thread76180.html
Переставить первые три и последние три элементы местами, сохраняя их следование.
C++ Средний доход семьи Доброго времени суток! Нужна прога, которая выполняла бы следующее: Вводится количество членов семьи вводится доход каждого члена семьи Выводится средний доход на каждого члена семьи. Единственное ,что нао чтоб прога использовала цикл while подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
18.12.2009, 19:03     Функции
Цитата Сообщение от ***Иришка*** Посмотреть сообщение
Дан строковый массив. Размер и элементы массива вводятся пользователем. Упорядочить массив тремя способами: в порядке убывания длины строк; в обратном алфавитном порядке элементов; в порядке убывания количества цифр среди символов элементов. В функцию сортировки должен передаваться указатель на функцию сравнения двух элементов. Способ сортировки выбирает пользователь.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <windows.h>
 
/* сравнение строк */
 
int byLenDesc(const void *a, const void *b){
    return strlen(*(char**)b) - strlen(*(char**)a);
}
 
int byAlphaDesc(const void *a, const void *b){
    return strcmp(*(char**)b, *(char**)a);
}
 
int byNumDigitsDesc(const void *a, const void *b){
    char *str_a, *str_b;
    size_t count_a, count_b;
    
    for ( str_a = *(char**)a, count_a = 0; *str_a; str_a++ )
        if ( isdigit(*str_a) )
            count_a++;
    for ( str_b = *(char**)b, count_b = 0; *str_b; str_b++ )
        if ( isdigit(*str_b) )
            count_b++;
        
    if ( count_a && count_b )
        return count_b - count_a;
    else if ( count_a )
        return -1;
    else 
        return count_b;
}
 
int main(void){
    char **arr, *p, buf[BUFSIZ];
    size_t arr_size, i;
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    printf("Количество строк: ");
    scanf("%d%*c", &arr_size);
    if ( !arr_size ){
        fprintf(stderr, "Неверный параметр!\n");
        exit(1);
    }
    
    if ( ( arr = (char**)calloc(arr_size, sizeof(char*)) ) == NULL ){
        perror("Ошибка памяти!\n");
        exit(1);
    }
    
    for ( i = 0; i < arr_size; ++i ){
        printf("Строка #%d: ", i + 1);
        if ( ! fgets(buf, BUFSIZ, stdin) ){
            perror("Ошибка чтения строки!\n");
            exit(1);
        }
        if ( p = strrchr(buf, '\n') )
            *p = '\0';
        if ( ! *buf ){
            fprintf(stderr, "Ошибка - пустая строка!\n");
            exit(1);
        }
        if ( ( arr[i] = strdup(buf) ) == NULL ){
            perror("Ошибка памяти!\n");
            exit(1);
        }
    }
    
    printf("\n\nВ порядке убывания длины строк:\n");
    qsort((void*)arr, arr_size, sizeof(char*), byLenDesc);
    for ( i = 0; i < arr_size; ++i )
        printf("%s\n", arr[i]);
    
    printf("\n\nВ обратном алфавитном порядке элементов:\n");
    qsort((void*)arr, arr_size, sizeof(char*), byAlphaDesc);
    for ( i = 0; i < arr_size; ++i )
        printf("%s\n", arr[i]);
    
    printf("\n\nВ порядке убывания количества цифр среди символов элементов:\n");
    qsort((void*)arr, arr_size, sizeof(char*), byNumDigitsDesc);
    for ( i = 0; i < arr_size; ++i )
        printf("%s\n", arr[i]);
        
    for ( i = 0; i < arr_size; ++i )
        free(arr[i]);
    free(arr);
    exit(0);
}
Добавлено через 46 минут
функцию byNumDigitsDesc исправил, а то неправильно работала.
 
Текущее время: 00:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru