Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2013, 16:35   #1
Егор Прус
 
Регистрация: 30.10.2013
Сообщений: 4
По умолчанию Почему прога не работает?

дан массив из К чисел. нужно сдвинуть элементы массива на n позиций в лево
Код:
#include<iostream.h>
int main()
{
	int i,c,n,k,t;
	int a[10];
	cout<<"Vvedite kolichestvo elementov v massive: ";
	cin>>k;
	for(i=0;i<k;i++)
	{
		cout<<"Vvedite a["<<i<<"]: ";
		cin>>a[i];
	}
    cout<<"Massiv a: ";
	for(i=0;i<k;i++)
	cout<<a[i]<<" ";
	cout<<endl;
    cout<<"Vvedite chislo poziciy sdviga vlevo: ";
    cin>>n;
	for(i=k-n;i<k;i++)
	{
		t=a[k+1];
		for(i=0;i<k-n;i++);
		{
			a[i]=a[i+n];
		}
		a[0]=t;
	}
	for(i=0;i<k;i++)
	cout<<a[i]<<" ";
	cout<<endl;
	return 0;
}

Последний раз редактировалось Stilet; 30.10.2013 в 16:55.
Егор Прус вне форума Ответить с цитированием
Старый 30.10.2013, 17:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я не особо вникал в твой код, мне кажется сама задумка с двумя циклами не годится.
попробуй проанализировать вот такие темы:
http://www.programmersforum.ru/showthread.php?t=176204
http://www.programmersforum.ru/showthread.php?t=83934
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2013, 17:32   #3
Егор Прус
 
Регистрация: 30.10.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я не особо вникал в твой код, мне кажется сама задумка с двумя циклами не годится.
я преподу показал это:
for(i=0;i<k-n;i++);
{
t=a[k-1];
a[i]=a[i+n];
a[0]=t;
}
он сказал вынести t=a[k-1]; и a[0]=t; в другой цикл в нутри которого a[i]=a[i+n];
Егор Прус вне форума Ответить с цитированием
Старый 30.10.2013, 20:24   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цикл, где после for() стоит ; работать не будет
waleri вне форума Ответить с цитированием
Старый 30.10.2013, 20:55   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Твой препод, курит то, что и я с ГруЗином.
С какогобоку
for(i=0;i<k-n;i++);Минус n? И почему не опренделён тип переменной? В общем,чел прикалывается. Или ничерта не соображает.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 01.11.2013, 21:27   #6
greentree
 
Регистрация: 07.07.2013
Сообщений: 7
По умолчанию

сдвинуть это как? по монитору?
greentree вне форума Ответить с цитированием
Старый 04.11.2013, 14:56   #7
Егор Прус
 
Регистрация: 30.10.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от greentree Посмотреть сообщение
сдвинуть это как? по монитору?
было 1 2 3 4 5 сдвинули на 3 позиции влево
получилось 4 5 1 2 3
Егор Прус вне форума Ответить с цитированием
Старый 04.11.2013, 15:20   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не хочешь взять за основу вот из этой темки?: http://www.programmersforum.ru/showp...6&postcount=34
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2013, 15:50   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Stilet, копировать слишком "читорно"
Код:
#include <iostream>
using namespace std;

int
nod(int a, int b)
{
    if (!b)
        return 0;
    if (a < b)
        return nod(b, a);
    int m = a % b;
    if (!m)
        return b;
    else
        return nod(b, m);
}

int
main()
{
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int n = sizeof(a) / sizeof(*a);
    int k;
    cin >> k;
    for (int i = 0; i < n; ++i)
        cout << a[i] << " ";
    cout << endl;
    for (int p = 0; p < nod(n, k); ++p) {
        int i = p;
        int tmp1 = a[i], tmp2;
        do {
            int j = (i + n - k) % n;
            tmp2 = a[j];
            a[j] = tmp1;
            tmp1 = tmp2;
            i = j;
        } while (i != p);
    }
    for (int i = 0; i < n; ++i)
        cout << a[i] << " ";
    cout << endl;
}
Вроде работает
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 04.11.2013 в 16:02.
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C. почему не работает прога? Miles Помощь студентам 3 06.11.2011 15:31
почему не работает прога? vesdesvet Паскаль, Turbo Pascal, PascalABC.NET 6 28.06.2011 20:54
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
Почему на разных компах прога работает иначе? Davlet M Помощь студентам 2 20.02.2011 17:31