не работает программа, не могу найти ошибку! [требует правки]

359
24 декабря 2016, 16:49

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

using namespace std;
int main()
{
    //setlocale(LC_ALL, "Russian");
    FILE* f1 = fopen("input.txt", "rt");
    FILE* f2 = fopen("output.txt", "w+");
    //если файл не существует. выводим ошибку
    if (f1 == NULL)
    {
        printf("Error \n");
    }
    else
    {
        int i, j, p, sym;
        int len = 1000;
        int dlin = 0;
        char* phrase = new char [len];
        // пока не найден конец, считываем файл в массив
        while (sym = getc(f1) != EOF)
        {
            phrase[dlin] = char(sym);
            dlin++;
        }
        int n = 0, k = 0;
        char toch;
        for (i = dlin; i >= 0; i--)
        {
            //не захватывая последний знак, обрабатываем данные
            //if (phrase[dlin] = '.'){toch = phrase[dlin];phrase[dlin] = ' ';   }
            // Найден пробел или конец строки
            if (phrase[i] == ' ' || phrase[i] == '\n' || phrase[i] == '\0')
            {
                for (k = i - 1; k >= 0; k--)
                {
                    //найдем начало слова
                    if (phrase[k] == ' ' || k == 0)
                    {
                        n = k;
                        if (k != 0) n++;
                        break;
                    }
                }
                // запишем слово в файл и поменяем размер буковки
                for (j = n; j < i; j++)
                {
                    if ((phrase[n] >= 'а') && (phrase[n] <= 'я'))
                    {
                        phrase[n] += 'А' - 'а';
                    }
                    else
                    {
                        phrase[n] -= 'А' - 'а';
                    }
                    if ((phrase[n] >= 'a') && (phrase[n] <= 'z'))
                    {
                        phrase[n] += 'A' - 'a';
                    }
                    else
                    {
                        phrase[n] -= 'A' - 'a';
                    }
                    // вывод в файл
                    fprintf(f2, "%c", phrase[j]);
                }
            }
        }
        fprintf(f2, "%c", toch);
    }
    fclose(f1);
    fclose(f2);
    return 0;
}
READ ALSO
Некорректно работает goodFeaturesToTrack в третьей версии OpenCV

Некорректно работает goodFeaturesToTrack в третьей версии OpenCV

Пытаюсь найти особые точки кадра с помощью функции goodFeaturesToTrack в OpenCV 30:

366