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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 22:15   #1
batonza
 
Регистрация: 02.10.2009
Сообщений: 3
По умолчанию Поправьте пожалуйста код

Нужно написать прогу, которая из определенной строки введеной в программе, удаляет слова после которых стоит знак препинания (вместе с самим знаком)

Вот мой код
Код:
#include <string.h>
#include <stdio.h>
#include <conio.h>
void main()
{
int dlin,i,bw,ew, h;
i=0;
char ch[1000], bh[1000];
clrscr();
strcpy( ch, "Razrabotka sposoba, realizacii postavlennoi zadachi." );
dlin=strlen(ch);
ch[dlin]=' ';
ch[dlin+1]='\0';
dlin+=1;
h=0;
i=0;
bw=0;
while(i<dlin)
{
        if (ch[i]=='.' || ch[i]==',' || ch[i]==':' || ch[i]==';' || ch[i]=='!' || ch[i]=='?' || ch[i]=='-') {
                while(ch[i]=' ') {
                 i--;
                 ew++;
                 delete(ch,bw-ew);
                }
          bw++;
         strncpy(bh,&ch[bw],ew-bw+1);
  };
 i++;
}
printf( "%s\n", bh );
getch();
}
Поправьте пожалуйста его
batonza вне форума Ответить с цитированием
Старый 03.10.2009, 01:39   #2
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

Код:
int i = 0, int j = 0;
while (i < strlen(ch))// или while (ch[i]!=0)
{
   if (ch[i]=='.' || ch[i]==',' || ch[i]==':' || ch[i]==';' || ch[i]=='!' || ch[i]=='?' || ch[i]=='-')
   {
      j = i;
      while(j < strlen(ch))// или while (ch[j]!=0)
      {
         ch[j] = ch[j++];
         // может здесь понадобится - j++;
      }
   }
   i++;
}
вроде так...может немнога и коряво...или надо немнога изменить, но суть такая вроде...
Olejik вне форума Ответить с цитированием
Старый 03.10.2009, 10:27   #3
batonza
 
Регистрация: 02.10.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Olejik Посмотреть сообщение
Код:
int i = 0, int j = 0;
while (i < strlen(ch))// или while (ch[i]!=0)
{
   if (ch[i]=='.' || ch[i]==',' || ch[i]==':' || ch[i]==';' || ch[i]=='!' || ch[i]=='?' || ch[i]=='-')
   {
      j = i;
      while(j < strlen(ch))// или while (ch[j]!=0)
      {
         ch[j] = ch[j++];
         // может здесь понадобится - j++;
      }
   }
   i++;
}
вроде так...может немнога и коряво...или надо немнога изменить, но суть такая вроде...
Если честно даже непонимаю какая из этого суть... не происходит ни удаления ни перезаписи
Код:
#include <string.h>
#include <stdio.h>
#include <conio.h>
void main()
{
char ch[1000];
clrscr();
strcpy( ch, "Razrabotka sposoba, realizacii postavlennoi zadachi." );
int i = 0, j = 0;
while /*(i < strlen(ch))*/ (ch[i]!=0)
{
  if (ch[i]=='.' || ch[i]==',' || ch[i]==':' || ch[i]==';' || ch[i]=='!' || ch[i]=='?' || ch[i]=='-')
   {
	 j = i;
	 while (ch[j]!=0)
	  {
		 ch[j] = ch[j++];
		 //j++;
	  }
   }
   i++;
}
printf( "%s\n", ch );
getch();
}
По этому получившемуся коду прога работает но никаких изменений со строкой не происходит, она остается такой же...
batonza вне форума Ответить с цитированием
Старый 03.10.2009, 11:05   #4
batonza
 
Регистрация: 02.10.2009
Сообщений: 3
По умолчанию

Если изменить в середине проги вот это место
Код:
while (ch[i]!=0)
  {
     сh[i] = ch[j++];
     //j++;
  }
получается
она удалит из данной строчки сам знак и все слова идущие далее...
а как бы сделать чтобы удалился сам знак и слово перед которым он стоит??
batonza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поправьте код, пожалуйста! Blondy Общие вопросы C/C++ 10 14.09.2009 01:47
Поправьте код!!! Klim Bassenger Microsoft Office Excel 15 27.05.2009 15:24
Поправьте пожалуйста код... Rymond Помощь студентам 4 26.04.2009 19:41
Поправьте код! Klim Bassenger Microsoft Office Excel 1 10.04.2009 15:46
Поправьте, пожалуста! liver1981 Общие вопросы C/C++ 14 28.03.2009 06:45