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

Указатели: сдвинуть элементы циклически на 1 позицию влево - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Sasha1994
0 / 0 / 0
Регистрация: 07.09.2012
Сообщений: 15
04.10.2012, 23:00     Указатели: сдвинуть элементы циклически на 1 позицию влево #1
Условие задачи: Заполните случайным образом одномерный массив из n элементов и здвиньте элементы циклически на 1 позицию влево. (Например для n=8)

Мой код:

Вариант без указателей (работает нормально):

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<stdio.h>
#include<conio.h>
#include <iostream>
 
using namespace std;
 
int main(){
int n,i;
 
cout<<"\n\tNachalnaya matriza";
 
cout<<"\n\t";
int mas[8];
 
for(i=0;i<8;i++)
  {
      mas[i]=rand()%100;
      cout<<mas[i];cout<<" ";
  }
 
 
cout<<"\n\n\tNoviy masiv\n\n\t";
 
for(i=0;i<7;i++)// oskl'ki mi zsunuli elementi masivu na 1 vlivo, znachit jogo rozmir zmenshivsya na 1  
  {
    mas[i]=mas[i+1];// drugij element stae pershim i tak dali
    cout<<mas[i];cout<<" ";
  }
 
cout<<"\n";
cout<<"\n\n\tnazhmit bud-yaku klavishu dlya vihodu z programi";
getch();
}
Вариант с указателем(не работает):

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<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
int main() {
 
int mas[8];
int* pMas;
int i,n;
pMas = &mas[0];
 
cout<<"\n\tNachalnaya matriza\n";
cout<<"\n\t";
 
for(i=0;i<8;i++)
  {
  pMas+=i;
  *pMas=rand()%100;
  cout<<*pMas;cout<<" ";
  }
 
cout<<"\n\n\tNoviy masiv\n\n\t";
 
for(i=1;i<8;i++)
  {
  pMas+=i;
  cout<<*pMas;cout<<" ";
  }
cout<<"\n";
system("pause");
}
В новой матрице числа совсем не такие, как в начяльной матрице
Что я делаю неправильно в варианте с указателем? Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2012, 23:00     Указатели: сдвинуть элементы циклически на 1 позицию влево
Посмотрите здесь:

Сдвинуть все элементы последовательности циклически на k позиций влево C++
Сдвинуть циклически элементы одномерного массива на k позиций влево C++
Все элементы массива X(30) циклически сдвинуть на n позиций влево C++
Одномерный массив. Сдвинуть элементы циклически на n позиций влево C++
Элементы линейного массива сдвинуть циклически на две позиции влево C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2012, 00:24     Указатели: сдвинуть элементы циклически на 1 позицию влево
Еще ссылки по теме:

C++ Сформировать массив десятичных цифр числа А. Элементы массива цифр сдвинуть циклически влево на 1 позицию
Сдвинуть элементы массива циклически на M влево, перевернуть нечетные строки и посчитать простые числа C++
Сдвинуть элементы на одну позицию вправо\влево C++

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

Или воспользуйтесь поиском по форуму:
Sasha1994
0 / 0 / 0
Регистрация: 07.09.2012
Сообщений: 15
05.10.2012, 00:24  [ТС]     Указатели: сдвинуть элементы циклически на 1 позицию влево #21
наверное остановлюсь на этом, так как я на 1 курсе и только начал учить программирование, мне нужно что-то простенькое,что бы мог разобраться + что бы поверили что я делал
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
#include<iostream>
using namespace std;
 
int main()
{
 
    int mas[8];
    int* pMas = mas;
    int i;
 
    cout<<"\n\tNachalnaya matriza\n";
    cout<<"\n\t";
    // Создаём массив
    for(i=0; i < 8; ++i)
    {
        pMas[i] = rand() % 100;
        cout << pMas[i] << " ";
    }
    // Циклически сдвигаем на 1
    cout<<"\n\n\tNoviy masiv\n\n\t";
    int first = pMas[0];
    for(i = 0; i < 7; ++i) // индекс до 7, а не 8, иначе выйдем за границу массива
        pMas[i] = pMas[i + 1];
    pMas[7] = first;
    for (i = 0; i < 8; ++i)
        cout << pMas[i] << " ";
 
    cout<<"\n";
    system("pause");
}
п.с. К концу октября нужно сдать 8 лабораторных(это уже №5), а мы еще даже массивы и указатели не учили. Тупая система образования в Украине(ну или препод неочень).
п.п.с Всем спс что помогли
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
05.10.2012, 00:24     Указатели: сдвинуть элементы циклически на 1 позицию влево
Ответ Создать тему
Опции темы

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