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

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

Войти
Регистрация
Восстановить пароль
 
 
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
#1

Поменять начало и конец - C++

21.01.2014, 19:43. Просмотров 713. Ответов 21
Метки нет (Все метки)

дан массив из m+n элементов. начало массива это a[0]..a[m], конец массива это a[m+1]..a[m+n]. написать функцию, котороая меняет начало и конец местами
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2014, 19:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять начало и конец (C++):

Змейка. Начало и конец. - C++
Решил написать Змейку с нуля. Не хотелось бы никуда подглядывать и копировать чужие идеи - хочется создать свое "колесо" =) Решил все это...

начало и конец подпоследовательности - C++
Дано натуральные число n и целые числа а1, а2 ... аn. Для последовательности а1, а2 ... аn рассмотреть подпоследовательности членов, что...

Введите начало и конец отрезка - C++
Здравствуйте! Возникла проблема! В int program мне нужно проверить начало и конец отрезка на то, что они неотрицательные и не являются...

Добавление числа в начало и конец - C++
Дано число n Добавить по единице вначале и в конце записи числа n. как добавить единицу в конце - знаю, а как вначале? подскажите,...

начало и конец цикла в коде. - C++
Вот программа по определению магического квадрата из матрицы, заданной в txt файле. #include "stdafx.h" #include <iostream> #include...

Четные в начало массива, нечетные - в конец - C++
четные в начало массива выводит, а вот нечетные не хочет.. пишет вместо них какие-то тысячные числа, которых в исходном массиве нет....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
21.01.2014, 23:18 #16
Цитата Сообщение от ffynjy Посмотреть сообщение
программа вроде работает, может попроще как-то можно?
попроще нет
у тебя как раз самая простая реализация
сдвигаешь массив m раз
эффективней да
смотри тему которую я тебе указал
0
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
21.01.2014, 23:25  [ТС] #17
ValeryS, только у меня при одинаковых значениях m и n не правильно работает, как можно исправить?
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
21.01.2014, 23:36 #18
Цитата Сообщение от ffynjy Посмотреть сообщение
while (k <= m)
вот у тебя ошибка
даже при m равном 0 у тебя один сдвиг произойдет
а не должен
C++
1
while (k < m)
0
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
21.01.2014, 23:40  [ТС] #19
ValeryS, спасибо, но теперь ошибка при m>n
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
21.01.2014, 23:49 #20
и циклический сдвиг на один элемент по другому можно написать
Цитата Сообщение от ffynjy Посмотреть сообщение
for (int i = 0; i < size; i++)
{
int tmp = a[i];
a[i] = a[size - 1 ];
a[size - 1] = tmp;
}
C++
1
2
3
4
int tmp=a[size-1];// сохраняем последний элемент
for(int i=0;i<size-1;i++) 
 a[i+1]=a[i];// в цикле переносим значения в следующий элемент
a[0]=tmp;// в первый запихиваем значения последнего
Добавлено через 5 минут
Цитата Сообщение от ffynjy Посмотреть сообщение
ValeryS, спасибо, но теперь ошибка при m>n
а так и будет
представь что тебе нужно сдвинуть массив из двух элементов на 20
здесь нужно предусмотреть
если m<n то сдвиг влево иначе сдвиг вправо на m-n
0
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
22.01.2014, 00:07  [ТС] #21
ValeryS,
я исправил while (k < m)на while (k < n) теперь вроде работает нормально
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
22.01.2014, 07:25 #22
Цитата Сообщение от ValeryS Посмотреть сообщение
int tmp=a[size-1];// сохраняем последний элемент
for(int i=0;i<size-1;i++)
*a[i+1]=a[i];// в цикле переносим значения в следующий элемент
a[0]=tmp;// в первый запихиваем значения последнего
погнал ведь я
этак все заполнится первым значением
с конца ведь надо
C++
1
2
3
4
int tmp=a[size-1];// сохраняем последний элемент
for(int i=size-2;i>-1;i--) 
*a[i+1]=a[i];// в цикле переносим значения в следующий элемент
a[0]=tmp;// в первый запихиваем значения последнего
короче спать иногда надо

Добавлено через 2 минуты
Цитата Сообщение от ffynjy Посмотреть сообщение
я исправил while (k < m)на while (k < n) теперь вроде работает нормально
мне сейчас трудно проанализировать твою программу, не выспался да и на работу пора
но в качестве теории скажу сдвиг влево на n, равносилен сдвигу вправо на m
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2014, 07:25
Привет! Вот еще темы с ответами:

Вставить символы в начало и конец строки - C++
Дана строка символов. Сформируйте новую строку, начинающуюся с символа а (вводится с клавиатуры) и заканчивающуюся символом b (вводится с...

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

Не используя дополнительных массивов переставить начало и конец массива - C++
Помогите решыть задачу: Дан масив целых чисел x....x рассматриваемый как соединение двух его отрезков : начала x....x длины m и конца...

Каков набор кода означающий начало и конец файла - C++
Хм... есть парочка вопросов, правда не знаю в данную тематику или нет надо сие писать но т.к. это важно для моего познания СИ, создаю тему...


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

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

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