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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.73
necto
5 / 4 / 1
Регистрация: 27.01.2009
Сообщений: 30
#1

Сдвиг элементов массива в лево. - C++

31.01.2009, 14:15. Просмотров 3951. Ответов 2
Метки нет (Все метки)

У меня логическая ошибка в этом алгоритме. Я не могу найти ее. Как работает эта часть программы?
C++
1
2
3
4
5
6
t=A[n];
for(i=n;i>0;i--)
{    A[i]=t;
      t=A[i-1];
      A[i-1]=A[i];
}
тест: исходный массив-1 2 3 4 5;
полученный массив- 2 2 3 4 5
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2009, 14:15     Сдвиг элементов массива в лево.
Посмотрите здесь:

C++ Циклический сдвиг элементов массива
Циклический сдвиг элементов массива C++
Циклический сдвиг элементов массива C++
C++ Выполнить кольцевой сдвиг элементов массива
C++ циклический сдвиг элементов одномерного массива
C++ Циклический сдвиг массива на k элементов
C++ Циклический сдвиг элементов массива
Сдвиг элементов массива C++
C++ Циклический сдвиг элементов массива
C++ Сдвиг двумерного массива на n элементов
C++ Сдвиг элементов массива вправо
C++ 7. Осуществить сдвиг элементов массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт С++
2222 / 737 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
31.01.2009, 14:26     Сдвиг элементов массива в лево. #2
Код
for(i=0;i<n-1;i++) A[i]=A[i+1];
Если сдвиг циклический, предварительно нужно запомнить первый элемент, и присвоить это значение последнему после цикла.
necto
5 / 4 / 1
Регистрация: 27.01.2009
Сообщений: 30
31.01.2009, 15:21  [ТС]     Сдвиг элементов массива в лево. #3
Полученная программа маходит максиум, считает сумму элементов, находящихся между первыми двумя положительными элементами и если в массиве попадается 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
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
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
int main()
{   clrscr();
    int max,w,*A,k,l,d,h,f,i,tt,j,S=0,p,n;
    cout<<"vv-te kol-vo";
    cin>>n;
    A=new int[n];
    cout<<"vvedite elementy->";
    for(i=0;i<n;i++)
    {
            cin>>A[i];
    }
    for(i=0;i<n;i++)
    cout<<setw(6)<<A[i];
    cout<<endl;
    w=0;
    tt=A[0];
 
    do
    for(i=0;i<n;i++)
    if (A[i]==0)
    {       w=2;
        p=i;
        for(i=p;i<n-1;i++)
        A[i]=A[i+1];
    }
    else if(A[i]!=0) w=2;
    while (w==0);
 
    max=0;
    l=0;
    f=0;
 
    for(i=0;i<n;i++)
    {
        if(A[i]>A[max]) max=i;
    }
    do
    {   for(i=0;i<n;i++)
        if ((A[i]>0)&&(l==0))
        {
            k=i+1;
            l=2;
        for(j=k;j<n;j++)
        if ((l==2)&&(A[j]>0)&&(f==0))
            {
                h=j;
                f=2;
    }   }   }
    while ((f==0)&&(l==0));
    for(i=k;i<h;i++)
    S+=A[i];
        h=0;
        A[n-1]=h;
        for(i=0;i<n;i++)
        cout<<setw(4)<<A[i];
        cout<<endl;
        cout<<" Max="<<setw(4)<<A[max]<<endl;
        cout<<" S="<<setw(5)<<S;
    getch();
    return (0);}
Yandex
Объявления
31.01.2009, 15:21     Сдвиг элементов массива в лево.
Ответ Создать тему
Опции темы

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