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

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

Войти
Регистрация
Восстановить пароль
 
BOR1K
14 / 14 / 4
Регистрация: 19.09.2009
Сообщений: 289
#1

Поменять местами строки, без цикла. - C++

26.01.2010, 12:33. Просмотров 816. Ответов 10
Метки нет (Все метки)

Дано слово из четного числа букв. Поменять местами его половины.

Решить задачу двумя способами
1) без цикла
2) с циклом

Добавлено через 28 минут
Мне кажется, без цикла сделать это невозможно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2010, 12:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять местами строки, без цикла. (C++):

Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки - C++
Задана матрица С(5,5). Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки. решить пример тремя...

Поменять местами максимальный элемент каждой строки матрицы с первым элементом строки - C++
Написать функцию, которая меняет местами максимальный элемент каждой строки матрицы С(5,5) с первым элементом соответствующей строки.

Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки - C++
Всем привет помогите применить указатели в программах. Кода написала, а вот указателями пользоваться не могу( 2)Задана матрица С(5,5)....

Если длина введенной строки кратна 4, первую часть строки поменять местами со второй - C++
Если длина введенной строки кратна 4, первую часть строки поменять местами со второй.

Задана матрица С(5,5). Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки - C++
Задана матрица С(5,5). Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки.

В функции, для каждой строки матрицы M[n][k], максимальный элемент поменять местами с первым элементом строки - C++
В функции, для каждой строки матрицы M, максимальный элемент поменять местами с первым элементом строки. Дополнительных массивов и матриц...

10
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
26.01.2010, 12:35 #2
с циклом:
C
1
2
3
4
5
6
7
8
9
char pocket[100];
int l=strlen(str)// длинна заданной строки.
for(i=l/2;i<l;i++)
{
pocket[counter]=str[i];
counter++;
}
for(i=0;i<counter;i++)
cout<<pocket[i];
Тока проделайте операцию дважды.
0
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
26.01.2010, 15:17 #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
#include <iostream>
using namespace std;
 
char p[] = "0123456789";
int midst;
int my_recursion(int k)
{
    if (k>=midst)
    {
        char ch = p[k];
        p[k] = p[(midst*2-k-1)]; 
        p[(midst*2-k-1)] = ch;
        return my_recursion (--k);
    }        
    else
        return 1;
}
 
int main()
{
    cout << p << endl;
    midst = (sizeof(p)-1)/2;
    int k = sizeof(p)-2;    
    my_recursion(k);    
    cout << p << endl;
    getchar();
    return 0;
}
0
BOR1K
14 / 14 / 4
Регистрация: 19.09.2009
Сообщений: 289
27.01.2010, 11:26  [ТС] #4
Тут Поменять местами его половины. А не обратить надо.
0
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
27.01.2010, 11:35 #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
26
27
28
#include <iostream>
using namespace std;
 
char p[] = "aaabbb";//"0123456789";
int midst;
int my_recursion(int k)
{
    if (k>=midst)
    {
        char ch = p[k];
        p[k] = p[k-midst]; 
        p[k-midst] = ch;
        return my_recursion (--k);
    }        
    else
        return 1;
}
 
int main()
{
    cout << p << endl;
    midst = (sizeof(p)-1)/2;
    int k = sizeof(p)-2;    
    my_recursion(k);    
    cout << p << endl;
    getchar();
    return 0;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
27.01.2010, 11:46 #6
Цитата Сообщение от BOR1K Посмотреть сообщение
Мне кажется, без цикла сделать это невозможно
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
    
#define STRLEN 128
    
int main(void){
    char str[STRLEN] = "abcdefgh", *p;
    int half;
    
    printf("Befor: %s\n", str);
    half = strlen(str) / 2;
    p = str + half;
    strncat(p, str, half);
    printf("After: %s\n", p);
    
    return 0;
}
1
BOR1K
14 / 14 / 4
Регистрация: 19.09.2009
Сообщений: 289
27.01.2010, 11:50  [ТС] #7
Гениально, Большое спасибо) Я уже 3 преподов спрашивал, никто не знает как, говорят что только через асм.
0
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
27.01.2010, 11:52 #8
Цитата Сообщение от BOR1K Посмотреть сообщение
Я уже 3 преподов спрашивал, никто не знает как, говорят что только через асм.
я у своих преподов спросил. они говорят, через асм - нереально. только через перфокарты.
0
BOR1K
14 / 14 / 4
Регистрация: 19.09.2009
Сообщений: 289
27.01.2010, 12:09  [ТС] #9
А без цикла как сделать? первый вариант не работает(

Добавлено через 13 минут
Ой, вернее с циклом)
0
Gravity
564 / 558 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
27.01.2010, 13:49 #10
Цитата Сообщение от BOR1K Посмотреть сообщение
Ой, вернее с циклом)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>
int main(void)
{
    char s[] = "aaaabbbb";
    char temp;
    int i, j;
 
    for(i = 0, j = strlen(s) / 2; s[j] != '\0'; i++, j++) {
        temp = s[i];
        s[i] = s[j];
        s[j] = temp;
    }
    printf("%s\n", s);
    return 0;
}
1
BOR1K
14 / 14 / 4
Регистрация: 19.09.2009
Сообщений: 289
27.01.2010, 14:03  [ТС] #11
Спасибо всем. Тема закрыта!
0
27.01.2010, 14:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2010, 14:03
Привет! Вот еще темы с ответами:

Поменять местами содержимое файлов - C++ без использования третьего файла - C++
Здравствуйте! Задача такая, поменять содержимое двух файлов без использования третьего файла. Эта задача была решена в теме по адресу...

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

Поменять местами значения двух переменных без использования дополнительной переменной - C++
4. Написать программу, которая меняет местами значения двух переменных без использования дополнительной переменной.

Поменять местами max и min четных строк матрицы (без функции) - C++
Сделать двумерный массив без функции на С++. Дана квадратная матрица. Размерность вводится. Поменять местами max и min четных строк. ...


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

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

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