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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
hak555
0 / 0 / 0
Регистрация: 30.09.2011
Сообщений: 4
#1

Поменять местами 2 половины строки // С++ - C++

30.09.2011, 23:37. Просмотров 1413. Ответов 8
Метки нет (Все метки)

Всем привет.
Visual C++.
Задание: На входе строка. Необходимо разделить её на 2 равные части, и поменять их местами. Например "abcdefghijklmnopq" ->"jklmnopqabcdefghi"

Вот, что я написал:
Код
#include <stdio.h>
int main()
{
	int i=0,r=0;
	char s[50],k;

	printf("Vvedite stroku: ");
	scanf("%S",&s);
	printf("\n");

	r=strlen(s);
	for (i=0; i=r/2; i++)
		{
			k=s[i];
			s[i]=s[r-i];
			s[r-i]=k;
		}

	printf("Otvet: ",s,"\n");
}
По непонятной мне причине программа не работает. То есть запускается без ошибок, даёт возможность ввести первоначальную строку, выводит надпись "ответ", однако искомую строку (т.е. с уже переставленными половинками) не выводит.

Буду благодарен любой помощи в исправлении.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2011, 23:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять местами 2 половины строки // С++ (C++):

Столбцы левой половины массива поменять местами со столбцами правой половины - C++
Дан двумерный массив из четного числа столбцов. Столбцы левой половины массива поменять местами со столбцами правой половины

Столбцы левой половины матрицы поменять местами со столбцами правой половины - C++
Написать программу с выделением памяти для динамического массива с рандомными значениями. Условие: Дан двумерный массив из четного...

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

Поменять местами левую и правую половины матрицы - C++
Помогите с матрицей плс Matrix56. Дана матрица размера M × N (N — четное число). Поменять местами левую и правую половины матрицы.

Поменять местами первую и вторую половины массива - C++
Дан массив а, состоящий из 10 элементов. Поменять местами первую и вторую его половины

Поменять местами правую и левую половины матницы - C++
1. Сформировать квадратную матрицу порядка n × n по образцу вашего варианта задания. Размерность задать в виде именованной константы....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alkagolik
Заблокирован
30.09.2011, 23:43 #2
C
1
printf("Otvet: %s\n",s)
1
hak555
0 / 0 / 0
Регистрация: 30.09.2011
Сообщений: 4
30.09.2011, 23:46  [ТС] #3
Спасибо, но теперь почему-то в ответе выводится только первая цифра строки, причём не той, которую нужно найти, а исходной.
0
alkagolik
Заблокирован
30.09.2011, 23:49 #4
Цитата Сообщение от hak555 Посмотреть сообщение
C
1
2
3
4
5
for (i=0; i=r/2; i++) {
     k=s[i];
     s[i]=s[r-i];
     s[r-i]=k;
}
hak555, алгоритм проработайте, он неверный и выходит за границу массива.
0
x1Mike7x
217 / 130 / 6
Регистрация: 06.11.2010
Сообщений: 234
30.09.2011, 23:58 #5
C
1
2
3
4
...................
r=strlen(s) - 1;
for (i=0; i<r/2; i++)
....................
1
hak555
0 / 0 / 0
Регистрация: 30.09.2011
Сообщений: 4
01.10.2011, 00:53  [ТС] #6
Цитата Сообщение от x1Mike7x Посмотреть сообщение
C
1
2
3
4
...................
r=strlen(s) - 1;
for (i=0; i<r/2; i++)
....................
Насчёт "-1" да, тупка связана с недавним началом изучения С++, забыл, что с 0 начинается нумерация)
i<r/2 спасибо, очепятка вышла.

Но, к сожалению, программа всё также продолжает выдавать в ответе первый символ введённой строки...
0
alkagolik
Заблокирован
01.10.2011, 01:05 #7
Цитата Сообщение от hak555 Посмотреть сообщение
Но, к сожалению, программа всё также продолжает выдавать в ответе первый символ введённой строки...
покажите код, убедитесь что строка считывается
C
1
2
scanf("%s",&s);
printf("Otvet: %s\n",s);
0
hak555
0 / 0 / 0
Регистрация: 30.09.2011
Сообщений: 4
01.10.2011, 01:10  [ТС] #8
Регистр!!11 В сканф вместо строчной буквы после % написал заглавную. Всё никак не могу после паскаля привыкнуть к тому, что строчные и заглавные буквы это не одно и то же)
x1Mike7x, и, в особенности, alkagolik, спасибо огромное за помощь!

Выложу итоговый код, может кому-нибудь пригодится.

Код
#include <stdio.h>
int main()
{
	int i=0,r=0;
	char s[50],k;

	printf("Vvedite stroku: ");
	scanf("%s",&s);
	printf("\n");

	r=strlen(s)-1;
	for (i=0; i<r/2; i++)
		{
			k=s[i];
			s[i]=s[r-i];
			s[r-i]=k;
		}

	printf("Otvet: %s\n",s);
}
0
alkagolik
Заблокирован
01.10.2011, 01:42 #9
hak555, держите
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 <stdlib.h>
#include <string.h>
 
int main()
{
    int i = 0, r;
    char str[51], tmp[26] = {'\0'}, k;
 
    printf("Vvedite stroku: ");
    scanf("%s",&str);
 
    printf("\n");
    r=strlen(str);
 
    strncpy(tmp, str, r / 2);
    i = 0;
    while(str[i])
        str[i++] = str[i + r / 2];
 
    strcat(str, tmp);
    printf("Otvet: %s\n",str);
 
    return 0;
}
подкорректировал строку 14
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2011, 01:42
Привет! Вот еще темы с ответами:

Ввести число с клавиатуры поменять местами старшую и младшую половины - C++
Помогите пожалуйста в решении задачи на побитовую разработку программы на Си Ввести число с клавиатуры поменять местами старшую и...

В тексте поменять местами первую и вторую половины каждого слова - C++
Добрый день. Есть задачка: В тексте поменять местами первую и вторую половины каждого слова. Все слова в тексте состоят из четного числа...

Дан массив. Поменять местами его первую и вторую половины массива - C++
Дан массив. Поменять местами его первую и вторую половины массива... Пожалуйста решение очень легким методом) чтобы я понял код, т.к...

Поменять местами две половины очереди без использования дополнительной памяти - C++
поменять местами две половины очереди местами без использования дополнительной памяти(new)


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.10.2011, 01:42
Ответ Создать тему
Опции темы

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