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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2009, 01:53   #1
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
Восклицание Удаление символа из строки

Не могу сделать, не могу удалить символ из строки. (среда BC++ v3.1, другую нельзя)

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

Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
char s[50],b[50],v[50];
char* st;
int i,ln,j,n;
main()
{
clrscr();
  cout<<"Vvedite predlogenie: ";
  gets(s);
  //cout<<"\n\n"<<s;
  ln=strlen(s);
  cout<<"\n\n";

  while (s[i]!='.')
    {
     if (s[i]!=s[i+1])
	      {
	       b[i]=s[i]; //cout<<s[i];
	      }
     i++;
    }
   // cout<<".";
  cout<<"\n\nRezyltat- "<<b;
getch();
return 0;
}
если убрать из комментов cout то выводится правильная строка, но я не могу ее сконкатенировать! Еще нужно подобную задачку решить, но там надо удваивать заданый символ. Заранее благодарю за помощ.
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Старый 06.11.2009, 02:33   #2
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Цитата:
strcat Добавляет копию string2 в конец строки
string1. Прикладная программа ответственна
за то, что в строке имеется достаточно прост-
ранства для размещения результата. Функция
возвращает string1.
Код:
char *strcat(char *string1, const char *string2);
Не понял, в чем собственно вопрос, в конкатенации или в алгоритме выполнения?
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.

Последний раз редактировалось SunKnight; 06.11.2009 в 02:35.
SunKnight вне форума Ответить с цитированием
Старый 06.11.2009, 02:41   #3
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

Да и в том и в другом наверное... да, я знаю о strcat. но ведь в программе s[i] - не строка, а символ. вот в чем соль..
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Старый 06.11.2009, 04:19   #4
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Код:
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define SIZE 50

int main(void)
{
    char string[SIZE] = "";
    char changeString[SIZE] = "";
    char *lString;    
    puts("Enter string: ");
    lString = gets(string);
    do {
      if (*lString != '\040' && *lString != '\056')
         strncat(changeString, lString, 1);
    }while(*(lString++)!='.');
    printf("\nChange string: %s;", changeString);
    getch();
    return 0;
}
Вот удаление пробелов, а дальше уже сами.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 06.11.2009, 11:33   #5
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

а я сделал так. работает! раскритикуйте, может можно иначе?

Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
char s[50],b[50]="",v[50];
char* st;
int i,ln,j,n,k;
main()
{
clrscr();
  cout<<"Vvedite predlogenie: ";
  gets(s);
  //cout<<"\n\n"<<s;
  ln=strlen(s);
  cout<<"\n\n";
  i=k=0;
  while (s[i]!='.')
    {
     if (s[i]!=s[i+1])
	      {
	       b[k]=s[i];
	       k++;
	       i++;
	      }
	   else
	     {
	       b[k]=s[i];
	       k++;
	       i=i+2;
	     }
    }
  cout<<"\n\nRezyltat- "<<b;
  cout<<".";
getch();
return 0;
}
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и удаление символа в строке Karl_Karlovi4 Общие вопросы Delphi 14 26.10.2011 18:04
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Удаление символа в строке Fantom Общие вопросы Delphi 2 23.06.2008 16:03
Удаление символа в ячейке Flangini Microsoft Office Excel 2 05.05.2008 14:02
удаление символа окончания строки Xozer SQL, базы данных 1 07.02.2008 12:19