Подсчёт количества чисел, удаление каждого второго слова и слов из латинских букв - C (СИ)
Формулировка задачи:
Я новичок в програмировании, сказать больше Чайник, но всё-же очень хочу развивать в этом направлении.
Вот недавно наткулся на задание в интернете:
Написать программу, которая копирует содержимое входного файла в выходной файл;
подсчитывает количество чисел в тексте (не цифр, а именно чисел);
Удаляет все слова, состоящие только из латинских букв;
удаляет каждое второе слово.
С одной стороны не очень сложно, но всё-таки я запутался.
Изрядно попотев, я оказался способным лишь на это:
Помогите пожалуста победить в этой борьбе с программой=)
Заранее спасибо
C |
Решение задачи: «Подсчёт количества чисел, удаление каждого второго слова и слов из латинских букв»
textual
Листинг программы
#include <iostream.h> #include <stdio.h> #include <conio.h> #include <ctype.h> void alpha(void) { FILE *file,*file1; file = fopen( "input.txt", "r" ); file1 = fopen( "output.txt", "w" ); char ch; int i=0,t=0; ch=fgetc(file); while (ch != EOF) { i=0,t=0; char buf [1024] ; while(ch!=' '&& ch!='\n' && ch !='\t') { if(ch == EOF) break; buf[i]=ch; i++; ch=fgetc(file); } t=i; int flag=0; for(i=0;i<=t;i++){ if((isalpha(buf[i])!=0) && (isdigit(buf[i])==0)) flag++; } if(flag==t) for(i=0;i<t;i++) fputc(buf[i],file1); fputc(' ',file1); ch=fgetc(file);} fclose(file); fclose(file1); } void second(void) {FILE *file,*file1; file = fopen( "input.txt", "r" ); file1 = fopen( "output.txt", "w" ); char ch; int i=0; while (ch != EOF) { ch = fgetc(file); if (ch==' ') i++; if(i%2==0) fputc(ch,file1); } } void main( void ) { alpha(); //second(); }
Объяснение кода листинга программы
В этом коде представлены две функции: alpha
и second
.
Функция alpha
считывает содержимое файла (предполагается, что в этом файле находятся числа, разделённые пробелами), и записывает в другой файл только те слова, которые состоят только из букв (не из цифр).
А функция second
считывает то же самое, но записывает в файл только каждое второе слово.
Вот список элементов кода, которые можно выделить:
- Объявление функций
alpha
иsecond
. - Открытие файлов
input.txt
иoutput.txt
для чтения и записи соответственно. - Чтение символа из файла в переменную
ch
. - Прохождение по всем символам в файле до конца файла.
- В функции
alpha
: считывание числового значения в массивbuf
(предполагается, что это число, состоящее только из букв). - Проверка каждого символа в массиве
buf
: если символ является буквой и не является цифрой, то увеличиваем счётчикflag
. - Если все символы в массиве
buf
являются буквами, то записываем каждый символ в файлoutput.txt
, предварительно добавив пробел. - В функции
second
: если текущий символ является пробелом, то увеличиваем счётчикi
. - Если
i
является чётным числом, то записываем текущий символ в файлoutput.txt
. - Закрытие файлов после окончания работы.
- Объявление функции
main
, которая вызывает функциюalpha
и, опционально, функциюsecond
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д