Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Алгоритмы и теория программирования


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Гаряка Асмик
Статус: Профессор
Рейтинг: 5196
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2522
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2007
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Алгоритмы и теория программирования

Номер выпуска:123
Дата выхода:13.11.2010, 21:00
Администратор рассылки:lamed (Профессор)
Подписчиков / экспертов:401 / 176
Вопросов / ответов:1 / 1

Вопрос № 180640: Здравствуйте эксперты! Помогите с алгоритмом программы на Си. {}-условие того что должна делать программа, будет описано ниже. Условие программы: Дана строка, содержащая слова, разделенные одним или несколькими разделительными символами (пробел...



Вопрос № 180640:

Здравствуйте эксперты! Помогите с алгоритмом программы на Си.
{}-условие того что должна делать программа, будет описано ниже.
Условие программы: Дана строка, содержащая слова, разделенные одним или несколькими разделительными символами (пробелами, табуляторами) в начале строки и в конце строки также могут находиться разделительные символы. {}. В начале и в конце строки не должно быть разделительных символов.
{}:
1.Сформировать новую строку в которой слова исходной строки записаны в порядке возрастания длин и разделены одним пробелом.
2. Сформировать новую строку, состоящую только из слов, начинающихся и заканчивающихся на один и тот же символ, разделенных 1-м пробелом.
3. Сформировать новую строку, в которой удалить из каждого слова исходной строки символы, встречающиеся 1-раз.
4. Сформировать новую строку, в которой поместить нечетные слова разделенные 1-м пробелом.

P.S.:Составить алгоритм для каждого из условий в отдельности.И если возмож но то в двух видах: с использованием функций таких как (strcat,strcpn и т.д) и без них.

Заранее Большое Спасибо!!!!!!!!!!!!!!

Отправлен: 08.11.2010, 20:40
Вопрос задал: Magma (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает lamed (Профессор) :
Здравствуйте, Magma! Вместо пробела в качестве разделителя выводится знак подчеркивания для наглядности. Вам достаточно поменять '_' на ' '.
GCC/Code::Blocks.
Код:
/* Сформировать новую строку, состоящую
только из слов, */
/* начинающихся и заканчивающихся на один и тот же символ, */
/* разделенных 1-м пробелом. */
/* lamed, rfpro, 2010 */
#include <stdio.h>
int iswhite(int c);
void create(char s[], const char t[]);
int main(void)
{
enum {SIZE=100};
char s[SIZE];
char t[SIZE];

gets(t);
create(s,t);
puts(s);
system("pause");
return 0;
}

int iswhite(const int c)
{
retu rn (c==' '||c=='\t');
}

void create(char s[], const char t[])
{
int i, j, beg;
int c, first;
int inword;

i=0;
while (iswhite(c=t[i]))
i++;

inword=1;
beg=0;
for (j=0; (c=t[i])!='\0'; i++)
{
if (!iswhite(c))
{
if (!inword)
beg = j;
s[j++]=c;
inword=1;
}
else
{
if (inword)
{
if (s[j-1]==s[beg])
s[j++]='_';
else
j=beg;
}
inword=0;
}
}
if (inword && s[j-1]!=s[beg])
j=beg;

if (j>0 && s[j-1]=='_')
j--;
s[j]='\0';
}
Пример диалога
Код:
     123 123 123  676 676   888 787 789 888       789   
676_676_888_787_888
Для продолжения нажмите любую клавишу ...

Если требуются уточнения - пожалуйста, задавайте вопросы в мини-форуме.

Ответ отправил: lamed (Профессор)
Ответ отправлен: 09.11.2010, 15:20
Номер ответа: 263907

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263907 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.23 от 10.11.2010

    В избранное