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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
TXLib.h
 Аватар для TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
#1

rotate left - C++

06.02.2011, 16:37. Просмотров 2312. Ответов 4
Метки нет (Все метки)

Подскажите, плз, а то туплю - как сделать так, чтобы значения всех ячеек массива сдвинулись влево, а самая 1-ая ячейка(0-ая) стала последней?

К примеру, с такой последовательностью:

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
#include "TXLib.h"
 
int main ()
 
{
    txCreateWindow (500, 500);
const int SIZE = 30;
    int x [SIZE] = {1};
    int i = 1;
    while (i < SIZE)
        {
            assert (0 <= i && i < SIZE);
            assert (0 <= i - 1 && i - 1 < SIZE); 
            x [i] = x[i - 1] + 1;
            
           if (x [i] > 3)
           {
            x[i] = 1;
           }
           
           i++;
           
        }
        
     i = 0;
     while (i < 30)   
        {
            printf ("%d \n", x [i]);
            
            i++;
        } 
        
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2011, 16:37     rotate left
Посмотрите здесь:

setiosflags(ios::left) C++
Пободные функции:Left$, Mid$, Right$, Hex, Val, RGB C++
C++ setiosflags(ios::left)
C++ Ошибка structure required on left side of . or .*
C++ error C2106: '=' : left operand must be l-value выдаёт ошибку на сортировку
C++ Error C2106: '=' : left operand must be l-value
Lvalue required as left operand of assignment C++
C++ [Error] lvalue required as left operand of assignment
Ошибка: lvalue required as left operand of assignment C++
C++ Error: lvalue required as left operand of assignment|
Error C2106: '=' : left operand must be l-value C++
Выравнивание строки s слева к длине m. Left (s,m) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
613 / 457 / 31
Регистрация: 28.01.2011
Сообщений: 605
06.02.2011, 16:51     rotate left #2
Есть хорошая функция std::rotate, подумайте о ней.

C++
1
2
3
int a[10] = {1,2,3,4,5,6,7,8,9,10};
 
std::rotate(a,a + 1,a + 10);
igorrr37
 Аватар для igorrr37
1600 / 1228 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
06.02.2011, 17:33     rotate left #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
#include<iostream>
#include<cassert>
#include<cstdio>
#include<algorithm>
using namespace std;
 
int main(){
    const int SIZE = 30;
    int x [SIZE] = {1};
    int i = 1;
    while (i < SIZE){
            assert (0 <= i && i < SIZE);
            assert (0 <= i - 1 && i - 1 < SIZE);
            x [i] = x[i - 1] + 1;
            if (x [i] > 3){
                x[i] = 1;
            }
            i++;
    }
    i = 0;
    rotate(x, x+1, x+SIZE);
    while (i < 30){
        printf ("%d \n", x [i]);
        i++;
    }
}
TXLib.h
 Аватар для TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
11.02.2011, 15:24  [ТС]     rotate left #4
И всё-таки я сделал по-своему.

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
#include "TXLib.h"
 
int main()
{
    txCreateWindow (500, 500);
    const int SIZE = 20;
    int x [SIZE] = {};
    int i = 0;
    int f = 0;
    int l = SIZE - 1;
    
    while (i < SIZE)
    {
          x [i] = rand () % 100 * 100 + i;
          i++;
    }
 
    while (i < SIZE)
    {
          x [i] = x [i - 1];
          x [f] = x [l];
          i++;
    }
    i = 0;
    
    while (i < SIZE)
    {
          printf ("x [%d] = %d \n", i, x [i]);
          i++;
    }
}
Получилась, конечно, полная лажа. Подскажите нубу, почему не происходит сдвиг на моей собственной программе. Спс.
igorrr37
 Аватар для igorrr37
1600 / 1228 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
11.02.2011, 16:19     rotate left #5
после первого while i становится =20
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
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
 
int main()
{
    //txCreateWindow (500, 500);
    const int SIZE = 20;
    int x [SIZE];
    int i = 0;
    int f = 0;
    int l = SIZE - 1;
    while (i < SIZE){
          x [i] = rand () % 10 + i;
          printf ("x [%d] = %d \n", i, x [i]);
          i++;
    }
    f=x[l];
    i=l;
    while (i>0){
          x [i] = x [i - 1];
          i--;
    }
    x[0]=f;
    i = 0;
    while (i < SIZE){
          printf ("\nx [%d] = %d ", i, x [i]);
          i++;
    }
}
Yandex
Объявления
11.02.2011, 16:19     rotate left
Ответ Создать тему
Опции темы

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