15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
1

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

04.07.2011, 15:22. Показов 108084. Ответов 11
Метки нет (Все метки)

Написал программу которая переворачивает строку


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
#include<iostream>
#include<cstring>
using namespace std;
void reversit(char [1000]);
int main ()
{setlocale(LC_ALL,"Rus");
cout<<"Введите вашу строку -->";
char a[1000];
cin.get(a,1000);
reversit(a);
cin.get();
cin.get();
return 0;
}
void reversit(char b[1000])
{int a1,a2,a3;
char c[1000];
a1=strlen(b);
a3=a1;
for(a2=0;a2<a1;a2++,a3--)
c[a2]=b[a3-1];
 
cout<<c;
 
 
}

Но вывод программы содержит мусорные значения. Как от них избавится ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2011, 15:22
Ответы с готовыми решениями:

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

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

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

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

11
Higher
1952 / 1218 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.07.2011, 15:30 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
void print_strrev( char * buf ){
    if (*buf) {
        print_strrev(buf + 1);
        std::cout << *buf;
    }
}
int main(){
    const int MAXSIZE = 128;
    char str[MAXSIZE];
    std::cin.getline(str, MAXSIZE);
    print_strrev(str);
    std::cout << std::endl;
    return 0;
}
Вам достаточно 22й строкой добавить
C++
1
c[a2] = 0;
1
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
04.07.2011, 16:41  [ТС] 3
Спасибо.
0
Эксперт С++
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
04.07.2011, 16:48 4
parkito,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
   std::string str = "test string";
   
   std::reverse(str.begin(), str.end());
   
   std::cout << str << std::endl;
 
   return 0;
}
5
Higher
1952 / 1218 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.07.2011, 17:06 5
с STL неинтересно >_<
C++
1
2
3
4
5
6
7
#include <iostream>
#include <algorithm>
#include <iterator>
int main(){
   std::string str("test string");
   copy(str.rbegin(),str.rend(),std::ostream_iterator<char> (std::cout));
}
0
Эксперт С++
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
04.07.2011, 17:13 6
Цитата Сообщение от diagon Посмотреть сообщение
с STL неинтересно >_<
Угу, скучновато..
0
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
21.09.2011, 22:39  [ТС] 7
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<iostream>
#include<vector>
#include <windows.h>
#include <string>
using namespace std;
 
 
int main ()
{setlocale(LC_ALL,"Rus");
char name [100000],name1[100000];
cout<<"Введите имя --> ";
SetConsoleCP(1251);
cin>>name;
SetConsoleCP(866);
int b=strlen(name);
for(int i=0;i<b;i++)
{name1[i]=name[b-i-1];}
for(int i=0;i<b;i++)
    cout<<name1[i];
cin.get();
cin.get();
return 0;
}
0
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 4
28.08.2012, 23:02 8
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
#include "stdafx.h"
#include <string>
#include <iostream>
#include <clocale>
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus ");
 
    std :: string szStr("тестовая строка");
    int iHalf_size = szStr.size()/2;
 
    std :: string :: reverse_iterator r_it = szStr.rbegin();
    
    for( std :: string :: iterator it = szStr.begin(); (szStr.end() - it) != iHalf_size; it++, r_it++)
    {
        char a = *it;
        *it = *r_it;
        *r_it = a;
    }
 
    std::cout << szStr << std::endl;
 
    getchar();
    return 0;
 }
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
33260 / 18531 / 3904
Регистрация: 12.02.2012
Сообщений: 31,131
Записей в блоге: 12
29.08.2012, 07:26 9
C STL действительно скучно...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
 
void RevStr(char* S,int l)
{
    char c;
    if (l > 1)
    {
      c=S[0];
      S[0]=S[l-1];
      S[l-1]=c;
      RevStr(S+1,l-2);
    }             
}       
 
int main(int argc, char* argv[])
{
    char S[12]="Test of pen";
    RevStr(S,11);
    cout << S << endl;
    return 0;
}
0
739 / 554 / 309
Регистрация: 24.02.2017
Сообщений: 1,951
26.03.2017, 23:46 10
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
#include <iostream.h>
 
char reverseString(char *str);
 
int main()
{
char str[128];
 
cin.get(str,128);
reverseString(str);
cout<<str<<"\n";
system("pause");
    return 0;
}
 
 
char reverseString(char *str)
  {
    char p[128];
 
    strcpy(p,str);
    int i=0, j=strlen(p)-1;
    while(i<=j+i)
     str[i++]=p[j--];
 
     return *str;
  }
1
0 / 0 / 0
Регистрация: 31.05.2018
Сообщений: 2
31.05.2018, 15:55 11
Вот самый отпимальный способ перевернуть строку



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstring>
using namespace std;
 
int main() 
{
   char str[80] = "My name is";
   for( int x = 1; x <= strlen(str); x++) 
   { 
       cout << str[ strlen(str) - x];
   } 
   return 0;
}
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
31.05.2018, 16:37 12
Ничего оптимального в нём нет. strlen в цикле вызывать не комильфо, да и не нужно.
Если хотите идти по индексам от конца в начало, то лучше написать так:
C++
1
for (int x = strlen(str) - 1; x >= 0; x--)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2018, 16:37
Помогаю со студенческими работами здесь

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

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

Не могу перевернуть строку
Пытаюсь реализовать алгоритм переворота строки, но не получается. Вот код: #include &lt;iostream&gt;...

Строковый тип. Перевернуть строку
Здраствуйте! Задача: ввести строку, перевернуть её, вывести полученную строку. Задачу выполнил...


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

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

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