Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Кэтрин   (06.10.2010 в 19:10)
мне нужно функцию job переписать с помощью указателей, я попыталась это сделать, но в указателях она не работает((( Задача состоит в том, что нужно сжать каждую строку, удалив из нее все символы, совпадающие с первым отличным от пробела символом исходной строки, а также лишние пробелы и символы табуляции.Полученную строку вывести на экран!
вот работающая программа --->
# include <iostream>
# include <string.h>

using namespace std;

const char* found (const char* p)
{
while (*p==' ' || *p=='\t')
++p;
return p;
}

char* job (const char *src, char *rez)
{
if (char k = (found(src))[0])
{
int l = 0;
int fl = 0;
for (int i = 0; i < strlen(src); ++i)
{
if (src[i]!= k && src[i] != ' ' && src[i]!= '\t' && src[i] != '\0')
{
rez[l] = src[i];
l += 1;
}

if (src[i] != ' ')
fl =0;

if (src[i] == ' ')
{
if (fl == 0)
{
rez[l] = src[i];
l += 1;
}
fl++;
}
rez[l] = '\0';
}
return rez;
}

else
*rez = '\0';
}

int main ()
{
char str1[80], str2[80];
while (cout << "Enter: \n", cin.getline(str1,80))
{
cout << "Sourl string: \n" << '"' << str1 << '"' << endl;
cout << "Result string: \n" << '"' << job (str1, str2) << '"' << endl;
}
return 0;

но переписав функцию job с помощью указателей, программа оказывается не работающей( помогите понять в чем проблема?
переписанная программа --->
# include <iostream>
# include <string.h>

using namespace std;

const char* found (const char* p)
{
while (*p==' ' || *p=='\t')
++p;
return p;
}


char* job (const char *src, char *rez)
{
if (char k = (found(src))[0])
{
int fl = 0;
while (*(src = found (src)))
{
if (*src != k && *src != ' ' && *src != '\t' && *src != '\0')
{
*rez = *src;
*rez++;
}

if (*src != ' ')
fl =0;

if (*src == ' ')
{
if (fl == 0)
{
*rez = *src;
*rez++;
}
fl++;
}
*rez = '\0';
}
return rez;
}

else
*rez = '\0';
}

int main ()
{
char str1[80], str2[80];
while (cout << "Enter: \n", cin.getline(str1,80))
{
cout << "Sourl string: \n" << str1 << endl;
cout << "Result string: \n" << job (str1, str2) << endl;
}
return 0;
}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: