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

Поменять местами две серии в массиве. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Начинания http://www.cyberforum.ru/cpp-beginners/thread60084.html
Хочу выучить с++ с какой программы посоветуете начать? хорошо было бы если бы дали ссылочку на книги по с++ (самоучители и т.п.) я раньше пользовался паскалем...) заранее спасибо за помощь.
C++ Задать в массиве некий элемент из другого массива. Вот у меня есть 1 массива char c; и char x="0123456789abcdefghijklmnopqrstuvwxyz" Как например задать c=элемент из x? Например мне нужен d=7; Я делал так c=x... В c=должно записаться 7, но видимо это делается по другому=) Потому что мне ввелось совсем другое значение туда... Если хорошо попросите объясню на русском языке=) http://www.cyberforum.ru/cpp-beginners/thread60075.html
C++ Как считать массив из файла
Здравствуйте!!!я новичек в с++ и не могу решить задачу :как считать координаты точек и радиус из тестового файла...там получается надо считать x y r и создать соответствующие массивы!!
Что будет выведено на экран? C++
Увидел только что такую вот интересную задачку на одном форуме #include <iostream> struct aaa { aaa(int i) { std::cout << "aaa(int i)" << std::endl; } };
C++ программа зацикливается http://www.cyberforum.ru/cpp-beginners/thread60065.html
помогите скажите пожалуйста почему моя программа зацикливается #include<stdio.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include<alloc.h> #include<string.h> #define maxlen 26 void main(){
C++ Создание цикла Вопрос такой, как создать цикл применительно к одной задачке и в целом. Задача такая. Вычислить количество полученных денег при изьятии банковского вклада через n лет вложенного под p %. --- Вообще задача изначально вычислить на 2 года только но это и так можно сделать, без задания цикла. Нужно чтобы программа вычисляла сумму за первый год, брала от нее %, складывала сумму с % и по новой... подробнее

Показать сообщение отдельно
ISergey
Maniac
Эксперт С++
1347 / 880 / 52
Регистрация: 02.01.2009
Сообщений: 2,645
Записей в блоге: 1
31.10.2009, 00:14     Поменять местами две серии в массиве.
Вроде так..
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdlib.h>
 
int find_f(int x, int *arr, int size){
    int i;
    for( i = 0; i < size; ++i)
        if(arr[i] == x)
            return i;
    return -1;
}
int find_l(int x, int *arr, int size){
    int i;
    for( i = size - 1; i >= 0; --i)
        if(arr[i] == x)
            return i;
    return -1;
}
 
int count_(int p, int *arr){
    int count = 0;
    int *_p = arr + p;
    while(*_p == *(arr + p)){
        ++count;
        ++_p;
    }
    return count;
}
 
void shift_right(int e, int pos, int *arr, int size){
    int buff, i;
    int pos_e = find_f(e, arr, size);
    int count_e = count_(pos_e, arr);
    pos += (count_(pos, arr) - 1); 
    for( i = 0; i < count_e; ++i){
        while(arr[pos - i] != e){
            buff = arr[pos_e];
            arr[pos_e] = arr[pos_e + 1];
            arr[pos_e + 1] = buff;
            ++pos_e;
        }
        pos_e = find_f(e, arr, size);
    }
}
void shift_left(int e, int pos, int *arr, int size){
    int buff, i;
    int pos_e = find_f(e, arr, size);
    int count_e = count_(pos_e, arr);
    for( i = 0; i < count_e; ++i){
        pos_e = find_l(e, arr, size);
        while(arr[pos + i] != e){
            buff = arr[pos_e];
            arr[pos_e] = arr[pos_e - 1];
            arr[pos_e - 1] = buff;
            --pos_e;
        }
    }
}
int main(){
 
    int arr[] = {1, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6};
    int size = sizeof(arr)/sizeof(arr[0]);
    int _i = 2, _j = 5, i;
    int pos_j = find_f(_j, arr, size),
        pos_i = find_f(_i, arr, size);
    
    shift_left (_j, pos_i, arr, size);
    shift_right(_i, pos_j, arr, size);
 
    for( i = 0; i < size; ++i){
        printf("%d ", arr[i]);
    }
 
    printf("\n");
    return 0;
}
Результат
i = 2, j = 5;
1 1 1 5 5 5 3 3 4 4 4 2 6 6
i = 4, i = 6;
1 1 1 2 3 3 6 6 5 5 5 4 4 4
i = 1, j = 5
5 5 5 2 3 3 4 4 4 1 1 1 6 6
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru