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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.58
BoMa
0 / 0 / 0
Регистрация: 20.05.2011
Сообщений: 29
06.10.2011, 18:32     Циклический сдвиг массива влево #1
Дан массив y1, ... , y20.
Сформировать массив Z1, ... , Z20, элементы которого соответствуют элементам yi , сдвинутым на одну позицию влево, т.е.
Z1 = y2 ; Z2 = y3 ; ... ; Z19 = y20 ; Z20 = y1. Умножить все элементы Zi на 2.


Использовать вывод из файла и указатели

Добавлено через 12 минут
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
#include <iostream>
#include <conio.h>
#include <iomanip>
#define n 20
using namespace std;
 
 
 
void main()
    
{                                           //const int n=5;
    int x;
    setlocale(LC_ALL,"Russian");    
    do 
    { 
        cout<<"Введите Размер Массива У от 0 до 20"<<endl;  
        cin>>x;
    }
            
    while((x<0)||(x>=n));
    
    int y[n]; 
    cout<<" Массив У:"<<endl;
    for (int i=0; i<x; i++)
    { cout<<" Y ["<<i<<"]";
    cin>>y[i];                              
    }
    cout <<" Массив Y Индексы:"<<" ";   
    for (int i=0; i<x; i++)
{
    cout<<setfill(' ')<<setw(2)<<i<<" ";
}
cout <<endl<<" Массив Y Элементы:";
for (int i=0; i<x; i++){
cout<<setfill(' ')<<setw(2)<<y[i]<<" ";
}
    int z[n];
    for (int i=0, j = i + 1; i<x; i++,j++){
    if (j>=x)
        j=0;
    z[i]=y[j];
    z[i]=z[i]*2;
    }                               
cout<<endl<<" Массив Z Индексы: "<<" "; 
for (int i=0; i<x; i++)
{
cout<<setfill(' ')<<setw(2)<<i<<" ";
}
cout<<endl;
cout<<" Массив Z Элементы:"<<" ";
for ( int i=0; i<x; i++)
{
cout<<setfill(' ')<<setw(2)<<z[i]<<" ";
}
 
cout<<endl<<" Нажмите любую клавишу для выхода "<<endl;
    _getch();
}
Добавлено через 30 секунд
это я решил без файла и указателя, как их использовать народ

 Комментарий модератора 
Используйте теги форматирования кода.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hijacker7
19 / 19 / 1
Регистрация: 06.10.2011
Сообщений: 53
06.10.2011, 18:50     Циклический сдвиг массива влево #2
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
#include <iostream>
using namespace std;
 
int main() {
        const int size=20;
        int arrY[size];
        int arrZ[size];
 
        // Заполняем массив Y
        for(int i=0; i<size; i++) {
                arrY[i]=i+1;
                cout<<arrY[i]<<endl;
        }
        // Заполняем массив Z элементами массива Y, сдвинутыми на 1 влево и добавляем 2 к каждому элементу
        for(int i=1; i<size; i++)
                arrZ[i-1]=arrY[i]+2;
        arrZ[size-1]=arrY[0]+2;
        // Выводим массив Z
        for(int i=0; i<size; i++)
                cout<<arrZ[i]<<endl;
 
        return 0;
 
}
BoMa
0 / 0 / 0
Регистрация: 20.05.2011
Сообщений: 29
06.10.2011, 19:01  [ТС]     Циклический сдвиг массива влево #3
а где файл и указатель?

Добавлено через 5 минут
Липпмана прочитал раздел о ФАЙЛАХ все равно не чо не выяснил толкового
hijacker7
19 / 19 / 1
Регистрация: 06.10.2011
Сообщений: 53
06.10.2011, 19:12     Циклический сдвиг массива влево #4
Цитата Сообщение от BoMa Посмотреть сообщение
а где файл и указатель?

Добавлено через 5 минут
Липпмана прочитал раздел о ФАЙЛАХ все равно не чо не выяснил толкового
Извиняюсь. Невнимательно сообщение прочитал

Вот тоже самое с чтением из файла и использованием указателей:

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main() {
        const int size=20;
        int arrY[size];
        int arrZ[size];
 
        ifstream ifs("input.txt");
        int i=0;
 
        // Заполняем массив из файла
        while(i < size) {
                if(ifs)
                        ifs >> arrY[i];
                else
                        arrY[i]=0;
                i++;
        }
        ifs.close();
 
        // Заполняем массив Z элементами массива Y, сдвинутыми на 1 влево, и добавляем 2 к каждому элементу
        int *pY = arrY+1;
        int *pZ = arrZ;
        i=1;
        while(i < size) {
                *pZ++=(*pY++)+2;
                i++;
        }
        *pZ=*arrY+2;
 
        // Выводим массив Z
        for(int i=0; i<size; i++)
                cout<<arrZ[i]<<endl;
 
        return 0;
}
Добавлено через 2 минуты
В текстовом файле каждый элемент массива (число) располагается на новой строчке
BoMa
0 / 0 / 0
Регистрация: 20.05.2011
Сообщений: 29
06.10.2011, 19:16  [ТС]     Циклический сдвиг массива влево #5
а сам текстовый файл создать в том же каталоге где и программа?
hijacker7
19 / 19 / 1
Регистрация: 06.10.2011
Сообщений: 53
06.10.2011, 19:18     Циклический сдвиг массива влево #6
Цитата Сообщение от BoMa Посмотреть сообщение
а сам текстовый файл создать в том же каталоге где и программа?
Да, и назвать input.txt. Если создавать в другом каталоге, то нужно прописывать полный путь к нему.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2011, 19:23     Циклический сдвиг массива влево
Еще ссылки по теме:

C++ Одномерный массив. Циклический сдвиг влево
C++ Осуществить циклический сдвиг элементов массива влево на одну позицию
Одномерные массивы (циклический сдвиг всех элементов массива на одну позицию влево) C++

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

Или воспользуйтесь поиском по форуму:
BoMa
0 / 0 / 0
Регистрация: 20.05.2011
Сообщений: 29
06.10.2011, 19:23  [ТС]     Циклический сдвиг массива влево #7
спасибо большее ....все запустилось ща токо исправлю + на * и все круто спасибос)))
Yandex
Объявления
06.10.2011, 19:23     Циклический сдвиг массива влево
Ответ Создать тему
Опции темы

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