Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6305
Последний выпуск: 19.06.2015

Алгоритм со строками

76K
08 апреля 2012 года
DenHaz
5 / / 26.03.2012
Подскажите, пожалуиста, алгоритм. Я начел делать но не доделал (Си)

Задание:
Заменить цифры от 0 до 9 словами (если подряд встречаются две цифры и более, то данное число трактуется как две цифры, т.е. 23 – это 2 и 3). Пример: заменить «1 урок» на «один урок».


Код:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>

void main()
{
    char str[100],s;
    int i=0;
    printf("Vvedite text: ");
    do
    {
        s=getchar();
        str[i++]=s;
    }
    while (s!='\n');
    str[--i]='\0';

    //??????????????

    printf( "New String :      %s\n", str );
    getchar();
}
11K
09 апреля 2012 года
xAtom
65 / / 17.01.2011
Код:
#include <stdio.h>
#include <string.h>
#include <ctype.h>

char* digit_to_word(char* str) {
   size_t len, pos, k;
   char* tmp = str;
   char* ds[10] = {
      "нуль", "один", "два", "три", "четыре",
      "пять", "шесть", "семь", "восемь", "девять"
   };
   while((str = strpbrk(str, "0123456789")) != NULL) {
       k = (isdigit(*(str + 1))) ? 0u : 1u;
       len = strlen(ds[*str - '0']);
       pos = strlen(str);
       memmove(str + (len - k), str, pos);
       memcpy(str, ds[*str - '0'], len);
       *((str) + (pos + len)) = '\0';
       str += len;
       *str = ' ';
   }
   return tmp;
}

int main(void) {
   char s[255] = "1 урок, 7 чудес света. 0123456789";
   /*
   printf("enter str: ");
   fgets(s, sizeof(s) - 1, stdin);
   */

   puts( digit_to_word(s) );
   return 0;
}

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог