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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
***Иришка***
0 / 0 / 0
Регистрация: 18.12.2009
Сообщений: 8
#1

Функции - C++

18.12.2009, 16:24. Просмотров 475. Ответов 1
Метки нет (Все метки)

Помогите пожалйсто решить задачи на языке С:

Пользователь вводит построчно полные имена файлов. Завершение ввода – ввод пустой строки. Сгруппировать файлы по каталогам, в которых они находятся. Вывести на экран имя каталога, в котором находится больше всего файлов с расширением txt.

Дан строковый массив. Размер и элементы массива вводятся пользователем. Упорядочить массив тремя способами: в порядке убывания длины строк; в обратном алфавитном порядке элементов; в порядке убывания количества цифр среди символов элементов. В функцию сортировки должен передаваться указатель на функцию сравнения двух элементов. Способ сортировки выбирает пользователь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2009, 16:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции (C++):

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции - C++
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...

Как будут инициализированы переменные в теле функции и вне тела функции? - C++
Здравствуйте. Подскажите, пожалуйста, как будут инициализированы переменные в теле функции и вне тела функции? Какими значениями? ...

Табулирование заданной функции и определение максимального и минимального значения функции в таблице - C++
Разработать консольное приложение, производящее табулирование заданной функции и определение максимального и минимального значения функции...

Найти среднее арифметическое значений функции f(x) в точках a, b, (a+b)/2 используя обращение к функции - C++
А этой нету: 3.Найти среднее арифметическое значений функции f(x) в точках a, b, (a+b)/2 используя обращение к функции f=(x*sin⁡ π/4) /...

Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций - C++
Добрый день. Дана лабораторная работа, (см. ниже 2 скриншота) по заданию нужно вычислить функции с использованием их разложения в степенной...

Используя перегруженные функции и шаблон функции удалить из массива элемент по индексу - C++
Стоит следующая задача: Используя перегруженные функции и шаблон функции удалить из массива элемент по индексу. Функцию написал, но я...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
18.12.2009, 19:03 #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
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 исправил, а то неправильно работала.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2009, 19:03
Привет! Вот еще темы с ответами:

Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using std::cout; void f(const int &amp;ref){...

Различные функции, для которых можно создать массив указателей на функции - C++
Придумайте не менее 3-х различных функций, для которых можно создать массив указателей на функции.

Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции - C++
Составить программу решения поставленной задачи: Вычислить m значений функции f(x) на отрезке . Вычисление величины f(x) оформить в виде...

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции - C++
здраствуйте знатаки!! помогите пожалуйсто решить задачу.Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2,...


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

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

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