Главная » Статьи » Задачи из заказов » Заказ 08.07.07 C |
Напечатать все слова, отличные от последнего слова, предварительно удалив из слов последнюю букву.
// // Задана фраза - последовательность, содержащая от 2 до 30 слов, в каждом из // которых от 2 до 10 латинских букв; между соседними словами - не менее одного // пробела, за последним словом - точка . Напечатать все слова, отличные от // последнего слова, предварительно преобразовав каждое их них по следующему // правилу: удалить из слова последнюю букву. // Программа должна читать текст из файла "input.txt" и выводить // последовательность в файл "output.txt". // #include "stdafx.h" bool isEqual(char a[10], char b[10]) { int i = 0; while (a[i] == b[i] && a[i] != 0 && b[i] != 0) i++; return (a[i] == b[i]); } int main() { char a[30][10]; FILE *in; in = fopen("input.txt", "rt"); char ch; int i = 0; int j = 0; bool newword = true; while (!feof(in)) { ch = fgetc(in); if (ch == '.') { a[i][j-1] = 0; break; } if (ch != ' ') { a[i][j] = ch; j++; newword = false; } else { if (!newword) { a[i][j-1] = 0; i++; j = 0; newword = true; } } } fclose(in); int n = i; FILE *out; out = fopen("output.txt", "wt"); for (i = 0; i < n; i++) if (!isEqual(a[i], a[n])) { int j = 0; while (a[i][j] != 0) { fputc(a[i][j], out); j++; } fputc(13, out); } fclose(out); return 0; } | |
Категория: Заказ 08.07.07 C | Добавил: solver (08.01.2007) | |
Просмотров: 3322 |