1 / 1 / 1
Регистрация: 30.12.2014
Сообщений: 30
1

Переписать все слова, которые состоят из строчных букв латинского алфавита

24.02.2015, 20:51. Показов 2109. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет , помогите пожалуйста с заданием :
Переписать все слова, которые состоят из строчных букв латинского алфавита, и в составе которых нет повторяющихся символов.(Мне нужно из строки s1 переписать слова, которые состоят из строчных букв латинского алфавита, и в составе которых нет повторяющихся символов в сроку s2 . Пример дана строка s1 = "mama papa semiy" и мне надо , чтобы в строку s2 переписывались те слова, в которой не повторяется символ то есть s2=''semiy"(semiy- это как бы слово семья ))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2015, 20:51
Ответы с готовыми решениями:

Переписать в новую строку все слова, которые содержат буквы только латинского алфавита
Переписать в новую строку все слова, которые содержат буквы только латинского алфавита

Переписать в новый файл все слова, которые содержат только буквы латинского алфавита.
Переписать в новый файл все слова, которые содержат только буквы латинского алфавита. program k;...

В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются.
В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются.

Дан текст из строчных и заглавных букв латинского алфавита. Заменить все строчные буквы заглавными, а заглавные - строчными
Дан текст из строчных и заглавных букв латинского алфавита. Заменить все строчные буквы заглавными,...

6
6044 / 2159 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.02.2015, 14:54 2
Лучший ответ Сообщение было отмечено Kakady как решение

Решение

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#define ENGLISH_ALPHABET_SIZE 26
 
int IsWordValid(const char* const word)
{
  int isWordValid = 1;
 
  size_t i = 0;
 
  if (word == NULL)
  {
    isWordValid = 0;
  }
  else
  {
    i = 0;
    while (i < strlen(word) && isWordValid)
    {
      isWordValid = !isupper(word[i]);
      i++;
    }
  }
 
  return isWordValid;
}
 
int WordHasRepeatingSymbols(const char* const word)
{
  int repeatingSymbolsExist = 0;
  int wordAlphabetStatistik[ENGLISH_ALPHABET_SIZE];
 
  size_t i = 0;
 
  if (word != NULL)
  {
    memset(&wordAlphabetStatistik, 0, sizeof(wordAlphabetStatistik));
    for(i = 0; i < strlen(word); i++)
    {
      wordAlphabetStatistik[word[i] - 'a']++;
    }
 
    i = 0;
    while (i < ENGLISH_ALPHABET_SIZE && !repeatingSymbolsExist)
    {
      if (wordAlphabetStatistik[i] > 1)
      {
        repeatingSymbolsExist = 1;
      }
      i++;
    }
  }
  
  return repeatingSymbolsExist;
}
 
int RetrieveString(const char* const s1, char* const s2)
{
  int errorCode = 0;  
 
  char* pch = NULL;
 
  if (s1 == NULL || s2 == NULL)
  {
    errorCode = 1;
  }
  else
  {
    if (strlen(s1) != 0)
    {
      strcpy(s2, "");
 
      pch = strtok(s1, " ");
      while (pch != NULL)
      {
        if (IsWordValid(pch) && !WordHasRepeatingSymbols(pch))
        {
          strcat(s2, pch);
          strcat(s2, " ");
        }
        pch = strtok(NULL, " ");
      }
      s2[strlen(s2) - 1] = '\0';
    }
  }
 
  return errorCode;
}
 
int main(void)
{
  int err = 0;
 
  char s1[128];
  char s2[128];
 
  strcpy(s1, "mama papa semiy");
  strcpy(s2, "");
 
  err = RetrieveString(s1, s2);
 
  if (err == 0)
  {
    printf("res = '%s'\n", s2);
  }
  else
  {
    printf("Error occured!\n");
  }
 
  return 0;
}
1
1 / 1 / 1
Регистрация: 30.12.2014
Сообщений: 30
25.02.2015, 15:11  [ТС] 3
Спасибо за помощь , а можете подскакать у меня при компиляции выдаёт ошибку

kf.cpp(76): error C2664: strtok: невозможно преобразовать параметр 1 из "const char *const " в "char *"
1> В результате преобразования теряются квалификаторы
0
6044 / 2159 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
25.02.2015, 15:40 4
Лучший ответ Сообщение было отмечено Kakady как решение

Решение

C
1
int RetrieveString(const char* const s1, char* const s2)
замените на
C
1
int RetrieveString(char* s1, char* const s2)
1
1 / 1 / 1
Регистрация: 30.12.2014
Сообщений: 30
26.02.2015, 11:35  [ТС] 5
Большое вам спасибо за помощь , но множите ещё раз помочь. Мне просто сказали переделать в другом виде :
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main(int argc, const char * argv[])
{
    char s1[] = "mama papa senmiy"  ;
    char s2[15] ;
    int i ;
    for (i = 1; i < strlen(&s1[0]); ++i) 
{for (тут мне надо цикл который будет проверять повт. и лат. буквы)
    if(тту что делать если)
    break ;
 
{
        strcpy(s2,s1) ;
    printf("%s\n", &s2[0]);
    printf("%s", &s1[0]);
        _getch();
    return 0;
}
(что-то в этом роде ,если я так понял)
0
6044 / 2159 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
26.02.2015, 11:39 6
Kakady, честно говоря я не понимаю, что именно и как вам сказали переделать.
0
1 / 1 / 1
Регистрация: 30.12.2014
Сообщений: 30
26.02.2015, 12:07  [ТС] 7
Спасибо что , уделяете мне свое время :
мне надо чтобы был цикл в цикле .Первый -это просмотр строки(s1) ,а второй нахождение одинакового символа ,если в слове встречаются одинаковые символы то это слово пропускается и ищется новое. Если нашлось такое слово где нет повторения переписать его в s2.
или можете исправить код :
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>
#include <string.h>
#include<conio.h> 
#include<windows.h> 
#include "stdio.h"
void delete_word(char *s1, int n) {
    int i;
    const int ln = strlen(&s1[0]);
    for (i = n; i < ln-1; ++i)
        s1[i] = s1[i+1];
    s1[ln-1] = ' ';
}
 
 
int main(int argc, const char * argv[])
{
    char s1[] = "mama papa senmiy"  ;
    char s2[15] ;
    int i ;
    for (i = 1; i < strlen(&s1[0]); ++i) {
        if (s1[i] == s1[i-1] && s1[i] != ' ') {
            delete_word(&s1[0], i);
            i--;
        }
    }
    
    strcpy(s2,s1) ;
    printf("%s\n", &s2[0]);
    printf("%s", &s1[0]);
   _getch();
    return 0;
}
у меня удаляет здесь только букву(повторяющеюся) которая стоит рядом например : дано "mmama ppapa senmiy"
, а получится "mama papa senmiy". А мне надо чтобы переписало (или удаляло ) , как у вас в ответе .
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2015, 12:07
Помогаю со студенческими работами здесь

Вывод кодов букв латинского алфавита прописных и строчных букв
Мой код с выводом кодов строчных букв: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main (void) {...

Вывести все слова, начинающиеся с прописных букв латинского алфавита
Дан текст. Вывести все слова,начинающиеся с прописных букв латинского алфавита. Добавлено через...

Вывести все слова, начинающиеся с согласных букв латинского алфавита.
Дан текст. Вывести все слова, начинающиеся с согласных букв латинского алфавита.

Вывести N последних строчных букв латинского алфавита
1. Дано целое число N(1&lt;=N&lt;=26). Вывести N последних строчных букв латинского алфавита. 2....


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

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

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