Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 18:39   #1
sullen
 
Регистрация: 08.06.2012
Сообщений: 5
Вопрос Как можно упростить программу?

Добрый вечер.
Есть код программы:

Код:
#include <stdio.h>
#define WORD_SIZE 30
 
char* RemoveNumbers(char trg[ ], const char src[ ]) {
    char s2[WORD_SIZE], j = 0;
    unsigned i = 0;
    do
        if (src[i] >= '0' && src[i] <= '9') {
            for (i++; src[i] != ' ' && src[i]; i++) { }
            j = 0;
        } else if (src[i] == ' ' || !src[i])
            for (trg[i] = src[i]; j; j--)
                trg[i - j] = s2[i - j];
        else
            s2[j++] = src[i];
    while (src[i++]);
    return trg;
}
 
int main() {
    const char s[ ] = "assasins credo1 creed mam4ba2";
    char s2[sizeof s];
    puts(RemoveNumbers(s2, s));
    getchar();
}
Как его можно сделать проще и понятнее?
Только она так и должна остаться на С, а не на С++.

Последний раз редактировалось sullen; 08.06.2012 в 18:42.
sullen вне форума Ответить с цитированием
Старый 08.06.2012, 18:48   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

А что именно должна делать функция RemoveNumbers? Как-то много шаманного кода, не хочется вникать. Если именно записывать в trg строку src, из которой убраны все числа, то это гораздо проще можно сделать.
Код:
char* RemoveNumbers(char trg[ ], const char src[ ]) {
    for (int i = 0, j = 0; src[i]; ++i) {
      if (!((src[i] >= '0') && (src[i] <= '9'))) {
        trg[j++] = src[i];
      }
    }
    return trg;
}
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 08.06.2012, 18:54   #3
sullen
 
Регистрация: 08.06.2012
Сообщений: 5
По умолчанию

Должна убрать не только цифры, но и слова в которых они присутствовали.

Делал по задачке:
Дана строка, слова в которой разделены пробелами. Вывести на экран все слова, не включающие в себя цифры.

Для примера использовал куски чужих кодов, так как только учусь.

Вообще хотелось бы избавиться от функции, только из-за того что пользовался кусками чужого, не понимаю как будет выглядеть без неё.

В принципе, вот немного переделал:

Код:
#include <iostream> 
#include <cstring>

 
int main() 
{   
    setlocale(0, "Rus");
    char* str = "assasins credo1 creed mam4ba2";
    char str2[100];
    
    printf("\n Допустим, существует строка 'assasins credo1 creed mam4ba2'\n");
    printf("\n и мы должны убрать из неё слова с цифрами.\n");
    
    int j;
    for (int i = 0,j = 0; str[i]; ++i) 
    {
     if (!((str[i] >= '0') && (str[i] <= '9'))) 
     {
      str2[j++] = str[i];
     }
    }
 
    printf("\n Тогда останется всего два слова: %s\n",str2);
    getch();
    return 0;
}
Но ещё не понял, как теперь слова в которых были цифры убрать.

Последний раз редактировалось ACE Valery; 08.06.2012 в 20:05.
sullen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
День добрый!Как можно упростить просмотр таблиц? bize Microsoft Office Excel 4 10.01.2012 02:29
Как упростить программу по спискам? Сделать код наиболее простым и понятным без всяких наворотов datileo Visual C++ 2 09.06.2011 22:20
Как можно упростить программу? Евгений92 Общие вопросы C/C++ 0 07.11.2010 17:50
Можно ли упростить? Helennna Microsoft Office Excel 4 16.07.2010 12:15