Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AVATAR
8 / 8 / 3
Регистрация: 27.07.2014
Сообщений: 263
#1

Напишите программу detab, заменяющую символы табуляции во вводимом тексте нужным числом пробелов - C++

27.07.2014, 20:02. Просмотров 1272. Ответов 5
Метки нет (Все метки)

Упражнение 1.20. Напишите программу detab, заменяющую символы табуляции во вводимом тексте нужным
числом пробелов (до следующего "стопа" табуляции). Предполагается, что "стопы" табуляции расставлены на
фиксированном расстоянии друг от друга, скажем, через n позиций. Как лучше задавать n — в виде значения
переменной или в виде именованной константы?

Помогите понять задание! '\t' - табуляция равна по умолчанию четырем пробелам. То есть мне надо написать программу, которая будет заменять при встрече табуляции, добавлять четыре пробела ? и если у меня будет две сподрят табуляции, то через n фиксированное я должен делать пробеами отступы между ними ?
Мне просто не понятно, что нужно сделать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2014, 20:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Напишите программу detab, заменяющую символы табуляции во вводимом тексте нужным числом пробелов (C++):

Заменить символы табуляции в заданном тексте нужным числом пробелов (не могу понять условие задачи) - C++
со "стопами" ясно, но как обрабатывать несколько подряд стоящих символов табуляции: а) заменять их пробелами в пределах одного стопа,...

Написать программу подсчета пробелов, символов табуляции и новой строки - C++
Помогите, пожалуйста, уважаемые программисты! Заранее большое спасибо! 1. Написать программу подсчета пробелов, символов табуляции и...

Написать программу, которая во вводимом с клавиатуры тексте сделает разбиение на предложения - C++
Написать программу, которая во вводимом с клавиатуры тексте сделает разбиение на предложения. Условие конца предложения - точка,...

Разработать программу, осуществляющую поиск самого короткого и самого длинного слова во вводимом тексте - C++
Разработать программу, осуществляющую поиск самого короткого и самого длинного слова во вводимом тексте. С комментами)

Напишите программу на C++, использующую цикл и управляющую последовательность табуляции \t для печати следующей таблицы значений: - C++
Напишите программу на C++, использующую цикл и управляющую последовательность табуляции \t для печати следующей таблицы значений: N 10*N ...

Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love" - C++
Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love". Например, для входной строки I hate...

5
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
27.07.2014, 20:06 #2
не знаю что такое стоп табуляции... вроде табуляция это просто символ '\t', так что идешь в цикле по строке и при встрече этого символа перевыделяешь память с соответствующим копированием элементов массива и вставляешь пробелы
1
AVATAR
8 / 8 / 3
Регистрация: 27.07.2014
Сообщений: 263
27.07.2014, 22:43  [ТС] #3
Все, разобрался! табуляция - это 8 символов(пробелов), а не 4 как я думал сначала. Ширина табуляции в пробелах зависит от позиций символа '\t' в строке. Если строку поделить на блоки из 8 символов, то ширина будет зависеть от положение '\t' в этом блоке и будет равна количеству недостающих символов до целого блока из 8 символов(пробелов). Например у нас есть строка "adf'\t'tqet"
то табуляция будет равна 8-3 = 5 - пробелам. Если перед табуляцией с начала блока 7 символов, то будет один пробел, если 0 символов в блоке, а сам таб символ первый, то будет 8 пробелов
2
lyotchik
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 1
08.04.2015, 15:48 #4
Я тоже не понимаю задания.
AVATAR, почему табуляция - 8 символов?
Дайте, пожалуйста, определения, что такое табуляция, что такое стоп табуляции?
Поискал по форумам, такое ощущение, что только я этого не понимаю.
0
yrceus
82 / 82 / 54
Регистрация: 25.08.2013
Сообщений: 326
29.10.2015, 20:04 #5
Википедия говорит тоже про обычно 8 знакомест, у меня четыре, если правильно понял. Двигает позицию табуляции, если в блоке более трех символов.
0
Wybie
0 / 0 / 0
Регистрация: 11.10.2017
Сообщений: 2
11.10.2017, 16:15 #6
Вот решение, в задаче вспоминается принцип работы, пишущей машинки. Который плавно перешел в наши дни.

Горизонтальная табуляция (HT, TAB) — управляющий символ таблицы ASCII с кодом 0916, используется для выравнивания текста в строках. Встретив этот символ, терминал перемещает каретку (или курсор) вправо на ближайшую позицию табуляции. Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25… Вводится при помощи клавиши Tab ↹, во многих языках программирования обозначается как \t.
Если отправить на печать текст (символ табуляции обозначен стрелкой)

один→два→три→четыре
1→2→3→4
5→6→7→8
9→10→11→12

получим такую распечатку:
один два три четыре
1 2 3 4
5 6 7 8
9 10 11 12

ссылки
Кликните здесь для просмотра всего текста


код
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* Write a Program detab,which replaces tabs in the input with a proper 
  number of blanks to spaces */
 
#include<stdio.h>
#define TABINC 8
 
int main(void)
{
  int nb,pos,c;
 
  nb = 0;
  pos = 1;
 
  while((c=getchar())!=EOF)
  {
    if( c == '\t')
    {
      nb = TABINC - (( pos - 1) % TABINC);
 
      while( nb > 0)
      {
        putchar('#');
        ++pos;
        --nb;
      }
    }
    else if( c == '\n')
    {
      putchar(c);
      pos = 1;
    }
    else
    {
      putchar(c);
      ++pos;
    }
  }
 
  return 0;
}
0
11.10.2017, 16:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2017, 16:15
Привет! Вот еще темы с ответами:

Копирование строк в вводимом тексте - C++
Добрый день. Есть функция по копированию строк вводимого текста. Работает хорошо, но только с существующими строками. N - копируемая...

Напишите программу detab, заменяющую символы табуляции во вводимом тексте нужным числом пробелов - C (СИ)
Упражнение 1.20. Перевод: Напишите программу detab, заменяющую символы табуляции во вводимом тексте нужным числом пробелов (до следующего...

Напишите программу, заменяющую в тексте все прописные латинские буквы на строчные - Turbo Pascal
Напишите программу, заменяющую в тексте все прописные латинские буквы на строчные. Напишите пожалуйста целую прогу

Во вводимом с клавиатуры тексте удалить все пробелы, знаки табуляции - C (СИ)
Нужно написать программу, которая во вводимом с клавиатуры тексте удалит все пробелы, знаки табуляции и выведет количество удаленных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru