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

Сортировка слов по алфавиту методом выбора. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Напишите пожалуйста програмный код) http://www.cyberforum.ru/cpp-beginners/thread67988.html
Здраствуйте! Помогите пожалуйста бедной)С++ 1)Написать программу используя функциюкоторая определяет:является ли число целым(с с помощью цикла for) 2)Написать программу которая заминяет отрицательные элементы массива на среднее арифметическое а положительные элементы на произведение элементов массива.
C++ Найдить ошибку // Ета программа запрашивает у пользователя два числа #include <iostream.h> #include <conio.h> #pragma hdrstop int multiply(int, int) void showResult(int) int main (int argc, char *argv) http://www.cyberforum.ru/cpp-beginners/thread67981.html
C++ Стек на основе связанного списка C++
Привет:) Мне нужно разработать функции занесения и извлечения данных стека на основе связанного списка!на основе массива уже написала, а это не пойму как сделать нужно... Плиз помогите, кто знает...
Программа с описанными шаблонами структур и их массивом C++
Написать программу, отвечающую следующим требованиям: 1. Наличие внешне описанного шаблона структуры name с двумя элементами: строкой для имени и строкой для фамилии. 2. Наличие внешне описанного шаблона структуры data с тремя элементами: число (1...31), месяц (1...12), год (1900...2100) 3. Наличие внешне описанного шаблона структуры anketa с тремя элементами: структурой name, pol (м.ж.),...
C++ Меню http://www.cyberforum.ru/cpp-beginners/thread67966.html
Программа должна содержать меню. В последовательности целых чисел определить количество элементов, значения которых находятся в интервале и среди них определить максимальный. Помогите пожалуйста!!!
C++ Рекурсия: найти n-й член геометрической прогрессии Используя рекурсивную функцию, найти n-й член геометрической прогрессии с заданным первым членом b и знаменателем прогрессии q. Заранее благодарствую-))) подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
13.12.2009, 22:39     Сортировка слов по алфавиту методом выбора.
Пишет в выходной файл все слова в одну строку в алфавитном порядке
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
/* сортировка слов. */
 
int wrdcmp(const void *a, const void *b){
    return strcmp(*(char**)a, *(char**)b);
}
 
/* если вызывается без аргументов, входной файл - stdin, ввод заканчивается по Ctrl+D (UNIX) Ctrl+Z Enter (Win), 
*   иначе первый аргумент - имя файла. По аналогии второй аргумент - имя выходного файла, или stdout */
int main(int argc, char **argv){
    char **words, *pWord, wrd_buf[BUFSIZ];
    int c, inword;
    size_t count, i;
    FILE *fin, *fout;
    
    if ( argc > 1 ){
        if ( (fin = fopen(argv[1], "r")) == NULL ){
            perror("Can't open input file!\n");
            exit(1);
        }
    }
    else
        fin = stdin;
        
    words = NULL;
    inword = 0;
    count = 0;
    *wrd_buf = '\0';
    pWord = wrd_buf;
    while ( ( c = fgetc(fin) ) != EOF ){
        if ( isspace(c) || ispunct(c) ){
            if ( inword ){
                *pWord = '\0';
                if ( (words = (char**)realloc(words, sizeof(char*) * (count + 1))) == NULL ){
                    perror("Memory error!\n");
                    exit(1);
                }
                if ( (words[count] = strdup(wrd_buf)) == NULL ){
                    perror("Memory error!\n");
                    exit(1);
                }
                count++;
                inword = 0;
                pWord = wrd_buf;
                *pWord = '\0';
            }
        }
        else {
            *pWord++ = (unsigned char)c;
            inword = 1;
        }   
    }
    fclose(fin);
    
    if ( !words ){
        fprintf(stderr, "No words found!\n");
        exit(1);
    }
    
    if ( argc > 2 ){
        if ( (fout = fopen(argv[2], "w")) == NULL ){
            perror("Can't open output file!\n");
            exit(1);
        }
    }
    else
        fout = stdout;
    
    qsort((void*)words, count, sizeof(char*), wrdcmp);
    
    for ( i = 0; i < count; i++ )
        fprintf(fout, "%s ", words[i]);
    fprintf(fout, "\n");
    
    fclose(fout);
    for ( i = 0; i < count; i++ )
        free(words[i]);
    free(words);
    exit(0);
}
 
Текущее время: 23:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru