Форум программистов, компьютерный форум CyberForum.ru

Что выполняет эта часть программы? - C++

Войти
Регистрация
Восстановить пароль
 
katrina0811
0 / 0 / 0
Регистрация: 20.12.2011
Сообщений: 11
09.01.2012, 19:12     Что выполняет эта часть программы? #1
Задача: Изменить порядок символов в строке S1 на обратный не используя других строк.
Код программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
void main () {
    char S1[30], temp;
    int i;
    cout<<"Input String S1:\n";
    cin>>S1;
    cout<<"\nThe Result: \n\n"<<strrev(S1)<<"\n\n";
    for(i=0;i<strlen(S1)/2;i++) {
        temp=S1[i];
        S1[i]=S1[strlen(S1)-i];
        S1[strlen(S1)-i]=temp;
    }
}
Что выполняет эта часть программы:
C++
1
2
3
4
5
for(i=0;i<strlen(S1)/2;i++) {
        temp=S1[i];
        S1[i]=S1[strlen(S1)-i];
        S1[strlen(S1)-i]=temp;
    }
 Комментарий модератора 
Используйте теги форматирования кода!


Почему в цикле for(i=0;i<strlen(S1)/2;i++) strlen(S1)/2 делится именно на 2?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2012, 19:12     Что выполняет эта часть программы?
Посмотрите здесь:

C++ что делает эта часть
C++ Объяснить, какие действия выполняет данный фрагмент программы
C++ обьясните структуру программы что выполняет каждая строчка
C++ парни нужно кое-что добавить (нужно что бы эта программа вычисляла среднее арифметическое чисел)
Что выполняет функция strlen()? C++
Как работает эта часть кода? C++
Объясните, что выполняет этот конструктор C++
C++ Что именно выполняет эта программа?
Разъяснить, что выполняет программа C++
C++ Что делает эта строка из программы применительно к входному потоку
Что значит эта конструкция C++
C++ Что выполняет эта строка: res.insert?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.01.2012, 19:16     Что выполняет эта часть программы? #2
Цитата Сообщение от katrina0811 Посмотреть сообщение
Что выполняет эта часть программы:
Обменивает 2 символа строки.
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.01.2012, 19:19     Что выполняет эта часть программы? #3
Цитата Сообщение от katrina0811 Посмотреть сообщение
Задача: Изменить порядок символов в строке S1 на обратный не используя других строк.
Именно этим она и занимается.

Добавлено через 1 минуту
Цитата Сообщение от katrina0811 Посмотреть сообщение
Почему в цикле for(i=0;i<strlen(S1)/2;i++) strlen(S1)/2 делится именно на 2?
Потому что символы обмениваются так: первый с последним, второй и с предпоследним и так далее. Таким образом, надо поменять длина строки / 2 символов.
-=ЮрА=-
Заблокирован
Автор FAQ
09.01.2012, 19:31     Что выполняет эта часть программы? #4
Цитата Сообщение от katrina0811 Посмотреть сообщение
Почему в цикле for(i=0;i<strlen(S1)/2;i++) strlen(S1)/2 делится именно на 2?
- нам нужно повернуть строку, т.е как было сказано выше
Цитата Сообщение от silent_1991 Посмотреть сообщение
символы обмениваются так: первый с последним, второй и с предпоследним и так далее.
Но если бы мы делали полный проход по строке а не до её серидины
Цитата Сообщение от katrina0811 Посмотреть сообщение
strlen(S1)/2
, то на второй половине опять вернули бы все символы в своё изначальное положение
См мнемосхему
abcdef
strlen - 6
strlen/2 - 3
i = 0
fbcdea
i = 1
fecdba
i = 3
fecdcba
Если бы пошли дальше снова получили abcdef
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9383 / 5433 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
09.01.2012, 19:50     Что выполняет эта часть программы? #5
Вот так поинтереснее будет
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
#include <stdio.h>
#include <string.h>
 
void buf_reverse(unsigned char * buf, size_t count){
    if ( count > 1 ){
        *buf ^= *(buf+count-1);
        *(buf+count-1) = *buf ^ *(buf+count-1);
        *buf ^= *(buf+count-1);
        buf_reverse(buf+1, count-2);
    }
}
 
char * str_reverse(char * str){
    buf_reverse((unsigned char*)str, strlen(str));
    return str;
}
 
int main(void){
    char buf[256];
    
    while ( printf("String: ") && scanf("%255[^\n]%*c", buf) == 1 )
        printf("Reverse: %s\n", str_reverse(buf));
    
    return 0;
}
Yandex
Объявления
09.01.2012, 19:50     Что выполняет эта часть программы?
Ответ Создать тему
Опции темы

Текущее время: 03:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru