Задачи из учебника Кернигана и Ритчи - C (СИ)
Формулировка задачи:
Недавно приобрел учебник по программированию на языке С авторов Кернигана и Ритчи. Там есть много интересных задач. Предлагаю в этой теме приводить свои решения и оптимизировать уже имеющиеся.
Вот упражнение 1.20. Работает корректно, но я так думаю вариант не самый оптимальный =)
Написать программу detab, которая бы заменяла символы табуляции во входном потоке соответствующим количеством пробелов до следующей границы табуляции. Предположим что табуляция имеет фиксированную ширину n столбцов. Следует ли сделать n переменной или символическим параметром?
Хотелось бы послушать аргументированную критику.
#include <stdio.h> #define TABMAX 8 //ширина табуляции void detab(int tabSize); int main() { detab(TABMAX); return 0; } void detab(int tabSize) { int ch, pos; pos = 0; while((ch = getchar()) != EOF) { if(ch == '\n') { putchar(ch); ch = getchar(); pos = 0; } if(ch == '\t') do { putchar(' '); ++pos; } while(pos % tabSize); else { putchar(ch); ++pos; } } }
Решение задачи: «Задачи из учебника Кернигана и Ритчи»
textual
Листинг программы
char *detab(char *String, int tabSize)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д