6 / 6 / 3
Регистрация: 16.12.2012
Сообщений: 31
1

Строковый тип. Перевернуть строку

13.12.2013, 23:49. Показов 2927. Ответов 2
Метки нет (Все метки)

Здраствуйте! Задача: ввести строку, перевернуть её, вывести полученную строку.
Задачу выполнил частично: переворачивается строка, содержащая не больше 2 слов, иначе - ошибка.
Собственно и вопрос вам: почему так получается? Как изменить код, чтобы можно было больше 2 слов ввести и не будет никакой ошибки?
Код:
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 "stdafx.h"
#include <iostream> 
 
using namespace std;
 
void reversit(char mas[]){
    int j=strlen(mas)-1; char buf; int i=0;
    do{
        buf= mas[i];
        mas[i]=mas[j];
        mas[j]=buf;
        i++;j--;
    } while (i!=j || i<j);
}
 
 
 
 
int main()
   {
setlocale(LC_ALL,"");
const int MAX=80;
char massiv[MAX];
cout << "Введите строку: ";
cin.get(massiv,MAX);
reversit(massiv);
 
cout <<endl<< massiv << endl;
    system("pause");
 return 0;
   }
Добавлено через 3 минуты
и вводимое второе слово не должно быть больше 3 символов, дабы избежать ошибки. Не понимаю почему так, прошу о помощи, спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2013, 23:49
Ответы с готовыми решениями:

с++ строковый тип (string)
ввести строку,содержащую число в троичной системе исчесления и напечатать его в 10 системе или -1...

Циклы. Строковый тип
В строке, состоящей из слов и знаков препинания (пробел . : , ! ?-;), найти слова, состоящие ровно...

дописать строковый тип данных в си++
допишите кто-нибудь программу, только полегче, с комментариями. Заранее спасибо.ТОЛЬКО БЕЗ...

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

2
162 / 158 / 62
Регистрация: 28.09.2013
Сообщений: 293
14.12.2013, 01:33 2
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>
 
void StringReverse(char *str)
{
    char tmp;
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++)
    {
        tmp = str[i];
        str[i] = str[len - i - 1];
        str[len - i - 1] = tmp;
    }
}
 
#define MAX_LEN 80
 
int main()
{
    setlocale(LC_ALL, "");
    char str[MAX_LEN];
    memset(&str, 0, sizeof(str));
    std::cin.get(str, MAX_LEN);
    std::cout << "Исходная строка: " << str << "\n";
    StringReverse(str);
    std::cout << "Перевернутая строка: " << str << "\n";
    system("pause");
    return 0;
}
1
6 / 6 / 3
Регистрация: 16.12.2012
Сообщений: 31
16.12.2013, 17:51  [ТС] 3
Yanush, спасибо, конечно, но с этим алгоритмом я работал, и его прекрасно понимаю и использую. А хотелось бы просто знать, почему мой алгоритм не работает..
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2013, 17:51
Помогаю со студенческими работами здесь

Описать в виде БНФ строковый тип с++
Описать в виде БНФ или диаграммы Вирта cтроковый тип языка С++. Подскажите пожалуйста. Я описал...

Как в консоли вывести строковый тип?
Стандартный поток вывода (cout) не может вывести переменную строкового типа (string). Вот...

еще одна задача на строковый тип
Дана строка символов, среди которых есть двоеточие (:). Определить, сколько символов ему...

Сравнение значении и вывод информации. Строковый тип
Помоги, где здесь ошибка? никак не пойму, что нужно прописать, чтобы сравнивались значения оценок у...


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

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

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