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

Циклический сдвиг массива влево - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как удалить символ в строке? http://www.cyberforum.ru/cpp-beginners/thread445805.html
Можно ли просто присвоить ему пустое значение ?
C++ Использование родовой функции. Здравствуйте, если кто может решить, прошу помогите. Задача 1: В одномерном массиве, состоящем из n вещественных элементов, использую родовые функции, вычислить сумму элементов массива с нечетными номерами; Задача 2: Создать класс-шаблон, содержащий поля для хранения одномерного массива и количества элементов в массиве. Описать методы для инициализации и вывода элементов массива на экран, а... http://www.cyberforum.ru/cpp-beginners/thread445803.html
Дано натуральное число. Получить строковое представление этого числа C++
Дано натуральное число. Получить строковое представление этого числа в виде последовательности цифр и пробелов, разделяющих группы по три цифры, начиная справа. Например, если исходное число равно 1753967, то результирующей должна быть строка 1 753 967. PS: Вопорос в том что если делать строку нужно двигать элементы, а как это сделать не имею понятия
почему не работает? C++
#include "stdafx.h" #include<iostream> struct item; item *Insert(item *tree); item *InOrder(item *tree); struct item { int data;
C++ Найти объем тела и площадь полной поверхности http://www.cyberforum.ru/cpp-beginners/thread445792.html
Тело имеет форму параллелепипеда с высотой h. Прямоугольник в основе имеет диагональ d. Известно, что диагонали прямоугольника пересекаются под углом. Найти объем тела V и площадь полной поверхности S.
C++ Перевести с Паскаля на С++ Program Proc; procedure MinMax(var A,B:real); var temp:real; begin if (A>B)then begin temp:=A; A:=B; B:=Temp; подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.02.2012, 00:34     Циклический сдвиг массива влево
Цитата Сообщение от ШКІПЕР Посмотреть сообщение
Куда делась последняя 5-ка ? Стала на место максимума ?
Переместилась на 2 позиции влево.

crewww, на первый взгляд, наверное жутковато...
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
29
30
31
32
33
34
#include <stdio.h>
#include <string.h>
 
#define SIZE(arr) ( sizeof(arr) / sizeof(*arr) )
 
int * first_max(const int * arr, const size_t size){
    return ( size < 2 ) ? (int*)arr : ( *arr < *(arr + size - 1) ) ? first_max(arr + 1, size - 1) : first_max(arr, size - 1);
}
 
void rotate_left(int * arr, const size_t size){
    int tmp = *arr;
    
    memmove(arr, arr + 1, sizeof(int) * (size - 1));
    arr[size - 1] = tmp;
}
 
void dump(const int * arr, size_t size){
    while ( size-- )
        printf("%d%c", *arr++, ( size ) ? ' ' : '\n');
}
 
int main(void){
    int arr[] = { 3, 4, 5, 3, 4, 5 };
    size_t steps;
    
    printf("Before: ");
    dump(arr, SIZE(arr));
    for ( steps = first_max(arr, SIZE(arr)) - arr; steps; --steps )
        rotate_left(arr, SIZE(arr));
    printf("After:  ");
    dump(arr, SIZE(arr));
    
    return 0;
}
 
Текущее время: 08:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru