15 / 15 / 4
Регистрация: 11.04.2013
Сообщений: 181
1

Перевернуть строку

12.10.2016, 09:41. Показов 2007. Ответов 5
Метки нет (Все метки)

Написать функцию, которая переставляет символы строки по принципу обмена первого и последнего, второго и предпоследнего и т.д.

Написал так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void reverse()
{
   char b;
   int l=strlen(str);
 for (int i=1; (l/2); i++)
 {
   b=str[i];
   str[i]=str[l-i+1];
   str[l-i+1]=b;
 }
   printf("Perevernutaya stroka:\n");
   cout << str<< endl;
}
Не работает.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2016, 09:41
Ответы с готовыми решениями:

Перевернуть строку
Данн текст. Необходимо вывести его буквы в обратном порядке. типо ввожу &quot;первое предложение&quot;, а...

Перевернуть строку
всем привет! помогите, плиз: Введённую с клавиатуры строку А записать в обратном порядке в...

Перевернуть строку
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale(LC_ALL,...

Перевернуть строку
Написал программу которая переворачивает строку #include&lt;iostream&gt; #include&lt;cstring&gt; using...

5
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
12.10.2016, 09:52 2
Условие как следует запиши - где i?
0
Диссидент
Эксперт C
26955 / 16835 / 3700
Регистрация: 24.12.2010
Сообщений: 37,786
12.10.2016, 09:55 3
Цитата Сообщение от Rakot568 Посмотреть сообщение
str[i]=str[l-i+1];
При i=1 l-i+1 = l - выход за пределы массива
0
15 / 15 / 4
Регистрация: 11.04.2013
Сообщений: 181
12.10.2016, 10:04  [ТС] 4
Цитата Сообщение от Байт Посмотреть сообщение
str[i]=str[l-i+1];
При i=1 l-i+1 = l - выход за пределы массива
Если i=1, то str[1]=str[l] => в первый элемент записывается последний символ, или strlen считает и символ \0?
0
Диссидент
Эксперт C
26955 / 16835 / 3700
Регистрация: 24.12.2010
Сообщений: 37,786
12.10.2016, 10:07 5
Rakot568, str[strlen(str)] - это как раз терминальный ноль.
В массиве из k элементов последний индекс k-1
0
15 / 15 / 4
Регистрация: 11.04.2013
Сообщений: 181
12.10.2016, 16:17  [ТС] 6
"Спасибо" всем "знатокам", и тем, кто отвечает загадками.
Разобрался сам.
Происходило зацикливание и нужно было изменять for, а значение переменной-счетчика i увеличивать с 0, а не с 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
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
 
char str[30];
int l;
void reverse()
{
 printf("Vvedite stroku\n");
 cin.getline(str,sizeof(str));
 char b;
 l=strlen(str);
 for (int i=0; (i!=(l/2)); i++)
 {
   b=str[i];
   str[i]=str[l-(i+1)];
   str[l-(i+1)]=b;
  }
   printf("Perevernutaya stroka:\n");
   cout << str<< endl;
   getch();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2016, 16:17
Помогаю со студенческими работами здесь

Перевернуть строку
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale(LC_ALL,...

Перевернуть строку символов
Напишите программу, которая запрашивает строку символов, состоящую только из латинских букв, и...

Перевернуть строку, в чем ошибка?
Выполните переворот строки, написав её наоборот. #include &lt;iostream&gt; #include &lt;string&gt; using...

Перевернуть строку. В чем проблема?
#include &lt;iostream&gt; using namespace std; void swapstr(char* str) { for(int i=0;...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru