Необходимо на языке программирования СИ написать программу, которая вставляет в строку пробелы перед и после дефиса. Но есть условие, что если при преобразовании строки получилось так : 1--2 то два дефиса стоять не могут (перед ними должен быть пробел, и причём только один.)
Т. е. При входной строке -1--2- должно получиться: - 1 - -2 -
Другие языки программирования и технологии
Ребят всем привет. Помогите пожалуйста. 3 день голову ломаю, заколебался уже!!! Вообщем, задача следующая.
Сделай проверку строки на подстроку (два дефиса). Отсюда и два условия обработки
Александр Мусинов
а как пробелы между ними вставить?
Программа делает примерно то, что вам нужно
#include <stdio.h>
#defineBUF_SIZE4096
//Определение функций
//Преобразует ASCII строку, добавляя перед каждым знаком '-' пробел
//Если подряд идет два символа '-' пробел между ними не добавляется
voidmake_line( char* buf, size_t buf_size, char* incoming_str );
intmain( int argc, char* argv[] )
{
inti;
charbuf[ BUF_SIZE ];
if( argc > 1 )
{
for( i = 1; i < argc; i++ )
{
make_line( buf, BUF_SIZE, argv[i] );
printf( "'%s' => '%s'\n", argv[i], buf );
}
}
else
{
printf( "Использование: %s <строка> [строка] \n", argv[0] );
}
}
//-------------------------------------------------------------------
//Преобразует ASCII строку, добавляя перед каждым знаком '-' пробел
//Если подряд идет два символа '-' пробел между ними не добавляется
voidmake_line( char* buf, size_t buf_size, char* incoming_str )
{
size_ti = 0;
size_tmax_i;
char*ptr;
charlast_char = '\0';
ptr = incoming_str;// начнем с начала строки
max_i = buf_size - 1;// Нам нужно оставить один элемент под '\0'
while( *ptr && (i < max_i) )
{
//Нашли символ '-'?
if( *ptr == '-' )
{
if( last_char == '-' )
{
//Сохраним символ
buf[ i ] = *ptr;
}
else
{
//Добавим пробел
buf[ i ] = ' ';
i++;
//Сохраним символ
if( i < max_i )
{
buf[ i ] = *ptr;
}
else
{
fprintf(stderr, "Cтрока не влезает в буфер!");
break;
}
}
}
else
{
if( last_char == '-' )
{
buf[ i ] = ' ';
i++;
//Сохраним символ
if( i < max_i )
{
buf[ i ] = *ptr;
}
else
{
fprintf(stderr, "Cтрока не влезает в буфер!");
break;
}
}
else
{
buf[ i ] = *ptr;
}
}
//Сохраним последний обработанный символ
last_char = *ptr;
i++;
ptr++;
}
buf[ i ] = '\0';
}
//-------------------------------------------------------------------
#include <stdio.h>
#defineBUF_SIZE4096
//Определение функций
//Преобразует ASCII строку, добавляя перед каждым знаком '-' пробел
//Если подряд идет два символа '-' пробел между ними не добавляется
voidmake_line( char* buf, size_t buf_size, char* incoming_str );
intmain( int argc, char* argv[] )
{
inti;
charbuf[ BUF_SIZE ];
if( argc > 1 )
{
for( i = 1; i < argc; i++ )
{
make_line( buf, BUF_SIZE, argv[i] );
printf( "'%s' => '%s'\n", argv[i], buf );
}
}
else
{
printf( "Использование: %s <строка> [строка] \n", argv[0] );
}
}
//-------------------------------------------------------------------
//Преобразует ASCII строку, добавляя перед каждым знаком '-' пробел
//Если подряд идет два символа '-' пробел между ними не добавляется
voidmake_line( char* buf, size_t buf_size, char* incoming_str )
{
size_ti = 0;
size_tmax_i;
char*ptr;
charlast_char = '\0';
ptr = incoming_str;// начнем с начала строки
max_i = buf_size - 1;// Нам нужно оставить один элемент под '\0'
while( *ptr && (i < max_i) )
{
//Нашли символ '-'?
if( *ptr == '-' )
{
if( last_char == '-' )
{
//Сохраним символ
buf[ i ] = *ptr;
}
else
{
//Добавим пробел
buf[ i ] = ' ';
i++;
//Сохраним символ
if( i < max_i )
{
buf[ i ] = *ptr;
}
else
{
fprintf(stderr, "Cтрока не влезает в буфер!");
break;
}
}
}
else
{
if( last_char == '-' )
{
buf[ i ] = ' ';
i++;
//Сохраним символ
if( i < max_i )
{
buf[ i ] = *ptr;
}
else
{
fprintf(stderr, "Cтрока не влезает в буфер!");
break;
}
}
else
{
buf[ i ] = *ptr;
}
}
//Сохраним последний обработанный символ
last_char = *ptr;
i++;
ptr++;
}
buf[ i ] = '\0';
}
//-------------------------------------------------------------------
Похожие вопросы
- Привет)Помогите пожалуйста написать по условию задачи программу в Паскале
- помоги пожалуйста 3 задачи надо в паскале сделать, если хочешь могу заплатить
- Всем привет! Помогите, пожалуйста, создать блок - схему к следующему коду и заданию. Заранее большое спасибо!
- Всем привет! Помогите, пожалуйста, разобраться с алгоритмическим языком (псевдокодом)
- помогите пожалуйста!!3.Напишите процедуру Input(A) для заполнения массива целых чисел A размером 10 x 10: 0 0 0 ...0 0
- Ребята помогите пожалуйста! Для тех кто знает это очень легко! Описать строки в задаче! ПАСКАЛЬ!!!!
- Помогите пожалуйста составить программы для следующих задач:
- С++ задача Помогите, пожалуйста.
- Простая задача на FASM (ассемблер) помогите 3 дня мучаюсь!!!
- Помогите, пожалуйста с задачей :( Сижу, туплю уже какой день, вообще не соображу - чтокуда. Задача на Паскале