0 / 0 / 0
Регистрация: 13.11.2011
Сообщений: 12
1

Удалить все слова, которые начинаются с цифры

13.11.2011, 01:03. Показов 2207. Ответов 10
Метки нет (Все метки)

В строке удалить все слова, которые начинаются с цифры

оригинал
дано рядок слів розділеним пробілом. Якщо слово починається з цифри то видалити його з рядка.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2011, 01:03
Ответы с готовыми решениями:

Удалить слова которые начинаются с цифры
программа должна удалять слова которые начинаются с цифры #include <stdio.h> #include...

Из введенной строки удалить все слова, которые начинаются с большой буквы и вывести полученную строку
#include <stdio.h> #include <locale.h> #include <math.h> #include <string.h> #include...

В txt файле найти все слова которые начинаются на гласные, вывести ети слова и все числа из файла
В txt файле найти все слова которые начинаются на гласные, вывести ети слова и все числа из файла.

Удалить все строки, которые начинаются на букву ‘F’
Задание:Поиск учеников со средним баллом 4.5; Удалить все строки, которые начинаются на букву ‘F’...

10
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
13.11.2011, 01:12 2
Цитата Сообщение от Google Translate
дано строку слов разделенным пробелом. Если слово начинается с цифры то удалить его из строки.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
 
#define MAXWORDS  100
#define MAXLINE  1000
#define DELIM  " .,:;(){}\"\n\t!?"
#define swap(t, a, b) { t temp = (a); (a) = (b); (b) = temp; }
 
char *make_format(char *);
char *make_str(char *, char *, char **);
 
int main()
{
    char line[MAXLINE], *p;
    char *words[MAXWORDS], **w;
    char *format;
 
    while (printf("enter a line:\n") > 0 && fgets(line, MAXLINE, stdin)
        && line[0] != '\n') {
        if ((format = strdup(line)) == NULL) {
            printf("error: cannot allocate memory\n");
            return 1;
        }
        make_format(format);
        w = words;
        for (p = strtok(line, DELIM); 
            p != NULL && w < words+MAXWORDS;
                        p = strtok(NULL, DELIM))
                        if ((*w++ = strdup(isdigit(*p) ? "" : p)) == NULL) {
                printf("error: cannot allocate memory\n");
                                return 1;
            }
        *w = NULL;
        printf("%s", make_str(line, format, words));
        for (w = words; *w != NULL; w++)
            free(*w);
        free(format);
    }
    return 0;
}
 
char *make_format(char *s)
{
    char *t, *beg = s;
    int shift;
 
    for ( ; *s != '\0'; s++) {
        if (!isalnum(*s) && *s != '\'')
            continue;
        for (shift = 0, t = s + 1; isalnum(*t) || *t == '\''; t++)
            shift++;
        for (t--; ; t++) {
            *(t - shift) = *t;
            if (*t == '\0')
                break;
        }
    }
    return beg;
}
 
char *make_str(char *s, char *f, char **words)
{
    char *beg = s;
 
    for (*s = '\0'; *f != '\0'; f++)
        if (isalnum(*f) || *f == '\'') {
            if (*words != NULL) {
                strcat(s, *words);
                s += strlen(*words++);
            } else {
                strcat(s, f);
                return beg;
            }
        } else {
            *s++ = *f;
            *s = '\0';
        }
    return beg;
}
1
0 / 0 / 0
Регистрация: 13.11.2011
Сообщений: 12
13.11.2011, 01:28  [ТС] 3
Спасибо, можно ли написать проще? или исправить мой код ниже
оригинал
ДЯКУЮ! програма написана не для чайника такого як я бо я не розумію багато чого, можливо причина в тому що я чайник....

чи можливо щось зробити з цим


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
41
42
43
44
45
46
#include <stdio.h>
#include <string.h>
#include <conio.h>
void znaku(char str[10],int m);
 
int main (void)
{ 
char str[100];
 
int m, n=100;
fgets (str,n,stdin);
m=strlen(str);
znaku(str,m);
 
return 0;
}
 
void znaku (char str[10],int m) 
{
int k=0,i=0,j;
char B[100];
for(j=0;j<m;j++)
{
B[0]=str[0];
while(i!=m)
{ 
if(str[i]==' ')
{
if((str[i+1]=='1')||(str[i+1]=='2')||(str[i+1]=='3')||(str[i+1]=='4')||(str[i+1]=='5')||(str[i+1]=='6')||(str[i+1]=='7')||(str[i+1]=='8')||(str[i+1]=='9')||(str[i+1]=='0'))
{
goto A;
}
}
B[k+1]=str[i+1];
k++;
 
A: i++;
}
 
}
for(i=0;i<k+1;i++)
{
printf("%c",B[i]);
}
getch();
}
0
Jupiter
13.11.2011, 01:49
  #4
 Комментарий модератора 
Аня658, официальный язык форума русский. Либо дальше будете писать на русском языке, либо тема будет закрыта.
0
934 / 759 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
13.11.2011, 09:25 5
Цитата Сообщение от Аня658 Посмотреть сообщение
Спасибо, можно ли написать проще?
Всё можно, держи.
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
char*  str_delete(char* str) {
   char* ptr, *tmp = str;
   int  check;
   while((str = strpbrk(str, "0123456789")) != NULL) {
        check = (str == tmp) ? 1 : ! isalnum(*(str - 1));
        for(ptr = str; isalnum(*ptr) && *ptr; *ptr++);
        if(check)
           strcpy(str, str + (ptr - str));
        else
           str = ptr;
  }
  return tmp;
}
 
 
int main(void) {
   char str[] = "1WORD1->ops 7ice. 11ops 7OCEAN (7Warrior) 20005YEARS4, SWAP7";
   str_delete(str);
   puts(str);
   getchar();
   return 0;
}
1
Заблокирован
13.11.2011, 10:29 6
Аня658, советую использовать функцию
C++
1
strcat( char * destination, const char * source ).
Эта функция разбивает строку на массив в соответствии с лексемами массива символов source.
Например, вы разбиваете строку "The best of best of the best" на массив слов. В параметр source
передаете ' '(пробел). В итоге у вас в массиве будет 7 злементов, 7 слов.
1
Эксперт С++
5826 / 3477 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.11.2011, 10:38 7
Цитата Сообщение от mc.Duck Посмотреть сообщение
Эта функция разбивает строку на массив в соответствии с лексемами массива символов source.
нет, эта функция производит конкатенацию С-строк

Цитата Сообщение от mc.Duck Посмотреть сообщение
Например, вы разбиваете строку "The best of best of the best" на массив слов. В параметр source
передаете ' '(пробел). В итоге у вас в массиве будет 7 злементов, 7 слов.
под такое описание больше всего подходит функция strtok, но и она возвращает не массив строк, а очередную строку-токен при каждом вызове
2
Эксперт С++
5053 / 3114 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
13.11.2011, 10:41 8
mc.Duck, да ну. А по моим сведениям strcat присоединяет source к destination. Я не прав?
1
Эксперт С++
4264 / 2238 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.11.2011, 11:33 9

Не по теме:

mc.Duck, вы уже в трех подряд темах ерунду написали, а в одной из них код подсунули, который даже 5-классник напишет правильнее. Почитайте книжки прежде чем кому то что-то советовать, а то не смешно уже читать ваши домыслы, которые далеки от реальности...



Цитата Сообщение от silent_1991 Посмотреть сообщение
mc.Duck, да ну. А по моим сведениям strcat присоединяет source к destination. Я не прав?
конечно вы правы, так оно и есть!
1
silent_1991
13.11.2011, 13:10
  #10

Не по теме:

Thinker, это был сарказм, ну да ладно :D

0
Эксперт С++
4264 / 2238 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.11.2011, 17:03 11
Цитата Сообщение от silent_1991 Посмотреть сообщение

Не по теме:

Thinker, это был сарказм, ну да ладно

Не по теме:

да я так и понял, просто все на эмоциях. А иногда и профессионалы что-то забывают, поэтому на всякий случай:)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2011, 17:03
Помогаю со студенческими работами здесь

Все слова строки, которые начинаются с цифры отсортировать по убыванию.
Все слова строки, которые начинаются с цифры отсортировать по убыванию. неполучается, чета...

Удалить все слова, которые начинаются и заканчиваются за одну и ту же букву
Уничтожить все слова, которые начинаются и заканчиваются за одну и ту же букву. Я написал чтобы оно...

Удалить из строки все слова, которые начинаются на заглавную букву
слова в строке могут разделяться пробелами и знаками препинания,в конце &quot;.&quot; необходимо удалить из...

Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву
Пропустил несколько занятий по дисциплине, задали написать программу с использованием строк и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru