Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 10.11.2009, 13:34   #1 (permalink)
nick23
Новичок
 
Регистрация: 10.11.2009
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова

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

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

#include <stdio.h>

main(){
char ch, str1[50], str_full[225], sybmol[10];
int k,i=0,j;
/*Вводим строку, т.е пока не появится переход на новую '\n')*/
while((ch=getchar( )) != '\n') {
str1[i] = 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[i] != sybmol[j])
printf(str_full[i]);
j++;
}
}
}


не клонируй посты пожалуйста. модератор
nick23 вне форума   Ответить с цитированием

Старый 10.11.2009, 13:34
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Это ссылки на похожие топики, посмотрите

Слова вместо формул в Word`е
Что значат эти слова?
Найти и вывести слова-палиндромы. Delphi.

Старый 10.11.2009, 13:47   #2 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
Thumbs up

В программе очень много ошибок:
Код:
#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)Так далее, пока слова в строке не кончаться.

Последний раз редактировалось Long Cat; 10.11.2009 в 13:52
Long Cat вне форума   Ответить с цитированием
Старый 10.11.2009, 14:18   #3 (permalink)
nick23
Новичок
 
Регистрация: 10.11.2009
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Начинаю только изучать СИ. Не могли бы вы написать свой вариант этой программы, чтобы в дальнейшем синтаксические и алгоритмические ошибки не случались. Буду очень благодарен!!!
nick23 вне форума   Ответить с цитированием
Старый 10.11.2009, 14:22   #4 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

К сожалению, я довольно занят :-(.
Практикуйтесь, компилируйте. Пишите программу уступом, как у меня.
Задавайте вопросы.
Чтобы внешний вид программы не испортился при публикации на форуме, её нужно заключить в BB код
]CODE[
]/CODE[
Только скобки нужно развернуть.
Long Cat вне форума   Ответить с цитированием
Старый 17.11.2009, 22:24   #5 (permalink)
nick23
Новичок
 
Регистрация: 10.11.2009
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

#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[i]= ch;
i++;
}
k=i;
/*Выделяем первое слово*/
for(i=1; i<k-1; i++)
{
if(str[i]==' ')
break;
str1[i-1]=str[i];
}
l=i-1; //Длина первого слова
/*Перебираем символы в слове*/


getch();
}

Словарь из букв я получаю, а как перебирать слова и проверять есть ли в них эти буквы?
nick23 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:20.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.