Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> !!!HELP!!! строки и извращения над ними:) 
:(
    Опции темы
Doc_d0s
  Дата 26.2.2005, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 15.12.2004
Где: в кресле

Репутация: 2
Всего: 3



Я целую недел напрягал своё серое вещество smile , и так не могу написать ф-ию для:
1.Выделения слова из текста(!)
2.Удаления средней буквы в слове с нечётной длиной
3.Записать все в массив со знаками пунктуации-одним словом разделителями
вот, всё должно быть в одной ф-ии
есть ф-ия,я не могу понять почему...:
Код

void ChangeText(char *a)
{
char *chText=new char[strlen(a)+1];
char st[255],ch,*delimiters="~`!@#$%^&*()_-+=|\\   /,<.>\?\"\';:[]{}¹\t\n\0";
int k=-1,i=0;
for(i=0;i<strlen(a);i++)
{
 ch=a[i];
 if(strstr(delimiters,&ch)) //.....тут она не понимает пробел как символ!?
 {
  if(k!=-1)
  {
   k++;
   st[k]='\0';
   if(strlen(st)%2)
   {
    for(int j=((int)(strlen(st)/2)); j<(int)strlen(st);j++)
     st[j]=st[j+1];
   }
   st[strlen(st)]=ch;
   st[strlen(st)+1]='\0';
   strcpy(chText,st);
   k=-1;
  }
  else
  {
   strcpy(chText,&ch);
  }
 }
 else
 {
   k++;
   st[k]=ch;
 }

}
}


Памагите ПЛЗ!!!

Это сообщение отредактировал(а) Doc_d0s - 27.2.2005, 21:42
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
chipset
Дата 26.2.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Модератор: Название темы должно отражать ее суть!


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Doc_d0s
Дата 26.2.2005, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 15.12.2004
Где: в кресле

Репутация: 2
Всего: 3



Я конечно прошу прощения, но иначе в мою голову нчего кроме НЕLP не лезло smile
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
Goryachev
Дата 27.2.2005, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 23.2.2005
Где: Израиль

Репутация: нет
Всего: нет



Короче работает.
Код

char* ChangeText(char* a)
{
char *chText=new char[strlen(a)+1];
char st[255],*start,*end;
char *delimiters="~`!@#$%^&*()_-+=|\\ /,<.>\?\"\';:[]{}?\t\n";
chText[0]='\0';
while (*a)
{
 start=a;
 for (;strchr(delimiters,*a)&&*a;a++);
 strncpy(st,start,a-start); //copy delimeters
 st[a-start]='\0';
 strcat(chText,st);         // adding delimeters
 start=a;
  for (;!strchr(delimiters,*a)&&*a;a++);
  strncpy(st,start,a-start); //copy word
  st[a-start]='\0';
  int len=strlen(st);
  if (len%2) //if the string is of odd size
  {
   start=st+len/2;
   for (;*start;start++) // removing the middle char
     *start=*(start+1);
  }
  strcat(chText,st); // adding appropriate word
}
return chText;
}



Только не забудь освободить память chText.

Это сообщение отредактировал(а) Goryachev - 27.2.2005, 19:15
PM MAIL   Вверх
Doc_d0s
Дата 27.2.2005, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 15.12.2004
Где: в кресле

Репутация: 2
Всего: 3



Всем большой пасиб, я уже написал программу сам smile Кому интересно вот код:
Код

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define dataEr  printf("\t\t\t\t!!!ERROR!!! \n\n\t\tFILE IS EMPTY or no match symbolyc information!\n\n")
#define FileEr  printf("\t\t\t\t!!!ERROR!!! \n\n\t\tNo such fiLe or DirEctOry\n\n")
#define QUIT printf("\nDo you want to close this program?(y/n)\t"); if( getche()=='y' ) {printf("\n");exit(0);}

long filesize(char*s);
int EnterText(char*a,char *s);
void OutText(char *p);
void ChangeText(char*a);


int main()
{

while(1)
{
 system("cls");
 long a=filesize("C:\\f.dat");
 char *text=new char[a];
 if(EnterText(text,"C:\\f.dat")!=0)
 {
  OutText(text);
  getch();
  system("cls");
  ChangeText(text);
  delete [](text);
  QUIT;
 }
 else
  exit(0);
}
getch();
return 0;
}

long filesize(char*s)
{
 FILE*stream;
 long k=0;
  if((stream=fopen(s,"r"))!=NULL)
  {
 while(!feof(stream))
 {
  fgetc(stream);
  k++;
 }
 return k;
  }
  else
  {
   FileEr;
   return 0;
  }
 
}

int EnterText(char *a, char *s)
{
 FILE*f;
 long k;
 if((f=fopen(s,"r"))!=NULL)
 {
  if((k=(filesize(s)))==0)
   dataEr;
  fseek(f,0L,SEEK_SET);
  for(int i=0;!feof(f);i++)
  {
   a[i]=fgetc(f);
  }
  a[k-1]='\0';

 
  fclose(f);
 }
 else
 {
  FileEr;
  exit(0);
 }
 return 1;
}

void OutText(char *p)
{
printf("%s ",p);
}

void ChangeText(char *a)
{
char *delimiters=" ~`!@#$%^&*()_-+=|\\ /,<.>\?\"\';:[]{}¹\t\n\0";
char *str=new char [strlen(a)+1];
char *st=new char [strlen(a)+1];
char ch[2];
int k=-1;

str[0]='\0';
st[0]='\0';
ch[1]='\0';
for(int i=0; i<strlen(a); i++)
{
 ch[0]=a[i];
 if(strchr(delimiters,ch[0]))
 {
  if(k!=-1)
  {
   k++;
   str[k]='\0';
   if(strlen(str)%2)
   {
    for(int j=(int)strlen(str)/2;j<strlen(str)-1;j++)
     str[j]=str[j+1];
    str[k-1]=ch[0];
    str[k]='\0';
    strcat(st,str);
   }
   else
   {
    str[k]=ch[0];
    str[k+1]='\0';
    strcat(st,str);

   }
   k=-1;
   str[0]='\0';
  }
  else
  {
   strcat(st,ch);
  }

 }
 else
 {
  k++;
  str[k]=ch[0];
 }
}
OutText(st);
delete[](st);
delete[](str);
}


smile smile
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0934 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.