Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 11.10.2018, 19:08   #31
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 38
Репутация: 10
По умолчанию

А как это менять на месте и почему мне не нужен дополнительный массив?
Если char str[6] = "123456" я не могу написать
Код:

for (int i = 0; i < 6; i++)
         str[i] = str[5 - i];

У меня получится char str[6] = "654456", ведь когда i дойдет до 3, первые три элемента уже будут переписаны.
Получается временный массив мне просто необходим для хранения первоначальной строки.
Sinli вне форума   Ответить с цитированием
Старый 11.10.2018, 20:03   #32
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,278
Репутация: 2073

icq: 216409213
По умолчанию

А если менять через переменную в один символ?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 11.10.2018, 20:39   #33
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 38
Репутация: 10
По умолчанию

Если можно использовать переменную в один символ, то можно этот способ.
Надо признать, менее громоздко.
Код:

void reverse_order (char * st)
{
        char ch;
        int n = strlen(st);
        int k = n - 1;
        for (int i = 0; i < (int) n / 2; i++)
        {
                ch = st[k - i];
                st[k - i] = st[i];
                st[i] = ch;
        }
        return;
}

На месте, это так?
Sinli вне форума   Ответить с цитированием
Старый 11.10.2018, 20:46   #34
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,278
Репутация: 2073

icq: 216409213
По умолчанию

Ретурн не надо писать для воида. И инт деленное на инт итак инт.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 11.10.2018, 20:57   #35
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 38
Репутация: 10
По умолчанию

Хорошо, окончательный вариант вот
Код:

#include <stdio.h>
#include <string.h>
void reverse_order(char * st);
char * s_gets(char * st, int n);
int main(void)
{
        char string[81];
        puts("Введите строку:");
        s_gets(string, 80);
        printf("Ваша строка: %s - имеет %zd символов.\n", string, strlen(string));
        reverse_order(string);
        if (string[0] != '\0')
        {
                printf("Кручу, верчу, запутать хочу: %s\n", string);
                puts("Спасибо за внимание");
        }
        else
                printf("Программа завершена\n");
        return 0;
}
void reverse_order (char * st)
{
        char ch;
        int n = strlen(st);
        int k = n - 1;
        for (int i = 0; i < n / 2; i++)
        {
                ch = st[k - i];
                st[k - i] = st[i];
                st[i] = ch;
        }
}
char * s_gets(char * st, int n)
{
        char * ret_val;
        int i = 0;
        ret_val = fgets(st, n, stdin);
        if (ret_val)
        {
                while(st[i] != '\n' && st[i] != '\0')
                        i++;
                if(st[i] == '\n')
                        st[i] = '\0';
                else
                        while (getchar() != '\n')
                                continue;
        }
        return ret_val;
}

Насчет return для void.
Его именно не надо, или он не приветствуется в коде? Или смысла в нем нет?
Sinli вне форума   Ответить с цитированием
Старый 11.10.2018, 21:30   #36
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,278
Репутация: 2073

icq: 216409213
По умолчанию

Вы можете сделать return в void функции, например, чтобы выйти по условию раньше конца функции. Но ставить его в конце функции с одной стороны ничего не добавит, а с другой у некоторых читающих код глаз может зацепиться и они начнут думать, а не забыли ли что-то вернуть и т.д.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 11.10.2018, 21:51   #37
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 38
Репутация: 10
По умолчанию

Хорошо, большое спасибо за терпение))
Sinli вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с указателями. Sinli Общие вопросы C/C++ 2 04.10.2018 23:47
Помогите пожалуйста разобраться с указателями? седьмой Общие вопросы C/C++ 20 18.04.2017 08:26
помогите разобраться с указателями С++ sasha_14-88 Общие вопросы C/C++ 1 07.12.2014 11:39
Помогите разобраться с указателями igole Общие вопросы C/C++ 1 28.04.2013 16:47
Товарищи, помогите разобраться с указателями scibern Общие вопросы C/C++ 7 11.01.2009 13:28


22:06.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru