Форум программистов, компьютерный форум CyberForum.ru

Функция и реверс строки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.78
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
19.04.2010, 19:29     Функция и реверс строки #1
1. Составить программу, которая реверсирует каждое слово строки str.
2. Написать и протестировать функцию STRP(str1, str2), которая возвращает указатель на последнее вхождение символа из строки str2 в строку str1. Если ни один символ строки str2 не входит в строку str1, то возвратить NULL.

Помогите написать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2010, 19:29     Функция и реверс строки
Посмотрите здесь:

Реверс строки C++
Реверс строки через итераторы C++
Реверс строки в стиле Си C++
C++ Не работает реверс строки
C++ Реверс строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hypafrag
 Аватар для Hypafrag
25 / 24 / 1
Регистрация: 19.03.2010
Сообщений: 57
19.04.2010, 19:42     Функция и реверс строки #2
1:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <string.h>
 
char *strrev(char *str)
{
int j = 0;
static char ret[256];
 
    for (int i = strlen(str) - 1; i >= 0; i--)
    {
        ret[j++] = str[i];
    }
    ret[j] = '\0';
    return ret;
}
 
int main()
{
char *p;
char str[256], str2[256] = "";
 
    gets(str);
    p = strtok(str, " ");
    while (p != NULL)
    {
        strcat(str2, strrev(p));
        p = strtok(NULL, " ");
        if (p != NULL) strcat(str2, " ");
    }
    puts(str2);
}
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
19.04.2010, 22:27  [ТС]     Функция и реверс строки #3
помогите со второй.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
20.04.2010, 01:42     Функция и реверс строки #4
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
помогите со второй
C++
1
2
#include <cstring>
char *strrchr(const char *str, int ch);
Добавлено через 6 минут
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
Составить программу, которая реверсирует каждое слово строки str.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
using namespace std;
 
void TurnStr(char *str)
{
      char tmp;
      int i=0;
      int size=0;
      for (size; str[size]!='\0'; size++);
      size--;
      while (i<=size)
      {
            tmp=str[i];
            str[i]=str[size];
            str[size]=tmp;
            size--;
            i++;
      }
}
 
int main()
{
    char st[20]="I like C++";
    TurnStr(st);
    cout<<st;
    return 0;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
20.04.2010, 05:01     Функция и реверс строки #5
2
C
1
2
3
4
5
6
7
8
9
char *strp(char *str, char ch)
{
   char *buf = NULL;
 
   for (; *str != '\0'; str++)
      if (*str == ch)
         buf = str;
   return buf;
}
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
20.04.2010, 05:50     Функция и реверс строки #6
PointsEqual, не всю, строку а каждое слово, т.е. я предполагаю, что из "I like C++" получится "I ekil ++C", а не "++C ekil I"...
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
20.04.2010, 20:52  [ТС]     Функция и реверс строки #7
А можете объяснить вторую задачу, что нужно в ней делать. А то я не могу понять, каким боком мне прикрутить функцию, и что она должна выполнять в мэйне. Заранее спасибо, пока что набросал так, но это лажа:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
 
char *strp(char *, char)
 
int main()
{
char str[256];
 
    gets(str);
strtp(str);
}
 
char *strp(char *str, char ch)
{
   char *buf = NULL;
 
   for (; *str != '\0'; str++)
      if (*str == ch)
         buf = str;
   return buf;
}
Добавлено через 5 часов 7 минут
Объяснение ещё нужно.
Бо
 Аватар для Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
20.04.2010, 21:27     Функция и реверс строки #8
Bloodykeeper, не знаю мож покатит,тут у ся нашел
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<stdio.h>
#include<conio.h>
int STRP(char str1[],char str2[]);
int main()
{int k;
 char s1[20],s2[20];
 puts("введите первую строку");
 gets(s1);
 puts("введите вторую строку");
 gets(s2);
 k=STRP(s1,s2);
 if (k==0)
 puts("вхождений небыло");
 else
 printf("первое вхождение %d",k);
 getch();}
int STRP(char str1[],char str2[]);
 int i,n,k[20],r=1,min,s;
 char l,c=str2[1];
 for(i=1;c!='\0';++i)
 {l=str1[1]
 while(l!='\0')
 {if (str2[i]==str1[j]) 
{k[r]=j;
  l='\0';
  ++r}
  l=str1[j];}
  c=str2[i];}
  min=k[1];
  for(i=2;i<=r-1;++i)
  if (min>k[i]) 
  min=k[i];
  return(min);}
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
21.04.2010, 20:51  [ТС]     Функция и реверс строки #9
помогите исправить предыдущий код пожалуйста, или создать нормальный на Си...а то нифига не работает. Заранее спс.

Добавлено через 6 минут
или вот я что-то склеил, но не пойму как она работает, всё время пишет, что ничего не входило:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<stdio.h>
#include<conio.h>
 
char *strp(char *, char);
 
int main(){
    int k;
    char s1[20],s2[20];
    puts("Enter the first string: ");
        gets(s1);
    puts("\nEnter the second string: ");
        gets(s2);
    k=strp(s1,s2);
    if (k==0)
        puts("Nothing entered!");
    else
        printf("First enter is %d",k);
    getch();
}
 
char *strp(char *str, char ch)
{
   char *buf = NULL;
 
   for (; *str != '\0'; str++)
      if (*str == ch)
         buf = str;
   return buf;
}
помогите пожалуйста понять задачу..
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
22.04.2010, 04:43     Функция и реверс строки #10
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char str[20] = {'\0'}, ch;
char *tmp;
printf ("Введите строку: ");
gets(str);
printf("Введите символ: ");
getc(ch);
if ((tmp = strp(str, ch)) == NULL)
   printf("Строка \"%s\" не содержит символ \'%c\'\n", str, ch);
else
{
   printf("Символ \'%c\' в строке \"%s\" будет заменен на символ \'#\'\n", ch, str);
   *tmp = '#';
   printf("%s\n", str);
}
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
22.04.2010, 08:40  [ТС]     Функция и реверс строки #11
Спасибо, но пишет вот такой олг ошибок, в чем может быть причина?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
Compiling...
Text1.c
P:\@_AиП\Задание 4\3\Text1.c(12) : error C2223: left of '->_cnt' must point to struct/union
P:\@_AиП\Задание 4\3\Text1.c(12) : error C2223: left of '->_ptr' must point to struct/union
P:\@_AиП\Задание 4\3\Text1.c(12) : warning C4047: 'function' : 'struct _iobuf *' differs in levels of indirection from 'char '
P:\@_AиП\Задание 4\3\Text1.c(12) : warning C4024: '_filbuf' : different types for formal and actual parameter 1
P:\@_AиП\Задание 4\3\Text1.c(22) : error C2143: syntax error : missing ';' before 'type'
P:\@_AиП\Задание 4\3\Text1.c(26) : error C2105: '++' needs l-value
P:\@_AиП\Задание 4\3\Text1.c(28) : error C2065: 'buf' : undeclared identifier
P:\@_AиП\Задание 4\3\Text1.c(28) : warning C4047: '=' : 'int ' differs in levels of indirection from 'char *'
Error executing cl.exe.
 
Text1.obj - 5 error(s), 3 warning(s)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2010, 11:59     Функция и реверс строки
Еще ссылки по теме:

Реверс строки в обратно алфавитном порядке C++
C++ Сделать реверс строки и каждый четвёртый символ выкинуть

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
22.04.2010, 11:59     Функция и реверс строки #12
Допустил ошибку в 6 строке, правильно ch = getc(stdin);
Полный вариант:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
char *strp(char *str, char ch)
{
   char *buf = NULL;
 
   for (; *str; str++)
      if (*str == ch)
         buf = str;
   return buf;
}
 
int main(int argc, char* argv[])
{
   char str[80] = {'\0'};
   char ch;
   char *tmp;
 
   printf("Ââåäèòå ñòðîêó: ");
   gets(str);
   printf("Ââåäèòå ñèìâîë:");
   ch = getc(stdin);
   if ((tmp = strp(str, ch)) == NULL)
      printf ("ÑòðîêГ* \"%s\" Г*ГҐ ñîäåðæèò ñèìâîë \'%c\'\n", str, ch);
   else
   {
      printf ("ÏîñëåäГ*ГЁГ© ñèìâîë \'%c\' Гў ñòðîêå \"%s\" áóäåò Г§Г*ìåГ*ГҐГ* ñèìâîëîì \'#\'\n", ch, str);
      *tmp = '#';
      printf ("%s", str);
   }
   getchar();
   getchar();
   return 0;
}
Yandex
Объявления
22.04.2010, 11:59     Функция и реверс строки
Ответ Создать тему
Опции темы

Текущее время: 19:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru