Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/88: Рейтинг темы: голосов - 88, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 11.01.2017
Сообщений: 17

Функция переворота строки

15.04.2018, 22:08. Показов 18408. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь написать функцию, переворачивающую строку, но что-то не получается.. куча ошибок, я не понимаю что от меня хотят, ПОМОГИТЕ ПОЖАЛУЙСТА!!!
файл с ошибками во вложении





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 "stdafx.h"
#include <string.h>
#include <string>
#include <iostream>
 
using namespace std;
 
string rev(string str[]) {
 
    int length = strlen(str);
    int temp, i, j;
    for (i = 0, j = length - 1; i < j; i++, j--) {
        temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }
    return str;
}
 
 
 
int main()
{
    string str[255];
    cin >> str;
    rev(str);
    cout << endl << str << endl;
 
 
    system("PAUSE");
 
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2018, 22:08
Ответы с готовыми решениями:

Функция переворота чисел
Как перевернуть цыфри долгого целого числа задом на перед тоесть если есть 123456789, то сделать с него 987654321?

Написать функцию переворота строки
не пайму, чего-то. вот есть страка, хачу перевирнуть, а ана не перевараичвается. остоётся старай. вот мой кот: #include...

Вопрос по поводу переворота строки и перегрузки << и >>
помогите пожалуйста с моими ошибками. Задание создать ф-цию переворота строки и переопределение &gt;&gt; и &lt;&lt; #pragma once ...

3
 Аватар для Cortas
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
15.04.2018, 22:31
Лучший ответ Сообщение было отмечено maslenkovas как решение

Решение

А зачем вам массив из 255 строк, разве одной не достаточно? Да и выводите вы только первую. Догадываюсь, что вы хотели создать массив символов на 255 элементов.
C++
1
char str[255];
Для переворачивания же объекта string, есть специальный одноименный метод этого класса:
C++
1
2
3
string str;
str = "Hello!";
str.revers();
Если же вам нужна функция для реверса строки типа char*, то вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
char* revers(char* str)
{
    int i = 0;
    while(str[i]) i++; //считаем длину строки
    for(int j = 0; j < i / 2; j++)
    {
       swap(str[j], str[i - j - 1]);
    }
     return str;
}
int main()
{
   std::cout << revers("!olleh");
   system("pause");
   return 0;
}
Добавлено через 10 минут
Upd: разве что нельзя посылать в функцию такого вида строки т.к. они некорректно инициализируют динамический массив char*, что приводит к ошибки доступа.
Стоит сделать следующие:
C++
1
2
char str[7] = "!olleH";
std::cout << revers(str);
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
16.04.2018, 02:05
как вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
char* Revers(char* str, int m)
{    
    for(int i = 0; i < m / 2; i++)    
    swap (str[i], str[m-1-i]);    
    return str;
}
 
int main()
{
   int m;    
   char str [256];
   cout << "String:\n";
   cin.getline(str, 256); 
   for (m = 0; str[m] != '\0'; m++);
   cout << Revers(str, m);
system("pause");
return 0;
}
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
07.05.2018, 19:15
maslenkovas, здравствуйте! Вот еще варианты:

Вариант 1:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
 
    using namespace std;
 
void f(const string& s) {
    for (int i = s.size() - 1; i >= 0; i--) {
        cout << s[i];
    }
}
 
int main() {
    string s;
    cout << "Enter a string:\n";
    getline(cin, s);
    f(s);
    system("pause");
    return 0;
}
Вариант 2:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
 
    using namespace std;
 
string f(const string& str) {
    string s;
    int i = -1;
    while (str[++i]) {
        s = str[i] + s;
    }
    return s;
}
 
int main() {
    string s;
    cout << "Enter a string:\n";
    getline(cin, s);
    cout << f(s) << "\n";
    system("pause");
    return 0;
}
Вариант 3:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
 
    using namespace std;
 
void f(char* s) {
    if (*s) {
        f(s+1);
        cout << *s;
    }
}
 
int main() {
    char str[255];
    cout << "Enter a string:\n";
    gets(str);
    f(str);
    system("pause");
    return 0;
}
Вариант 4:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
 
    using namespace std;
 
string f(string const& s) {
    if (s.size() <= 1)
        return s;
    return f(s.substr(1)) + s[0];
}
 
int main() {
    string str;
    cout << "Enter a string:\n";
    getline(cin, str);
    str = f(str);
    cout << str << "\n";
    system("pause");
    return 0;
}
И много других вариантов, которые можно придумать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2018, 19:15
Помогаю со студенческими работами здесь

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

Разработать программу «переворота» строки. Способ: последовательная перестановка элементов - первый с последним, второй с предпоследним и т.д.
Разработать программу «переворота» строки. Способ: последовательная перестановка элементов - первый с последним, второй с предпоследним...

Рекурсивная функция переворота строки
Помогите пожалуйста решить задачу: Дана символьная строка. Не используя циклы, реализовать рекурсивную функцию, печатающую символы...

Функция для "переворота" строки
Добрый день,уважаемые форумчане! Собственно необходимо создать свою функцию для &quot;переворота&quot; (вместо &quot;фыв&quot; -...

Функция переворота односвязного списка. Перевод с С++ на С
Есть функция переворота(был последним-стал первым) односвязного списка на C++, очень нужно переделать на С. Буду благодарен любой помощи) ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru