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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2010, 21:17   #1
Kotik Wasil
Пользователь
 
Регистрация: 28.11.2010
Сообщений: 11
Вопрос Целочисленный массив (язык Pelles C)

Задан целочисленный массив размера N. Поменять местами серию с минимальной длиной с последней серией в массиве. Если минимальных серий несколько, то только первую из них.
NOY
Kotik Wasil вне форума Ответить с цитированием
Старый 17.01.2011, 21:10   #2
Kotik Wasil
Пользователь
 
Регистрация: 28.11.2010
Сообщений: 11
Печаль

/*********************************** *********************************** ******
меняет местами первую и последнюю серии в массиве. РАБОТАЕТ
*********************************** *********************************** ******/

#include <stdio.h>

int main(int argc, char *argv[])
{
unsigned int n;
printf("Enter size of array: "); scanf("%u",&n);
int arr[n];
for (int i = 0; i < n; i++) {
printf("Enter arr[%u]: ", i);
scanf(" %d",&arr[i]);
}

unsigned int serie1l = 1;

//ТУТ ВРОДЕ НУЖНО ВСТАВИТЬ ТО КАК ОН ОПРЕДЕЛЯЕТ НАИМЕНЬШУЮ СЕССИЮ

// определяем длину первой серии
unsigned int i = 1;
while (i < n) {
if (arr[i] == arr[0]) {
serie1l++;
} else {
break;
}
i++;
}

// индекс начала последней серии (длина серии - длина массива - индекс начала)
unsigned int serie2i = n-1;
i = n-2;
while (i >=0) {
if (arr[i] == arr[n-1]) {
serie2i--;
} else {
break;
}
i--;
}
printf("Length of first serie = %u, index of last serie = %u \n", serie1l, serie2i);

// поменять местами серии (возможно разной длины)
// длина массива меняться не должна
// вычисляем минимальную из длин серий чтобы исключить потерю данных
unsigned int minL = (serie1l > (n - serie2i))? n - serie2i : serie1l;
for (int j=0; j < (minL); j++) {
int tmp = arr[j + serie2i];
arr[j + serie2i] = arr[j];
arr[j] = tmp;
}

for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");


return 0;
}
NOY
Kotik Wasil вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Целочисленная матрица (язык Pelles C) Kotik Wasil Помощь студентам 0 12.12.2010 20:42
Ряды (язык Pelles C) Kotik Wasil Помощь студентам 2 07.12.2010 21:02
Язык Pelles C Массивы Kotik Wasil Помощь студентам 0 28.11.2010 21:37