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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2011, 17:26   #1
tem_80
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 15
По умолчанию сдвиг массива вправо

Код:
const int M=5;
	double x[M],*p;
	int i;
	p=x;

	for (i=0;i<M;i++)
	{
		printf("[%d]=",i);
		fflush(stdin);
		scanf("%.2lf",p+i);
	}
	for(i=0;i<M;i++)
	{
		if(i==2)
		{
			p++;
		}


нужно в под 2 индексом записать новое число,а последнее число, которое было записано в массиве теряется. (т.е. сдвиг массива на один шаг вправо).
Подскажите пожалуйста как правильно написать код?

Последний раз редактировалось ACE Valery; 01.02.2011 в 23:47.
tem_80 вне форума Ответить с цитированием
Старый 31.01.2011, 22:02   #2
tem_80
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 15
По умолчанию

поставлю вопрос по другому:
Задан массив размерностью 10. Ввести число, которое необходимо записать под 5-м индексом, причем следующим образом введенное число записывается на 5-ом месте, число записанное на 5-м месте смещается на 6-е, 6-е на 7-е и т.д., впоследствии последнее число, которое было записано в массиве теряется. (т.е. сдвиг массива на один шаг вправо).
tem_80 вне форума Ответить с цитированием
Старый 31.01.2011, 22:12   #3
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Можно использовать какой-нибудь STL-контейнер. Или это по учёбе?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 31.01.2011 в 22:16.
Obey-Kun вне форума Ответить с цитированием
Старый 31.01.2011, 22:16   #4
tem_80
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 15
По умолчанию

ага, по учебе, надо через указатели, но у меня нифига не получается...
tem_80 вне форума Ответить с цитированием
Старый 01.02.2011, 14:48   #5
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
#include "stdio.h";

int main()
{
	const int M = 10;
	float *p = new float[M], elem;
	int ind, i;

	for(i = 0; i < M; i++)
	{
		printf("[%d]=",i);
		fflush(stdin);
		scanf("%f", &p[i]);
	}

	printf("Index for new element = ");
	scanf("%d", &ind);

	printf("New element = ");
	scanf("%f", &elem);

	for(i = M - 2; i >= ind; i--)
		p[i + 1] = p[i];

	p[ind] = elem;
	
	for(i = 0; i < M; i++)
		printf("[%d] = %f\n", i, p[i]);
	
	getchar();getchar();

	return 0;
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 01.02.2011, 15:21   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
#include <stdio.h>

int main(void){
    const int size = 10;
    int arr[size], i, new_elem = -1;
    for(i=0; i<size; i++){
              arr[i] = size - i;
              printf("%d ", arr[i]);
    }
    printf("\n");
    
    while(new_elem != 0){                                      
       printf("->");
       scanf("%d", &new_elem);
       system("cls");
       for(i = size - 1; i > 5; i--) arr[i] = arr[i-1];
       arr[5] = new_elem;   
       for(i=0; i<size; i++) printf("%d ", arr[i]);
       printf("\n");
    }
    getch();
    return 0;
}
NiCola999 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
">>" :( сдвиг вправо Teksa Общие вопросы C/C++ 2 20.07.2010 10:40
Сдвиг массива. Джед Общие вопросы C/C++ 19 10.06.2009 16:44
циклический сдвиг массива goacher Общие вопросы C/C++ 4 28.05.2008 20:11
циклический сдвиг массива goacher Паскаль, Turbo Pascal, PascalABC.NET 4 27.05.2008 22:26