Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Shivaki
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 61
1

В символьной строке оставить только те слова, которые состоят только из разных букв

28.03.2016, 20:30. Просмотров 978. Ответов 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include<stdio.h>
void main(void)
{
    char line[1000];
    int i, j, a, b, flag;
    i = 0;
    j = 0;
    a = i;
    flag = 0;
    printf("Enter the string:\n");
    gets(line);
    while (line[i] != '\0')
    {
        if (line[i] == ' ' || line[i] == '.' || line[i] == ',' || line[i] == '!' || line[i] == '?' || line[i] == '\t')
        {
            if (flag == 0)
            {
                while (a != i)
                {
                    line[j] = line[a];
                    j++;
                    a++;
                }
            }
            else
            {
                line[j] = line[i];
                flag = 0;
            }
            j++;
            i++;
            a = i;
        }
        else
        {
            b = i + 1;
            while (line[b] != ' ' && line[b] != '.' && line[b] != ',' && line[b] != '!' && line[b] != '?' && line[b] != '\t' && line[b] != '\0' && flag != 1)
            {
                if (line[i] == line[b])
                {
                    flag = 1;
                }
                b++;
            }
            i++;
        }
    }
    if (flag == 0)
    {
        while (a != i)
        {
            line[j] = line[a];
            j++;
            a++;
        }
    }
    else
    {
        line[j] = line[i];
        flag = 0;
    }
    line[j] = line[i];
    printf("Summary line:\n");
    puts(line);
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2016, 20:30
Ответы с готовыми решениями:

В символьной строке оставить только те слова, в которых есть повторяющиеся буквы
Здравствуйте! Не могли бы вы помочь мне в решении задачи? Я уже третий день работаю,но не...

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

В символьной строке оставить только те слова, в которых встречаются подряд идущие одинаковые буквы
Задача такая: В символьной строке оставить только те слова, в которых встречаются подряд идущие...

Функция: оставить в строке только слова, которые совпадают с начальными буквами алфавита
помогите с написанием функции. Найти и сохранить в рядке те слова последовательности, которые...

Найти в строке слова, состоящие только из букв и только из цифр
Помогите новичку, прошу. УСЛОВИЕ: Вводят строку слов. Необходимо найти слова, состоящие только из...

3
Kotik_leapold
104 / 93 / 83
Регистрация: 18.12.2015
Сообщений: 567
28.03.2016, 21:20 2
Привет, предлагаю вам иное решение:

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main() {
    char inputString[80] = "Igor potapenko";
    char finalString[strlen(inputString) + 1];
    char temporaryString[2] = "";
 
    int flag = 0;
 
 
    int i = 0, j = 0;
 
    for (i = 0; inputString[i] != '\0'; i++) {
        for (j = 0; inputString[j] != '\0'; j++) {
            if (i != j && inputString[i] == inputString[j]) {
                flag = 1;
                break;
            }
        }
 
        if (flag == 0) {
 
            temporaryString[0] = inputString[i];
 
            strcat(finalString, temporaryString);
        }
 
        flag = 0;
    }
 
    printf("Final String : %s\n", finalString);
 
    return 0;
}
0
Shivaki
2 / 2 / 0
Регистрация: 10.03.2016
Сообщений: 61
29.03.2016, 23:10  [ТС] 3
А не могли бы вы про комментировать программу, я ж первокурсник маловато знаю)

Добавлено через 4 минуты
Не могли бы описать вашу программу? и при конмпеляции происходят ошибки: finalString: неизвестный размер, требуются константное выражение и невозможно выделить память для массива постоянного нулевого размера
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
30.03.2016, 09:42 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Shivaki,
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
#include <stdio.h>
int main()
{
    char s[80];
    int i = 0, j, k, m, flag = 0, xflag = 0;
    puts("Input line");
    fgets(s, 80, stdin);
    while(s[i]){
        if(s[i] != ' ' && flag == 0){
            flag = 1;
            k = i;
        }
        if(flag == 1 && (s[i] == ' ' || s[i] == '.' || s[i] == '\n' || s[i] == ',')){
            for(j = k; j < i - 1; j++){
                for(m = k + 1; m < i; m++){
                    if(s[j] == s[m] && j != m){
                        xflag = 1;
                    }
                }
            }
            if(xflag == 0){
                for(j = k; j < i; j++)
                    printf("%c",s[j]);
                printf(" ");
            }
            xflag = 0;
            flag = 0;
        }
        i++;
    }
    return 0;
}
Добавлено через 5 минут
Kotik_leapold,
Цитата Сообщение от Shivaki Посмотреть сообщение
нельзя использовать два массива
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2016, 09:42

В каждой строке для всех слов, которые встречаются в строке больше одного раза, оставить только первое вхождение
Народ, помогите Нужно в каждой строке для всех слов, которые встречаются в строке больше одного...

Создать программу, которая в символьной строке оставляет только те слова, в которых есть повторяющиеся символы
Помогите создать программу, которая в символьной строке оставляет только те слова, в которых есть...

Посчитать в строке количество слов, состоящих только из разных букв
Помогите пожалуйста разобраться.. Дано задание написать программу на С, которая считает в строке...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru