Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
150333
2 / 2 / 0
Регистрация: 18.10.2013
Сообщений: 107
#1

Как работает функция, которая переворачивает строку? - C++

17.02.2014, 19:16. Просмотров 790. Ответов 8
Метки нет (Все метки)

Объясните , как работает эта функция ,то что она переворачивает строку , это я понял , но вот как она это делает ?
Особенно не понятен сам цикл :
for(a2=0;a2<a1;a2++,a3--)
c[a2]=b[a3-1];
c[a2] = 0;

C++
1
2
3
4
5
6
7
8
9
10
11
void revers(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];
c[a2] = 0;
cout<<c;
}
Вот вся программа :
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 <stdio.h>
#include "stdafx.h"
#include <iostream>
using namespace std;
void revers(char [1000]);
int main ()
{setlocale(LC_ALL,"Rus");
cout<<"Введите строку :";
char a[1000];
cin.get(a,1000);
revers(a);
cin.get();
cin.get();
return 0;
}
void revers(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];
c[a2] = 0;
cout<<c;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 19:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как работает функция, которая переворачивает строку? (C++):

Функция, которая переворачивает строку - C++
Требуется написать функцию bool ReverseString (string &amp; sString) на С++, которая переворачивает строку sString (первая буква становится...

Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на перевёрнутую строку - C++
Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на перевёрнутую строку. Прототип функции инверсии...

Не пойму почему функция не переворачивает строку! - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void reversit(char word); int main() { const int MAX=80; int...

Написать функцию, которая переворачивает строку - C++
Написать функцию, которая переворачивает строку. Заголовок функции: void reverseStr (char *s); Написать программу, которая принимает от...

Написать функцию, которая переворачивает строку - C++
1) Напишите функцию, которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний...

Напишите функцию, которая переворачивает строку - C++
1) Напишите функцию, которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний...

8
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
17.02.2014, 19:21 #2
150333, перекладывает буквы из одного массива b в другой массив с, но берет последний символ из b кладет первым в с, предпоследний из b вторым в с и так далее по всему слову.
0
150333
2 / 2 / 0
Регистрация: 18.10.2013
Сообщений: 107
17.02.2014, 19:36  [ТС] #3
Цитата Сообщение от Enotniy Посмотреть сообщение
150333, перекладывает буквы из одного массива b в другой массив с, но берет последний символ из b кладет первым в с, предпоследний из b вторым в с и так далее по всему слову.
Это я понимаю , но как он это делает ?
Как понять этот цикл
C++
1
2
3
4
for(a2=0;a2<a1;a2++,a3--)
c[a2]=b[a3-1];
c[a2] = 0;
cout<<c;
Добавлено через 1 минуту
Что такое :
C++
1
a1,a2,a3;
И зачем идет это присвоение :
C++
1
2
a1=strlen(b);
a3=a1;
0
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
17.02.2014, 19:44 #4
C++
1
2
3
4
5
6
for(a2=0;a2<a1;a2++,a3--) // а2 бежит от нуля до длинны слова, выход когда а2 достигнет длинны слова
//а2++ увеличивает а2 на единицу, а3-- уменьшает а3 на единицу
//а3 бежит от длины слова к 0
c[a2]=b[a3-1]; // перекидываем букву
c[a2] = 0; // когда цикл закончится мы кладем в конец слова символ конца строки ("\0"==0)
cout<<c;//выводим на экран
Добавлено через 3 минуты
Цитата Сообщение от 150333 Посмотреть сообщение
int a1,a2,a3;
это объявление переменных, для "пробегания" а2 и а3, а1 - для длины слова
C++
1
2
a1=strlen(b); // кладём в а1 длину слова b
a3=a1; // задаем начальное значение а3 равное длине слова
0
Kuzia domovenok
2041 / 1886 / 172
Регистрация: 25.03.2012
Сообщений: 6,499
Записей в блоге: 1
17.02.2014, 19:46 #5
а2 проходит строку от начала до конца, а3 - от конца до начала
каждый шаг цикла выполняется лишь одно действие: c[a2]=b[a3]
т.е. Копирование с конца в начало!
0
150333
2 / 2 / 0
Регистрация: 18.10.2013
Сообщений: 107
17.02.2014, 19:50  [ТС] #6
А вот это зачем :
C++
1
2
a1=strlen(b);
a3=a1;
0
ustus_alex
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 118
Завершенные тесты: 1
17.02.2014, 19:54 #7
150333

C++
1
2
3
4
5
6
7
8
9
10
11
void revers(char b[1000]) // Определяем функцию с именем revers, которая ничего не возвращает
{  //в основную программу, и имеет входной параметр в виде массива типа char на 1000  элементов
int a1,a2,a3; // Определяем локальные переменные типа integer видимые только внутри функции revers
char c[1000]; // создаем массив с типа char, в который будет помещена инвертированная строка
a1=strlen(b); // определяем длинну строки(переданного в функцию массива b типа char)
a3=a1;
for(a2=0;a2<a1;a2++,a3--)
c[a2]=b[a3-1];
c[a2] = 0;
cout<<c;
}
Добавлено через 3 минуты
Цитата Сообщение от 150333 Посмотреть сообщение
А вот это зачем :
C++
1
2
a1=strlen(b);
a3=a1;
А, для того, что длинная строки может состоять из меньшего числа элементов, нежели 1000.
А, значит нам незачем инвертировать всю 1000 элементов в цикле.
0
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
17.02.2014, 20:09 #8
150333, вы читаете что вам пишут? спрашиваете то, на что вам уже написали ответ
0
150333
2 / 2 / 0
Регистрация: 18.10.2013
Сообщений: 107
17.02.2014, 20:56  [ТС] #9
ВСЕМ БОЛЬШОЕ СПАСИБО !
0
17.02.2014, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2014, 20:56
Привет! Вот еще темы с ответами:

Функция которая переворачивает список за один проход - C++
Написала функцию. Эта функция переворачивает список за один проход. Создаю новый список и в него поочередно записываю элементы,но в другом...

Написать функцию, которая переворачивает строку (массива типа char). - C++
Вот задание: Написать функцию reversit(), которая переворачивает строку (массива типа char). Используйте цикл for, которая меняет первый...

Напишите функцию, 1.которая переворачивает строку 2.вычисления корней квадратного уравнения - C++
ПОЖАЛУЙСТА ВЫРУЧИТЕ, ПОМОГИТЕ НАПИСАТЬ ПРОГИ: 1) Напишите функцию, которая переворачивает строку (массив типа char). Используйте цикл...

Написать и протестировать функцию, которая "переворачивает" строку, передаваемую ей в качестве параметра - C++
Написать и протестировать функцию,которая &quot;переворачивает&quot; строку,передаваемую ей в качестве параметра


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.