Напечатать в алфавитном порядке все буквы, входящие в текст - C (СИ)

Формулировка задачи:

Весь текст находится в txt файле, все данные должны быть обработаны и занесены в алфавитном порядке в выходной текст, а так же отобразиться на экране. При этом пользователь должен ввести название входного и выходного файлов. P.S. До этого делал это же задание с немного отличными требованиями в паскале на PascalABC.NET, теперь вот на С первую же программу такую дали Добавлено через 5 часов 27 минут
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <locale.h>
#include <ctype.h>
 
int main(void)
{
    int i,j,k,TextSize;
    char InPName[15],OutPName[15], Symbol;
    FILE *InPutFile,*OutPutFile;
    char OurText[100];
 
    setlocale(LC_ALL, "RUSSIAN");
    printf("Данная программа отсортирует ваш текст в алфавитном порядке.\n");
    printf("Введите имя исходного файла \n");
    k = 0;
    while (k == 0)
    {
        scanf("%s", InPName);
 
        if ((InPutFile = fopen(InPName, "r")) == NULL)
        {
            printf("Ошибка при открытии файла. Повторите ввод\n");
            k = 0;
        }
        else{
            k = 1;
        }
    }
    printf("Введите имя файла для результата \n");
    scanf("%s", OutPName);
    OutPutFile = fopen(OutPName, "w");
    fseek(InPutFile, 0, SEEK_SET);
    printf("Исходныйтекст: \n \r");
    TextSize = 0;
    while (!feof(InPutFile))
    {   
        Symbol = getc(InPutFile);
        printf("%c", Symbol);
        TextSize++;
        OurText[TextSize] = toupper(Symbol);
    }
 
    fclose(InPutFile);
    for (i = 0; i <= TextSize; i++)
    {
        Symbol = OurText[i];
        j = i - 1;
        while ((j >= 1) && (OurText[j] > Symbol))
        {
            OurText[j + 1] = OurText[j];
            j --;
        }
        OurText[j + 1] = Symbol;
    }
    printf("\n");
    printf("Получившийся текст: \n \r");
    for (i = 0; i <= TextSize; i++)
    {
        switch (OurText[i])
        {
        case 'A' - 'Z' || 'А' - 'Я':
            printf("%c", OurText[i]);
            putc(OurText[i], OutPutFile);
        }
    }
 
    fclose(OutPutFile);
    system("pause");
    return 0;
}
Может кто объяснить, почему switch не хочет пропускать символы? Без него все работает, но выводит в добавок и те символы, которые мне не нужны. К тому же в конце текста откуда-то появляется буква "я".


textual

Код к задаче: «Напечатать в алфавитном порядке все буквы, входящие в текст - C (СИ)»

switch (OurText[i])
        {
        case 'A' - 'Z' || 'А' - 'Я':
            printf("%c", OurText[i]);
            putc(OurText[i], OutPutFile);
        }
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

15   голосов, оценка 3.667 из 5

Источник
Похожие ответы