Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2009, 00:03   #1
vivo89
 
Регистрация: 13.11.2009
Сообщений: 7
Вопрос Удаление слов из строки С

Здравствуйте. Помогите пожалуйста выполнить задание, просто я только начал изучать программирование и не могу понять, как реализовать это: Дана строка, содержащая последовательность слов, разделенных пробелами. Необходимо удалить из строки все слова в которых есть заданная буква (строку и букву вводит пользователь). И удалять необходимо только слова в которых есть заданная буква, все остальные слова и пробелы необходимо оставить.
vivo89 вне форума Ответить с цитированием
Старый 13.11.2009, 10:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Такой вариант подойдет?
Код:
{
#include <iostream.h>
...
 char s[50]="Shine like your crazy diamonds",c='y';
 for (int i = 0; i<strlen(s); i++) {
  bool b=true;
  for (int k = i; (s[k]!=' ')&&(k<strlen(s)); k++) {
   if (s[k]==c) {
	  b=false;
	  break;
   }
  }
   int k = i;
   for (; (s[k]!=' ')&&(k<strlen(s)); k++) {
	if (b) {	cout<<s[k];}
   }
	cout<<s[k];i=k;

 }
 cin.get();
	return 0;
}
Только насчет ввода я не делал
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.11.2009, 14:53   #3
vivo89
 
Регистрация: 13.11.2009
Сообщений: 7
По умолчанию

Да, вариант подходит!Огромнейшее спасибо!
Но ты не мог бы еще немножко подправить, т.к. в конце выводится какой-то непонятный символ. Как его убрать???

Вот код который у меня получился:
Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main()
{
     int i,k,b;
     char s[80];
     char c[3];
     printf("Vvedite stroku:\n");
     for(i=0;(s[i]=getchar())!='\n'&&s[i]!=EOF;i++);
     s[i]='\0';
     printf("Vvedite simvol dlya poiska: ");
     fgets(c, 3, stdin);

     for ( i = 0; i<strlen(s); i++)
     {
           b=1;
	  for ( k = i; (s[k]!=' ')&&(k<strlen(s)); k++)
	  {
	       if (s[k]==c[0])
	       {
	            b=0;
		    break;
               }
          }
          k = i;
          for (; (s[k]!=' ')&&(k<strlen(s)); k++)
          {
               if (b)
	       {
	            printf("%c",s[k]);
	       }
          }
	  printf("%c",s[k]);
	  i=k;
     }
}
А вот это он выводит:
Изображения
Тип файла: jpg error.JPG (9.2 Кб, 87 просмотров)
vivo89 вне форума Ответить с цитированием
Старый 13.11.2009, 16:10   #4
MaGWaY_minsk
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 35
По умолчанию

Цитата:
Сообщение от vivo89 Посмотреть сообщение
А вот это он выводит:...
На мой взгляд при вводе нужно последующий элемент массива после последнего введённого элемента пометить маркером конца строки
MaGWaY_minsk вне форума Ответить с цитированием
Старый 13.11.2009, 22:13   #5
vivo89
 
Регистрация: 13.11.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от MaGWaY_minsk Посмотреть сообщение
На мой взгляд при вводе нужно последующий элемент ...
Нет, с вводом там всё нормально, а вот в одном из циклов он выполняется на 1 шаг больше.
Вот так всё работает:
Код:
 ..............   
          k = i;
          for (; (s[k]!=' ')&&(k<(strlen(s)-1)); k++)
          {
               if (b)
	       {
	            printf("%c",s[k]);
	       }
          }
	  printf("%c",s[k]);
	  i=k;
...............
Спасибо всем за помощь!
vivo89 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки в с++.(вывод слов с согласными буквами)) Луцк Помощь студентам 0 15.10.2009 23:00
Удаление слов из текста Gery Помощь студентам 24 22.09.2009 14:37
удаление одинаковых слов (С/С++) jewel Помощь студентам 1 12.12.2008 15:14
Текстовые файлы, преобразование строки(замена слов)) lusuj Помощь студентам 1 01.12.2008 16:58
Выделение слов из строки // Pascal Rifler Паскаль, Turbo Pascal, PascalABC.NET 4 02.07.2008 08:22