• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова

  • Автор темы Автор темы nick23
  • Дата начала Дата начала

nick23

Ученик
Регистрация
10 Ноя 2009
Сообщения
4
Реакции
0
Баллы
0
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова

Дана последовательность символов, состоящая из слов. Удалить слова, которые содержат все повторяющиеся буквы первого слова, с сохранением структуры пробелов. Вывести на экран отредактированный текст или сообщение «Нет», если удаление слов не было.

Я вот тут набросал кое-что, но в конце надо удалять не символы, а слова, не знаю как, помогите кто знает, очень нужно !!!
Заранее благодарен !!!

#include <stdio.h>

main(){
char ch, str1[50], str_full[225], sybmol[10];
int k,i=0,j;
/*Вводим строку, т.е пока не появится переход на новую '\n')*/
while((ch=getchar( )) != '\n') {
str1 = ch;
i++;
}
/* заносим в массив всю строку*/
str_full[255] = ch;
putchar(ch);
/*перебираем первое слово и если в нем есть одинаковые буквы создаем массив sybmol с этими буквами*/
for(k=0,k <= strlen(str));
k++;
{
while(k <= (strlen(str)-1)) {
if (str[k] == str[k+1]){
sybmol[10] = str[k];
}
}
}
/* перебираем всю строку и печатаем только те символы, которые не равны повторяющимся символам*/
for(i = 0;i <= strlen(str_full);i++) {
int j = 0;
while(j <= (strlen(sybmol))) {
if (str_full != sybmol[j])
printf(str_full);
j++;
}
}
}


не клонируй посты пожалуйста. модератор
 
В программе очень много ошибок:
Код:
#include <stdio.h>

main()
{
    char ch, str1[50], str_full[225], sybmol[10];
    int k,i=0,j;
    /*Вводим строку, т.е пока не появится переход на новую '\n')*/ // для всего этого есть fscanf("%s",str1)
    while((ch=getchar( )) != '\n') 
    {
      str1[i] = ch;
      i++;
    }

      /* заносим в массив всю строку*/
     str_full[255] = ch; // это не запись строки в массив, а присваивание 255 элементу (которого даже в массиве нет), значения переменной ch
     putchar(ch); //а это зачем?
    /*перебираем первое слово и если в нем есть одинаковые буквы создаем   массив sybmol с этими буквами*/
    for(k=0,k <= strlen(str)); // цикл без тела //переменная str не определена
    k++;
    {
       while(k <= (strlen(str)-1)) 
      {
         if (str[k] == str[k+1])
         {
             sybmol[10] = str[k];
         }
      }
    }
        /* перебираем всю строку и печатаем только те символы, которые не равны повторяющимся символам*/
      for(i = 0;i <= strlen(str_full);i++) 
      {
           int j = 0;
           while(j <= (strlen(sybmol))) 
           {
               if (str_full[i] != sybmol[j])
               printf(str_full[i]);
               j++;
          }
      }
}
Идея такая:
1)Создаем словарь из букв.
2)Берем второе слово из строки, проверяем, есть ли в нем буквы из словаря. Если буквы есть, слово пропускаем. Букв нет - добавляем слово в выходную строку.
3)Так далее, пока слова в строке не кончаться.
 
Последнее редактирование:
Начинаю только изучать СИ. Не могли бы вы написать свой вариант этой программы, чтобы в дальнейшем синтаксические и алгоритмические ошибки не случались. Буду очень благодарен!!!
 
К сожалению, я довольно занят :-(.
Практикуйтесь, компилируйте. Пишите программу уступом, как у меня.
Задавайте вопросы.
Чтобы внешний вид программы не испортился при публикации на форуме, её нужно заключить в BB код
]CODE[
]/CODE[
Только скобки нужно развернуть.
 
#include <stdio.h>
#include <conio.h>
main(){
char ch, str[250],str1[25];
int k,i,j,l,n,imin;
/*Вводим строку строку, до тех пора пока не появится конец строки*/
i=1;
while((ch=getchar( )) != '\n')
{
str= ch;
i++;
}
k=i;
/*Выделяем первое слово*/
for(i=1; i<k-1; i++)
{
if(str==' ')
break;
str1[i-1]=str;
}
l=i-1; //Длина первого слова
/*Перебираем символы в слове*/


getch();
}

Словарь из букв я получаю, а как перебирать слова и проверять есть ли в них эти буквы?
 
Назад
Сверху